设为首页 收藏本站
查看: 984|回复: 0

[经验分享] Service Fabric基本概念: Node, Application, Service, Partition/Replicas

[复制链接]

尚未签到

发表于 2017-7-1 12:38:05 | 显示全部楼层 |阅读模式
  作者:张鼎松 (Dingsong Zhang) @ Microsoft
  在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件。紧接上文内容,本节将为大家介绍Azure Service Fabric的基本概念及相关组件的工作机制, 包括Micro Service, Node type, Node等等。虽然名称叫Azure Service Fabric但其可应用的平台远不止Azure平台本身,我们会在后续章节的使用场景中为大家专门描述Service Fabric在各大平台上的工作形式。
  Microsoft Azure Service Fabric是微软开发的一套支撑高可用高伸缩云服务的框架,其核心部分是一个分布式系统平台,用于构建可扩展的可靠应用。在便于封装可部署代码的同时,支持创建无状态和有状态的微服务,通过云平台来伸缩他们,来应对高复杂度、低延迟、数据密集的情况。开发者和系统管理员可以免于处理复杂的基础设施问题,将精力更多地投入到所构建应用程序的实现上。
DSC0000.png

  微服务Microservice
  在具体介绍Service Fabric之前,不得不先提一下微服务的思想。因为使用Service Fabric的开发过程就是微服务的设计开发过程。有了Service Fabric,您只需要考虑开发微服务的功能,而无需过多考虑部署后的伸缩性和可用性的问题,这些问题都可以交给Service Fabric来帮您实现。
  微服务的思想就是将复杂单体式应用程序解耦成多个各个独立的服务,在功能不变的情况下,被分解出来的多个可管理的服务可以通过约定的接口相互通信。这种方法为采用单体式编码很难实现的功能提供了模块化的解决方案。因为,单个服务可以更易于开发、维护。这种架构方式使每个单个服务都可以有专门的团队来开发,每个团队可以各自选择自己擅长的开发技术,通过约定接口来实现相互通信。每个服务可以独立实现、测试、部署和升级,开发者不再需要担心其他服务部署对本服务的影响。AB测试加快了部署的速度,从而实现持续集成持续部署。所有微服务作为一个整体为用户提供服务,同时各个微服务可以根据自身对资源的需求独立扩展,从而最大化服务器的资源利用率。
  回到Service Fabric, 一个Service Fabric开发的应用程序由数个服务组成,每个服务可以作为个体独自修改、扩展和管理,同时可以按照一个完整的应用程序来管理。Service fabric的设计目的就是用微服务的方式来简化构建复杂应用的过程。
  集群Cluster
  集群是一组通过网络连接的虚拟或者物理主机,您的微服务就部署在集群中,集群的大小可以扩展到上千台主机。
  节点Node
  集群中的一台机器或者VM称为Node, 每个Node会被分配一个名称(string字符串)。Node还有其他一些属性,比如位置属性placement properties。可以通过每台机器或者VM都有一个自启动Windows系统服务FabricHost.exe,它随系统启动后会执行另外两个程序:Fabric.exe 和 FabricGateway.exe, 这两个程序就组成了一个完整的Node。出于测试目的,有时单台机器上也可以通过运行多个Fabric.exe 和 FabricGateway.exe的实例来拥有多个Node。
  一个集群中的所有Node相互之间平等且可以直接互相通信。Node除了宿主在物理主机或VM中,还可以宿主在基于Windows的Docker容器中、本地部署的服务器中、其他公有云和私有云中,我们会在后续Service Fabric的使用场景中为大家详细介绍这一内容。
DSC0001.png

  应用程序Application:Application Type和Service Type
  Service Fabric应用程序(Application)是一组服务(service)的集合,其中一个service是为Application提供指定功能的单元。您将通过定义一个Application Type和对应的几个Service Type来构建一个Service Fabric的Application. 当Application被部署到Service Fabric Cluster里面时,这些类型会被相应地初始化成application实例和service实例。这里类似我们OO地思想。
  Application Type和Named Application: Application Type包含一组Service Type的集合,对应上文中的Service Fabric应用程序(Application)是一组服务(service)的集合。 Application Type的name和version定义在ApplicationManifest.xml文件中。在部署的时候,ApplicationManifest.xml会被拷贝到Service Fabric的image store中。通过在Cluster中创建Named Application来初始化Application的实例。Named Application通过"fabric:/MyNamedApp"的形式来命名。
  Service Type和Named Service: Service Type的name和version定义在ServiceManifest.xml文件中。当创建好一个Named Application后,就可以创建Named service. 例如您在 "MyNamedApp" Named Application中创建一个 "MyDatabase" Named Service, Name Service被命名为 "fabric:/MyNamedApp/MyDatabase".
DSC0002.png

  分区Partitions和复制replicas
  一个service可以包含多个分区Partition,Service Fabric通过使用分区作为扩展的机制来将工作分布到不同的service实例上。
  一个分区Partition可以包含一个或者多个复制replicas。Service Fabric通过使用复制来实现可用性。一个分区可以有一个主复制和多个从复制,多个复制之间的状态可以自动同步。当主复制出现错误时,其中一个从复制被自动提升为主复制,以保证系统的可用性。然后将从复制的个数恢复到正常水平,保证足够的从复制冗余。
  这部分概念如果使读者有些难以理解,我们将在下一节通过示例的方式来讲解这些概念,便于大家理解。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390003-1-1.html 上篇帖子: .NET开发者如何愉快的进行微信公众号开发 下篇帖子: 最近遇到的关于微软的两个坑
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表