本人曾在Service Fabric (SF)项目中做了几年,这次很兴奋能看到它的开源。短短两天已经有1300多个关注了。我看了一下开源的代码,真是满满的干货,200多万行C++代码,所有最核心的协议算法都在里面。但是,不得不承认,现在各种微服务框架已经用的非常广泛,Service Fabric出来的晚,对它的定位会十分尴尬。而且官方的文档写的大而全,看了让人更糊涂。我这里根据自己的理解解释一下。

SF定位是一个“分布式系统平台”,意思就是说,它是用来写其他的分布式系统的,比如有了SF,就可以很容易写个Zookeeper、分布式Redis或者分布式数据库。但各种应用千差万别,怎么能实现一个你自己的分布式XYZ呢?SF通过主打有状态服务(Stateful Service)来帮你实现这个目的。

先从无状态服务(Stateless Service)说起,这个是目前大多数应用采用的方式。比如这个图是一个很典型的三层结构:前端,中间层和存储层,此外通常还会加个缓存层。前端和中间层都是无状态的,就是说其中不保存数据,可以比较容易地增加或减少节点。存储层是有状态的,需要特别留意数据安全性和一致性。由于前端过来的请求可能由于网络或者硬件故障而丢失,就需要使用队列来增强可靠性。如果访问数据速度是瓶颈,还需要增加缓存层,缓存层也是有状态的,所以缓存本身以及缓存和存储层的数据一致性也需要很小心。

<img src="https://pic1.zhimg.com/50/v2-796dfde978007dda05603f591b0baf4c_hd.jpg" data-caption="" data-size="normal" data-rawwidth="1020" data-rawheight="601" class="origin_image zh-lightbox-thumb" width="1020" data-original="https://pic1.zhimg.com/v2-796dfde978007dda05603f591b0baf4c_r.jpg">

有状态服务(Stateful Service)采用另一种思路,把数据与处理它的程序部署在一起,如下图里面,把存储层的数据进行分片后移到中间层,每片数据对应自己的一套处理程序。每片数据有奇数个副本,由SF来保证这些副本之间的数据的可靠性和一致性。好处就是,首先数据处理程序只需要关心本地数据,逻辑大大简化;其次数据的传输变少了,性能可以得到很大改善;而且系统架构变简单了,不需要在存储层、缓存层、队列等地方分别管理可靠性和一致性,只在SF一个地方管理。

<img src="https://pic2.zhimg.com/50/v2-f6df2d79d70d29d1234045cefb13a565_hd.jpg" data-caption="" data-size="normal" data-rawwidth="989" data-rawheight="598" class="origin_image zh-lightbox-thumb" width="989" data-original="https://pic2.zhimg.com/v2-f6df2d79d70d29d1234045cefb13a565_r.jpg">

为了保证数据一致性和可靠性,SF设计了非常复杂的协议,比如数据修改操作怎么同步到多个副本,数据修改如何保证严格有序,主副本如果失效该如何选举下一个主副本,节点如何动态加入和去除,容器的负载(内存+CPU)过大如何进行均衡等等。这些协议是我们当时花最多精力的,因为要支持类似分布式数据库这样的应用,要从理论上保证它的正确性,不能有一点意外。

相关文章:

  • 重磅消息-Service Fabric 正式开源

原文地址:https://www.zhihu.com/question/268819708/answer/343732457


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

如何看待微软新开源的Service Fabric?相关推荐

  1. 微软发布Azure Service Fabric Mesh公开预览版

    Service Fabric现在在云端有了一个新亲戚--Azure Service Fabric Mesh,Azure的一个完全托管服务,开发人员现在可以基于此服务部署和运行容器化应用程序.在去年五月 ...

  2. 如何看待微软新开源的LightGBM?

    地址:GitHub - Microsoft/LightGBM: LightGBM is a fast, distributed, high performance gradient boosting ...

  3. Service Fabric 用 Powershell 部署应用到本地

    前置说明 安装 Service Fabric SDK,会在本机 C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\Servic ...

  4. 期待微软平台即服务技术Service Fabric 开源

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

  5. 微服务框架之微软Service Fabric

    常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...

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

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

  7. 微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务

    微软此次 Build 2016 大会的重点主题一直都围绕开发和 Microsoft Azure 云服务,今天更是对外发布了 Azure Functions.Service Fabric 和 IoT S ...

  8. Azure Service Fabric正式发布

    在近日于旧金山举行的微软Build大会上,该公司宣布Azure Service Fabric正式发布.InfoQ先前曾经报道过Azure Service Fabric,因此,本文将重点介绍最近的更新和 ...

  9. 腾讯游戏使用Microsoft Service Fabric案例

    本文转载自公众号-云就该这么玩,微软官方的地址链接:https://customers.microsoft.com/en-us/story/tencent-telecommunications-azu ...

最新文章

  1. 二叉树的前序中序后序遍历(当然是非递归的!)
  2. RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
  3. 05构建之法阅读笔记之三
  4. 去除 计算机里面的百度云管家,WIN7如何彻底清除“百度云管家”图标或残留文件?...
  5. C语言自己写得到文件大小的函数已及Python
  6. django简介及环境搭建
  7. 位图bitmap应用
  8. 杭电1422 重温世界杯
  9. Triumph X发布著名摄影师Kim Joong-man首个NFT系列
  10. CCF NOI1149 N皇后问题
  11. [Android app] Linux串口驱动配置,可执行程序测试,App串口通信程序
  12. android模拟器root权限获取,如何在Android模拟器上获得root访问权限?
  13. 麻省理工大学计算机中心,Massachusetts Institute of Technology 麻省理工大学
  14. http://blog.csdn.net/pizi0475/article/details/48286579 -------------(Collada 快速入门)
  15. 文件共享服务器(CIFS协议)
  16. uefi开发环境搭建
  17. [Vue warn] Extraneous non-emits event listeners (createSuccess) were passed to component but could
  18. 解决哈希冲突的方法,Hash的介绍,散列因子的介绍
  19. java 原型图_一张图搞懂原型、原型对象、原型链
  20. 网络安全- 专访丨互联网安全城市巡回赛冠军肖策:“大满贯”背后的秘密

热门文章

  1. 2018暑假集训---递推递归----一只小蜜蜂hdu2044
  2. vue-cli 3.0配置webpack目录别名alias
  3. Android百度地图开发01之初体验
  4. nmap配合shell使用
  5. Solarwinds的NetFlow Traffic Analyzer中的Cisco设备配置
  6. .NET6中关于Minimal API的简单使用
  7. 我的技术回顾那些与ABP框架有关的故事-2018年
  8. 万字长文 - 解读功能开关 | IDCF
  9. 官宣,11月8号,.NET6+64位VS璀璨面世!
  10. ASP.NET Core中间件初始化探究