Day12-微服务出现、服务网络
1、微服务的出现及治理方式演进
1.1程序架构风格与微服务
- 程序架构概述
架构(Architecture)一词源于建筑领域,用于指规划、设计和建造建筑物的过程及产物;引入计算机领域后,软件架构就成为描述软件规划设计的专有名词;是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
- 架构风格
根据软件系统在运行期的表现风格和部署结构,大体可以将其粗略地划分为两类:
单体架构:整个系统的所有功能单元整体部署到同一进程(所有代码可以打包成一个或多个文件)
<> 进一步细分:简单单体模式、MVC模式、前后端分离模式、组件模式和类库模式等;
分布式架构:整个系统的功能单元分散到不同的进程,然后由多个进程共同提供不同的业务能力;
<> 面向服务的架构(SOA)
<> 微服务架构(MSA)
- 分布式应用的需求
Bilgin Ibryam在其一篇文件中将分布式应用的需求分为生命周期、网络、状态和绑定四个方面;(显然,要满足这些需求并创建出良好的分布式应用绝非易事)
(1)生命周期
- 编写业务功能时,编程语言会指定生态系统中的可用库、打包格式和运行时(runtime)等;
例如,Java使用.jar打包格式,它将依赖到所有Maven库视为生态系统,并使用JVM作为运行时;
- 随着发布周期变得更短,生命周期中更为重要的是以自动化的方式部署的能力、从错误中恢复的能力和扩展服务的能力;
这组能力广泛地代表了应用程序生命周期的需求;
(2)网络
- 从某种意义上说,如今几乎所有应用程序都是分布式应用程序,它们都需要网络,但现代分布式系统需要从更广泛的角度去掌控网络;
包括服务发现和错误恢复、实现现代软件发布技术和各种跟踪及遥测等;
- 为了满足需要,我们甚至会在这个类别中包含不同的消息交换模式、点对点和发布/订阅方式,以及智能路由机制等;
(3)状态
- 此处的状态是指服务的状态;
一般我们认为,服务最好是无状态的;
但管理服务的平台本身却是需要状态的(即有状态)
- 平台负责实现可靠的服务编排和工作流、分布式单例、临时调度(即周期式作业cron job)、幂等性、状态的错误恢复、缓存等,这些功能都依赖于底层的状态;
(4)绑定
- 分布式系统的组件不权要相互通信,而且要和现代的或以往的旧式外部系统集成;
这就要求连接器(connector)能够转换各种协议、支持不同的消息交换模式,如轮询、事件驱动、请求/应答、转换消息格式,甚至能够执行自定义的错误恢复过程和安全机制;
1.2分布式架构没理模式演进
ESB -> Miroservices -> Cloud Native
服务网络的迭代