- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于Service Fabric Reliable Actors Introduction在 Microsoft 提供的文档中,它指出 Actor 不应该“通过发出 I/O 操作来阻止具有不可预测延迟的调用者。”
我有点不确定如何解释这一点。
这是否意味着只要请求的延迟是可预测的,I/O 就可以?
或
这是否意味着最佳实践是 Actor 不应在 Service Fabric 之外进行任何 I/O 操作?例如:某些 REST API 或写入某种数据库、数据湖或事件中心。
最佳答案
从技术上讲,两者兼而有之。
由于 Actor 是单线程的,因此 Actor 中只能同时发生单个操作。
SF Actor 使用 Ask 方法,每次调用都期望得到答复,调用者将调用电话并一直等待答复,如果 Actor 收到太多来自客户端的调用,并且该 Actor 过于依赖外部组件,那么处理每个调用将花费太长时间,并且所有其他客户端调用将被排队,并且可能在某个时刻失败,因为它们将等待太长时间并超时。
对于使用 Tell 方法的 actor(例如 Akka)来说,这不会是一个大问题,因为它不会等待答案,它只是将消息发送到邮箱并接收包含答案的消息(如果适用) 。但请求和响应之间的延迟仍然是一个问题,因为单个参与者有太多消息等待处理。另一方面,如果一个命令失败,并且在您知道第一个命令的答案之前会触发 2 或 3 个事件序列(不是此处的范围,但您将这种情况与下面的示例联系起来),则可能会增加复杂性。
关于第二点,Actor的主要思想是自包含,如果它过于依赖外部依赖,也许你应该重新考虑设计并评估Actor是否实际上是解决问题的最佳设计。
自包含的 Actor 是可扩展的,它们不依赖外部状态管理器来管理自己的状态,它们不会依赖其他 Actor 来完成任务,它们可以相互独立地扩展。
示例:
Actor1(ActorTypeA)依赖Actor2(ActorTypeB)来执行操作。
为了使其更加人性化,我们可以这样说:
每当客户端(用户)与他的结帐购物车交互、添加或删除产品时,它都会向 Actor1 发送添加和删除命令来管理他自己的购物车。在这种情况下,依赖关系是一对一的,当另一个用户导航到该网站时,将为他创建另一个参与者来管理他自己的购物车。在这两种情况下,他们都会有自己的 Actor 。
现在假设,每当将产品放入购物车时,都会保留库存以避免重复销售同一产品。
在这种情况下,两个 Actor 都会尝试在 Actor2 中预订产品,并且由于 Actor 的单线程特性,只有第一个 Actor 会成功,第二个 Actor 将等待第一个 Actor 完成,如果产品没有库存则失败不再了。此外,第二个用户将无法向其购物车添加或删除任何产品,因为第一个操作正在等待完成。现在将这些数字增加数千,看看问题如何快速发展并且可扩展性失败。
这只是一个小而简单的例子,所以,第二点不仅仅适用于外部依赖,它也适用于内部依赖,Actor 外部的每一个操作都会降低它的可扩展性。
也就是说,您应该尽可能避免外部(参与者之外)依赖项,但如果需要,这并不是犯罪,但是当外部依赖项限制其独立扩展时,您将降低可扩展性。
This other SO question我的回答您可能也会感兴趣。
关于azure - Service Fabric 可靠参与者和 I/O 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055973/
我刚刚偶然发现Fabric并且文档并没有真正说明它是如何工作的。 我有根据的猜测是您需要在客户端和服务器端都安装它。 Python 代码存储在客户端,并在命令运行时通过 Fabric 的有线协议(pr
以下是我对 Hyperledger Fabric 系统的理解。如果有任何不正确的地方,请告诉我。 1) 所以我们有同行(背书人、 anchor 人、将军(拥有分类帐的人)、排序人)。此外,当我们设置结
我部署了一个持久性级别为 Silver 的全新 Service Fabric 集群,fabric:/System/InfrastructureService/FE 服务运行状况不佳,并出现以下错误:
我对使用 Fabric 很感兴趣,api 在未连接到互联网时如何工作? 我发现 firebase(与此工具类似的工具)会将数据存储在本地,然后对服务器进行批量更新。但是,超过 72 小时的任何内容都不
Fabric CA Server 和 Fabric CA Client 的功能是什么? Fabric CA 服务器和 Fabric CA 客户端的角色是什么? 谢谢 最佳答案 Fabric CA 提供
我想在不同的环境中使用相同的应用程序,我在 documentation 中找到了它, Apps with Multiple Environments Let’s say you have an app
我目前正在尝试学习 Hyperledger Fabric,我设法了解了如何设置网络(Orderer、Peers 等),但现在是链代码的一部分。 但是,我发现两个不同的 git 存储库(据我所知)可用于
我在 following this tutorial 时遇到错误 cannot convert from 'System.Fabric.StatelessServiceContext' to 'Sys
在我没有改变任何东西之前它可以工作,但今天我收到了这个错误,这里是我的 gradle buildscript { repositories { mavenCentral() maven
Fabric beta 手动分发有时不会发送邀请电子邮件,即使在它向该人显示“已邀请”的网页中也是如此。如果我点击重新发送邀请,那个人就会收到。我的 QA 团队人员必须一直来找我重新发送邀请。我知道
默认情况下,Hyperledger Fabric 在将许多证书保存到区 block 链之前将其存储在交易中。无论如何或任何想法/技术来最小化区 block 链中的交易大小? 任何想法都非常有用! 最佳
我是 Hyperledger Fabric 的新手。我正在阅读 Fabric 的文档最新版本,但我不清楚 Fabric 的共识。 Fabric 使用的共识是什么?它是如何工作的?请解释。 最佳答案 我
我是 Hyperledger Fabric 的新手,我正在尝试在本地向服务器注册 Fabric 客户端。这是我到目前为止所做的。 go get -u github.com/hyperledger/fa
Hyperledger Fabric 中链和状态数据库的主要区别是什么。我很困惑它们是否相同。 最佳答案 Hyperledger Fabric 中有两个“存储”数据的地方: 账本 状态数据库 账本是真
我尝试将图像上传到分类帐中(将图像转换为 base64 字符串并将其作为交易中的 arg 传递)。 当我发送大小为 30 kb 的图像时,它工作正常,但是对于 100 kb 的图像,我的交易失败了,指
我正在尝试在初始化 Fabric CA 服务器后注册管理员: fabric-ca-server init -b “admin:adminpw” 并启动 CA 服务器: fabric-ca-serve
我正在使用来自 super 账本fabric firstsample的cryptogen工具,它未在 crypto-config/peerorganisation/org1.example.com/m
我离开了一家公司,用于访问 Fabric 的电子邮件已被删除。 现在我在同一家公司工作,他们用相同的句柄重新创建了电子邮件。我不知道这是否是问题所在,但我没有收到任何包含报告的电子邮件,也没有收到 B
如果我有 1 个组织 orgA ,在这个组织下我有 2 个用户:user1和 user2 , 在 orgA 中也有 1 个对等点,让我们称之为 peer0 . 现在想象一下,user1的证书在orgA
全部, 据我所知,在 Hyperledger Fabric 环境中,orderer 将消息传递给 peer。如果有离线对等。恢复到 ON-LINE 时,消息如何传递给对端? orderer如何知道pe
我是一名优秀的程序员,十分优秀!