本人曾在Service Fabric (SF)项目中做了几年,这次很兴奋能看到它的开源。短短两天已经有1300多个关注了。我看了一下开源的代码,真是满满的干货,200多万行C++代码,所有最核心的协议算法都在里面。但是,不得不承认,现在各种微服务框架已经用的非常广泛,Service Fabric出来的晚,对它的定位会十分尴尬。而且官方的文档写的大而全,看了让人更糊涂。我这里根据自己的理解解释一下。
SF定位是一个“分布式系统平台”,意思就是说,它是用来写其他的分布式系统的,比如有了SF,就可以很容易写个Zookeeper、分布式Redis或者分布式数据库。但各种应用千差万别,怎么能实现一个你自己的分布式XYZ呢?SF通过主打有状态服务(Stateful Service)来帮你实现这个目的。
先从无状态服务(Stateless Service)说起,这个是目前大多数应用采用的方式。比如这个图是一个很典型的三层结构:前端,中间层和存储层,此外通常还会加个缓存层。前端和中间层都是无状态的,就是说其中不保存数据,可以比较容易地增加或减少节点。存储层是有状态的,需要特别留意数据安全性和一致性。由于前端过来的请求可能由于网络或者硬件故障而丢失,就需要使用队列来增强可靠性。如果访问数据速度是瓶颈,还需要增加缓存层,缓存层也是有状态的,所以缓存本身以及缓存和存储层的数据一致性也需要很小心。
有状态服务(Stateful Service)采用另一种思路,把数据与处理它的程序部署在一起,如下图里面,把存储层的数据进行分片后移到中间层,每片数据对应自己的一套处理程序。每片数据有奇数个副本,由SF来保证这些副本之间的数据的可靠性和一致性。好处就是,首先数据处理程序只需要关心本地数据,逻辑大大简化;其次数据的传输变少了,性能可以得到很大改善;而且系统架构变简单了,不需要在存储层、缓存层、队列等地方分别管理可靠性和一致性,只在SF一个地方管理。
为了保证数据一致性和可靠性,SF设计了非常复杂的协议,比如数据修改操作怎么同步到多个副本,数据修改如何保证严格有序,主副本如果失效该如何选举下一个主副本,节点如何动态加入和去除,容器的负载(内存+CPU)过大如何进行均衡等等。这些协议是我们当时花最多精力的,因为要支持类似分布式数据库这样的应用,要从理论上保证它的正确性,不能有一点意外。
相关文章:
原文地址:https://www.zhihu.com/question/268819708/answer/343732457
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
如何看待微软新开源的Service Fabric?相关推荐
- 微软发布Azure Service Fabric Mesh公开预览版
Service Fabric现在在云端有了一个新亲戚--Azure Service Fabric Mesh,Azure的一个完全托管服务,开发人员现在可以基于此服务部署和运行容器化应用程序.在去年五月 ...
- 如何看待微软新开源的LightGBM?
地址:GitHub - Microsoft/LightGBM: LightGBM is a fast, distributed, high performance gradient boosting ...
- Service Fabric 用 Powershell 部署应用到本地
前置说明 安装 Service Fabric SDK,会在本机 C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\Servic ...
- 期待微软平台即服务技术Service Fabric 开源
微软的Azure Service Fabric的官方博客在3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的Servic ...
- 微服务框架之微软Service Fabric
常见的微服务架构用到的软件&组件: docker(成熟应用) spring boot % spring cloud(技术趋势) Service Fabric(属于后起之秀 背后是微软云的驱动) ...
- 重磅消息-Service Fabric 正式开源
微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的S ...
- 微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务
微软此次 Build 2016 大会的重点主题一直都围绕开发和 Microsoft Azure 云服务,今天更是对外发布了 Azure Functions.Service Fabric 和 IoT S ...
- Azure Service Fabric正式发布
在近日于旧金山举行的微软Build大会上,该公司宣布Azure Service Fabric正式发布.InfoQ先前曾经报道过Azure Service Fabric,因此,本文将重点介绍最近的更新和 ...
- 腾讯游戏使用Microsoft Service Fabric案例
本文转载自公众号-云就该这么玩,微软官方的地址链接:https://customers.microsoft.com/en-us/story/tencent-telecommunications-azu ...
最新文章
- 二叉树的前序中序后序遍历(当然是非递归的!)
- RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
- 05构建之法阅读笔记之三
- 去除 计算机里面的百度云管家,WIN7如何彻底清除“百度云管家”图标或残留文件?...
- C语言自己写得到文件大小的函数已及Python
- django简介及环境搭建
- 位图bitmap应用
- 杭电1422 重温世界杯
- Triumph X发布著名摄影师Kim Joong-man首个NFT系列
- CCF NOI1149 N皇后问题
- [Android app] Linux串口驱动配置,可执行程序测试,App串口通信程序
- android模拟器root权限获取,如何在Android模拟器上获得root访问权限?
- 麻省理工大学计算机中心,Massachusetts Institute of Technology 麻省理工大学
- http://blog.csdn.net/pizi0475/article/details/48286579 -------------(Collada 快速入门)
- 文件共享服务器(CIFS协议)
- uefi开发环境搭建
- [Vue warn] Extraneous non-emits event listeners (createSuccess) were passed to component but could
- 解决哈希冲突的方法,Hash的介绍,散列因子的介绍
- java 原型图_一张图搞懂原型、原型对象、原型链
- 网络安全- 专访丨互联网安全城市巡回赛冠军肖策:“大满贯”背后的秘密
热门文章
- 2018暑假集训---递推递归----一只小蜜蜂hdu2044
- vue-cli 3.0配置webpack目录别名alias
- Android百度地图开发01之初体验
- nmap配合shell使用
- Solarwinds的NetFlow Traffic Analyzer中的Cisco设备配置
- .NET6中关于Minimal API的简单使用
- 我的技术回顾那些与ABP框架有关的故事-2018年
- 万字长文 - 解读功能开关 | IDCF
- 官宣,11月8号,.NET6+64位VS璀璨面世!
- ASP.NET Core中间件初始化探究