作者:潘罡 (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 概念的更多相关文章

  1. Service Fabric 群集在Service Replica过多的情况下报错问题

    首先 Service Fabric 群集是正常的,部署一些服务过后也能正常运行,但一旦部署的服务过多后,且每个服务不止一个Partition,就有可能让群集状态为Error,但其实服务还是在正常运行的 ...

  2. 拥抱Service Fabric —— 目录

    理解分布式 经典分布式系统设计 云时代分布式系统演进 Service Fabric基础概念 Node, Application, Service, Partition/Replicas Partiti ...

  3. Service Fabric是什么?

    题记:鉴于社区对Service Fabric有诸多误解,希望借本文能让大家正确了解Service Fabric是一个什么东西,算是给其正名. 术语与分类 Service Fabric不仅仅是容器编排器 ...

  4. 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 ...

  5. 重磅消息-Service Fabric 正式开源

    微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...

  6. Service Fabric基本概念: Node, Application, Service, Partition/Replicas

    作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...

  7. Service Fabric —— Stateful Service 概念

    作者:潘罡 (Van Pan) @ Microsoft 上节中我们谈到了Service Fabric最底层的两个概念,一个是针对硬件层面而言的Node Type和Node.另一个是Applicatio ...

  8. Service Fabric基本概念:Partition/Replicas示例

    作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节的结尾简单介绍了Service Fabric中分区Partitions和复制replicas的概念,本节主要以示例的形式 ...

  9. Service Fabric学习-从helloworld开始(无状态服务)

    原先做服务器程序, 都是部署在xx云上, 也没理解云是个啥, 不就是个服务器(虚拟机)租赁商吗? 好吧, 其实这个是IaaS, 而接下来要学习的ServiceFabric(以下简称SF)是PaaS. ...

随机推荐

  1. mac 上面安装 tree 命令

    相信很多使用过Linux的用户都用过tree命令,它可以像windows的文件管理器一样清楚明了的显示目录结构. 但是mac下默认是没有 tree命令的. 1.我们可以使用find命令模拟出tree命 ...

  2. git push remote: User permission denied

    这种错误因为本地保存了一个错误的账号密码,只需要重新编辑成正确的账号密码 直接上方法

  3. C# Js 时间格式化问题

    C# 后台: .ToString("dd-MMM-yyyy", System.Globalization. DateTimeFormatInfo.InvariantInfo) eg ...

  4. Scrum立会报告+燃尽图(Final阶段第五次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2484 项目地址:https://coding.net/u/wuyy694 ...

  5. Cosplay之孩子的妈咪

    很荣幸的担任“孩子妈妈”的角色,站在父母的角度去思考怎样的一个四则运算的APP才算是符合要求,可以受到广大家长的喜爱.不外乎有这样一些功能:1.可以随时的给孩子出题目,而且可以很快的得出正确答案.分析 ...

  6. 【CSAPP笔记】6. 汇编语言——控制

    原先刊于自己的域名下面,考虑到博客园之前发过一半,不想烂尾,故在博客园发一版. 到目前为止我们只考虑了直线代码的执行行为,也就是指令一条接着一条执行.C语言中的某些语句,比如条件语句.循环.分支语句, ...

  7. 【区间DP】codevs3657 括号序列题解

    题目描述 Description 我们用以下规则定义一个合法的括号序列: (1)空序列是合法的 (2)假如S是一个合法的序列,则 (S) 和[S]都是合法的 (3)假如A 和 B 都是合法的,那么AB ...

  8. H5页面的滚动条在windows浏览器下始终看到(灰色的不可用的)

    一般这种情况是在某些相关的div上设置了overflow:scroll属性,在mac系统的浏览器下均没有滚动条显示而在windows下的各个浏览器上均可以看到灰色的不可用的滚动条,这种情况我们需要在b ...

  9. json对象与json字符串的区别

    最近糟了这个坑,同一个方法,android和ios返回的数据不一样,一个是json字符串,另一个是json对象(至于为什么后台返回的是json对象,还没找到原因,但是我看到的后台的代码是有在返回之前给 ...

  10. [转贴]systemd 编写服务管理脚本

    [转贴]sparkdev大神的博客, 关于 systemd的配置文件的 介绍, 自己之前二进制安装 k8s 时 超过一个 service文件 但是当时不明不白的. 现在再学习一下大神的文章 的确牛B ...