这是我参加「第五届青训营 」伴学笔记创作活动的第 9 天。今天课程主要学习微服务框架的原理与特征。
重点内容
- 微服务的由来与原理
- 服务治理功能的工作方式
主要知识点
一、微服务的由来
随着时代与技术的进步,软件开发的系统架构也在一步步演进,最终产生了目前的微服务架构。这一过程总结概括来说就是单体架构 -> 分布式架构 -> 微服务架构。接下来详细介绍演进的过程与各个架构的优缺点(前面介绍架构时有提到类似部分,为了该节内容完整在这篇笔记中也对此进行记录)。
1、单体架构
单体架构顾名思义,即将所有服务部署于一个进程之中。这种架构方式最为直观,简单,其优缺点:
优点:
- 性能最好
- 冗余小
缺点:
- debug困难
- 模块互不独立,互相影响,带来扩展性差的一系列问题
- 在开发流程中,由于单体架构对模块的区分不明显,因此对成员分工合作会产生极大干扰
2、分布式架构
分布式架构在单体架构的基础上,抽离了业务无关的公共模块,使得服务程序拥有的较为独立的模块,其优缺点:
优点:
- 业务无关的独立服务
缺点:
- 一处bug,全站瘫痪
- 调用关系复杂
- 不同服务冗余
3、微服务架构
微服务框架对于业务进行了彻底拆分,每个模块都产生一个对应的服务,由对服务的组合完成业务功能,其优缺点:
优点:
- 开发效率高
- 业务独立设计
- 自下而上的体系结构
- 某个服务出现bug不会影响到其他服务的可用性
缺点:
- 治理运维难度大
- 观测挑战
- 服务交互量大带来的安全性隐患
- 分布式系统
二、微服务架构的原理
1、微服务架构的基本概念
-
服务:指一组具有相同逻辑的运行实体
-
实例:一个服务中,每个单独的运行实体即为实例
-
实例与进程的关系:实例与进程没有必然联系,一般情况下一个实例对应一个或者多个进程,而进程对应多个实例的情况极为少见
-
集群:通常指服务内部的逻辑划分,包含多个实例
-
有状态服务 / 无状态服务:服务的实例是否存储了可持久化的数据
2、微服务架构的核心要素
-
服务治理:指对微服务框架内的服务集群进行管理,包括服务注册,服务发现,负载均衡等内容
-
可观测性:指微服务框架运行时,实现业务功能的过程是可以观测的。这一要素要求微服务架构需要具备完整可靠的日志采集分析能力。对异常与错误的反馈能力,以及对业务进行链路追踪的能力。
-
安全性:由于微服务框架的信息交互量极大,带来了较大的安全隐患,因此微服务架构更加需要注意执行时的安全问题。
3、微服务架构的流量特征
-
微服务架构的网关入口是统一的
-
架构内网服务通信多数采用rpc
-
各个服务调用的链路呈现网状
总结
这节课主要学习了微服务架构的发展历史,架构中的基本组件及术语,同时分析了微服务架构的基本流量特征。这部分知识看似无关紧要,实则对于理解参透微服务架构的运行逻辑与应用流程具有重要的意义。