【9】微服务架构 | 青训营笔记

70 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第9天。

微服务架构介绍

系统架构演变历史

为什么系统架构需要演进

  • 互联网的爆炸性发展
  • 硬件设施的快速发展
  • 需求复杂性的多样化
  • 开发人员的急剧增加
  • 计算机理论及技术的发展

单体架构

all in one process

优势

  1. 性能最高
  2. 冗余小

劣势

  1. debug困难
  2. 模块相互影响
  3. 模块分工、开发流程

垂直应用架构

按照业务线垂直划分

优势

  1. 业务独立开发维护

劣势

  1. 不同业务存在冗余
  2. 每个业务还是单体

分布式架构

抽出业务无关的公共模块

优势

  1. 业务无关的独立服务

劣势

  1. 服务模块bug可导致全站瘫痪
  2. 调用关系复杂
  3. 不同服务冗余

SOA架构(Service Oriented Architecture)

面向服务

优势

  1. 服务注册

劣势

  1. 整个系统设计是中心化的
  2. 需要从上至下设计
  3. 重构困难

微服务架构

彻底的服务化

优势

  1. 开发效率
  2. 业务独立设计
  3. 自下而上
  4. 故障隔离

劣势

  1. 治理、运维难度
  2. 观测挑战
  3. 安全性
  4. 分布式系统

微服务架构核心要素

服务治理,可观测性,安全

微服务架构原理及特征

基本概念

服务(service):一组具有相同逻辑的运行实体。

实例(instance):一个服务中,每个运行实体即为一个实例。

实例与进程的关系:实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程(反之不常见)。

集群(cluster):通常指服务内部的逻辑划分,包含多个实例。

常见的实例承载形式:进程、VM、k8s pod……

有状态/无状态服务:服务的实例是否存储了可持久化的数据(例如磁盘文件)。

服务间通信:

对于单体服务,不同模块通信只是简单的函数调用。

对于微服务,服务间通信意味着网络传输。