Azure Service Fabric reliable actors vs reliable services
我刚接触到Azure服务结构,我遇到的最大问题是
我什么时候应该使用可靠的演员?请给我一些实际的例子。
我什么时候应该使用可靠的服务?请给我一些实际的例子。
看看不同之处:
- 状态类比:参与者处理对象图的单个实例。服务通常具有多个呼叫者的状态。
- 范围:演员不能单独工作,因为他们的大小(更像物体)。
- 生命周期:演员只有在使用时才是活跃的,所以更多内容将适合您的可用服务器资源
- 并发:参与者强制单线程访问
- 状态:演员只需修改聚合,服务在集合上工作,因此经常在集合上使用事务对于酸性行为。
- 沟通:演员通过平台提供的渠道。服务可以选择其他方式。
- 访问:无法从外部联系群集中的参与者违约。您可能需要提供访问的服务。
示例何时使用参与者:
- 对于移动应用程序的每个用户,都可以有一个演员。
- 对于每个向应用程序发送信息的恒温器,都可以有一个参与者。
- 对于您的电子商务网站的每个客户,您可以有一个购物篮演员。
在您可能习惯的情况下创建服务。创建一个可同时为多个用户提供服务的可靠服务。例如天气服务。
- 感谢您的支持,所以假设我正在开发一个简单的在线图书目录应用程序,那么服务是什么,演员是什么?
- 没有更多的上下文很难说。最终用户可以租用或购买书籍吗?商业案例是什么?当您为最终用户提供功能时,每个最终用户都可以有一个参与者。也许每本书都有,但要看情况而定。
- 关于比例的注释是不正确的。可靠的参与者是可靠服务之上的一个框架,因此它们的伸缩方式完全相同。参与者受到与服务相同的服务器资源的限制。
- 关于你提供的样本,是的,你可以用这种方式模拟这些问题。但是如果你想回答关于你的数据的问题,你需要一个单独的存储机制来查询,比如:"显示西雅图的所有移动用户"或者"让我把所有恒温器都设置为25度或更高"。
- 感谢Vaclac,我已经更正了有关比例的概述。关于演员样本。是的,当您选择用表示单个对象的参与者(如恒温器)解决问题时,会对包含多个参与者的数据产生影响。
- 我对actor分区感到困惑,如果您使用这个示例,"对于移动应用程序的每个用户,您都可以有一个actor。"那么包含该分区的节点必须进行扩展。如果节点唯一拥有的是参与者分区,那就可以了,但是如果节点中还有其他东西,那么对缩放来说似乎是反直觉的。或者看起来像是在缩放范围内缩放。actor分区在节点内缩放actor,该节点也被缩放。
我不想用一个词来定义它自己,但是只有当你确定你的问题符合演员设计模式时,才使用可靠的演员。演员是一种设计模式,很像"四人帮"中的许多设计模式。如果您的问题符合其中一种模式,那么就使用它。如果没有,最好不要把你的问题推错模式。
在服务结构中,可靠的参与者是虚拟参与者模式的实现。它有一定的操作规则和注意事项。这是一个很好的阅读文档,了解可靠的参与者框架是如何工作的,以及它是否满足您的要求:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-platform/
可靠的参与者实际上只是一个建立在可靠服务之上的框架,所以所有相同的扩展、分区和分布规则都适用。
- 什么是适合演员设计模式的问题?
- 有趣的是,互联网上没有人能给出一个清晰、简洁、真实的例子来说明为什么你会使用一个服务而不是一个演员。我读过有关演员的文档和维基百科文章,但我仍然完全困惑。
- 我相信这将极大地帮助您stackoverflow.com/questions/4493001/good-use-case-for-akka tl;dr当您需要高并发性和状态隔离时,您需要参与者。另外,如果您的服务正在管理一个经历复杂状态机转换的实体,其中每个分支都需要隔离,那么参与者非常适合