您好,欢迎访问三七文档
微服务规范概念和定义.....................................................3组件与服务.....................................................3去中心化和集中架构.............................................4围绕业务功能进行组织...........................................5产品不是项目?..................................................5强化终端及弱化通道.............................................5分散治理.......................................................5分散数据管理...................................................6基础设施自动化.................................................6容错性设计.....................................................6设计改进.......................................................6其它...........................................................7微服务与SOA................................................7多语言,多选择.............................................7实践标准和强制标准.........................................7原则...............................................................8Availability:标准的目标.......................................8Production-Readiness标准.......................................8Stability..................................................8Reliability................................................8Scalability................................................9FaultTolerance.............................................9Catastrophepreparedness....................................9Performance................................................9Monitoring................................................10Documentation.............................................10服务化架构的演进历史..............................................10历史..........................................................10MVC.......................................................10RPC.......................................................10SOA.......................................................11微服务架构................................................11微服务架构的开发原则..........................................12微服务架构的测试原则..........................................12微服务架构的部署原则..........................................13微服务架构的治理原则..........................................13微服务的接口原则..............................................14特征..............................................................14服务的业务要素必须唯一并不具有歧义............................14服务必须在空间和时间上具有唯一性和稳定性......................14服务需要具备多态性............................................15实践..............................................................15微服务的粒度..................................................15微服务系统多大?..............................................15微服务规划与设计..............................................15人员角色的变化................................................16挑战..............................................................16问题..........................................................17“轻量化”解决方案........................................17安全性问题................................................17系统间耦合问题............................................18系统可靠性问题............................................18全局事务一致性问题........................................18异构系统问题..............................................19组织需求与架构选择............................................19微服务是未来吗?..............................................20附录..............................................................20关于微服务概念和定义简单来说,服务的本质就是行为(业务活动)的抽象。对于SOA,推进结构化信息标准组织(OASIS)和开放团体(OpenGroup)均给出了正式定义。OASIS将SOA定义为:Aparadigmfororganizingandutilizingdistributedcapabilitiesthatmaybeunderthecontrolofdifferentownershipdomains.Itprovidesauniformmeanstooffer,discover,interactwithandusecapabilitiestoproducedesiredeffectsconsistentwithmeasurablepreconditionsandexpectations.OpenGroup将SOA定义为:Service-OrientedArchitecture(SOA)isanarchitecturalstylethatsupportsservice-orientation.Service-orientationisawayofthinkingintermsofservicesandservice-baseddevelopmentandtheoutcomesofservices.Aservice:Isalogicalrepresentationofarepeatablebusinessactivitythathasaspecifiedoutcome(e.g.,checkcustomercredit,provideweatherdata,consolidatedrillingreports)Isself-containedMaybecomposedofotherservicesIsa“blackbox”toconsumersoftheservice业界基本的认知是,SOA是一种架构模式,是一种面向服务的思维方式。对于服务的定义,OpenGroup认为服务是一种可重复的业务活动的逻辑上的描述,是一种自包含的、可组合的“黑盒子”。微服务在服务定义上,与传统的SOA差别不大,在实现上强调应用的颗粒度足够小,当然小到什么程度也是争论的一个话题。在我看来,微服务“微”的并不是服务,其实微的是应用(后面我们会谈到,服务的颗粒度是和需求相关的,是不能随意变大变小的)。组件与服务组件是指软件中独立的单元,它能独立替代和独立更新。微服务架构也使用组件库,但是它把软件拆分成服务,并认为这是主要的组织形式。我们把组件库定义为程序中相互关系、并使用内存中调用的组件,把服务定义为进程间使用如Web请求服务或者远程调用来相互通信的组件。(这种定义的方式与其它面向对象程序中服务对象的概念是不一样的。)把服务当成组件(而不是组件库)一个主要的原因是服务可以独立的部署。如果你的应用由多个组件库组成并跑在一个进程中,那么任何组件的变更都将导致整体应用的重新发布。但是如果由许多服务构成的应用,你可以想像的到每个服务的变更仅需要发布相应的服务。当然,这也不是绝对的,比如导致服务接口的变更的更新就需要相应服务的变化,但优秀微服务构架,会尽量避免这种服务间的耦合并完善服务的交互接口。把服务当成组件的另一个考虑是这将拥有更新清晰的接口。许多开发语言并没有良好的定义公共接口的机制。通常只有文档和规范说明,让用户避免组件间会导致组件耦合的过度的依赖。不过服务由是是通过明确的远程接口调用,这个问题就很容易解决了。使用服务也有它的不足之处。远程调用比进制内部调用更消耗性能,而且远程的API比较粗糙,难以使用。如果由于对组件的职责进行变更,影响到跨进程间的交互,那么这操作起来也比较困难。第一个可能的特性,我们看到每个服务是运行在独立的进程上的。注意,这只是第一个可能的特性。服务也可以由多个进程组成,它们是同时开发和部署的,例如服务可能用到一个应用进制和一种数据禀。去中心化和集中架构SOA发展过程中既有无中心架构,也有集中架构,前者用于互联网企业间的交互,后者在企业内部使用。确切的讲SOA没有“去中心化”
本文标题:微服务规范
链接地址:https://www.777doc.com/doc-4748647 .html