Service Fabric —— Actor / Stateless Service 概念
作者:潘罡 (Van Pan) @ Microsoft
上一节我们谈到了Stateful Service。在Service Fabric中,Stateful Service是理解Micro Service的抓手。
在理解了Stateful Service的基础上,我们只需要记住:Actor是单线程模型Stateful Service,Stateless Service是无持久化Stateful Service。
Actor
Actor的基类是Stateful Service。
作为程序员,很快就能理解Actor具有Stateful Service的所有特性:数据持久化,事务,partition,replia 等等。
但是因为Actor是Stateful Service的扩展,因此它有一项Stateful Service没有的特性:单线程模型。
Actor应对于这样一个场景:某种共用数据,并且需要保证数据一致性。
举个例子:多个玩家合作在打Boss,每个玩家都是一个单独的线程,但是Boss的血量需要在多个玩家之间同步。同时这个Boss在多个服务器中都存在,因此每个服务器都有多个玩家会同时打这个服务器里面的Boss。
如果是Stateful Service,很难应对上面的场景。因为如果多线程并发请求Stateful Service,默认情况下它只会并发处理。这种情况下可能造成数据冲突。
但是Actor是单线程模型,意味着即使多线程来通过Actor ID调用同一个Actor,任何函数调用都是只允许一个线程进行操作。并且同时只能有一个线程在使用一个Actor实例。

同时,Actor实例的生命周期是由Service Fabric控制的。虽然调用过某个ID的Actor,但是Service Fabric依然可能会在长时间没有使用时回收这个Actor实例。
另外,Actor和Stateful Service一样,在发布前会定义好partition key和partition数量。当外部服务根据Actor ID来获取某个Actor实例时,Service Fabric会根据HASH算法返回对应的Actor实例。
Stateless Service
如果你已经理解了Stateful Service和Actor,那Stateless Service就非常好理解了。
Stateless Service没有partition,没有replica,也没有持久化数据。
唯一能控制Stateless Service的,是instance count。
也就是说,Stateless Service的不同实例就是跑在不同node上。
比如在发布时如果设置Stateless Service instance count是3,同时发布目标Service Fabric Node有5台,那Service Fabric就会随机选择三台node运行这个Stateless Service。
Stateless Service的典型场景是:Web前端
Web前端只需要负责接收HTTP request并调用后端服务获取数据并进行渲染。一般架构下,Web前端都是一些动态页面,不会持久化任何数据。
Web前端服务数越多,理论上就能处理更多的并发量。
希望以上的介绍,可以帮助你理解Actor和Stateless Service。
我们会在后续内容中介绍如何使用Actor和Stateless Service.
Service Fabric —— Actor / Stateless Service 概念的更多相关文章
- Service Fabric 群集在Service Replica过多的情况下报错问题
首先 Service Fabric 群集是正常的,部署一些服务过后也能正常运行,但一旦部署的服务过多后,且每个服务不止一个Partition,就有可能让群集状态为Error,但其实服务还是在正常运行的 ...
- 拥抱Service Fabric —— 目录
理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...
- Service Fabric是什么?
题记:鉴于社区对Service Fabric有诸多误解,希望借本文能让大家正确了解Service Fabric是一个什么东西,算是给其正名. 术语与分类 Service Fabric不仅仅是容器编排器 ...
- How to deploy JAVA Application on Azure Service Fabric
At this moment, Azure Service Fabric does not support JAVA application natively (but it's on the sup ...
- 重磅消息-Service Fabric 正式开源
微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...
- Service Fabric基本概念: Node, Application, Service, Partition/Replicas
作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...
- Service Fabric —— Stateful Service 概念
作者:潘罡 (Van Pan) @ Microsoft 上节中我们谈到了Service Fabric最底层的两个概念,一个是针对硬件层面而言的Node Type和Node.另一个是Applicatio ...
- Service Fabric基本概念:Partition/Replicas示例
作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节的结尾简单介绍了Service Fabric中分区Partitions和复制replicas的概念,本节主要以示例的形式 ...
- Service Fabric学习-从helloworld开始(无状态服务)
原先做服务器程序, 都是部署在xx云上, 也没理解云是个啥, 不就是个服务器(虚拟机)租赁商吗? 好吧, 其实这个是IaaS, 而接下来要学习的ServiceFabric(以下简称SF)是PaaS. ...
随机推荐
- iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (以后谁不会了,直接将连接给他)
iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (一有冲突要手把手教一遍,太麻烦了,现在总结下,以后谁不会了,连接直接发他). 关于xxx.xcodeproj 文件冲突的话,是比较 ...
- 互评Beta版本——可以低头,但没必要——取件帮
基于NABCD评论作品,及改进建议 1. 根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 取件帮是一款有偿互助取件的微信小程序,很大程度上解决了学生因为距离.时间等原因无法取快递的 ...
- 用C给小学生出题目
用C给小学生出题目 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 300 • Es ...
- MathExam作业
作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ...
- 第二阶段Sprint1
昨天:进行第二阶段第一次站立会议,讨论冲刺阶段,目标,任务认领 今天:实现视频录制,共享平台的视频下载和上传 遇到的问题:调手机摄像头没问题,共享平台怎么办
- Mutual and feedback(互评与反馈)
互评与反馈: 注:我在收集各小组对我小组的评价了,发现有几个没有收集到,不知道是我看不到还是贵小组不小心遗漏了对我小组的评价,如果看到,请给我留意,谢谢! 组名 对我 ...
- 守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- jquery 取消全选和全选功能 不全选
代码如下 function ckSelectAll() { if ($('#ckSelectAll').is(':checked') == true) { $("INPUT[name='ch ...
- Jenkins权限控制-Role Strategy Plugin插件使用
Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目,将测试和生产环境分开. 具体配置方法如下(操作需要管理员用户权限). Jenkins版本:1.64 ...
- Oracle Instant Client
下载地址: https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/ind ...