微服务架构相关概念 | 青训营笔记

146 阅读2分钟

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

架构概述

单体架构

all in one process

  • 优势:性能最高,冗余小
  • 劣势:debug困难,模块互相影响,模块分工、开发流程复杂

分布式架构

抽出业务无关的公共模块

  • 优势:业务无关的独立服务
  • 劣势:服务模块debug可导致全站瘫痪,调用关系n对n而导致十分复杂,不同服务也很冗余

SOA架构

面向服务

  • 优势:服务注册,业务层和服务层划分清晰
  • 劣势:整个系统设计中心化,需要从上至下设计,重构难度大,不利于项目后期优化

微服务架构

彻底的服务化

  • 优势:基于约定提高的开发效率,自下而上,业务独立设计,隔离故障
  • 劣势:治理运维难度高,观测挑战,安全性要求高,分布式系统

微服务架构

基本概念

  • 服务:一组具有相同逻辑的运行实体
  • 实例:一个服务中,每个运行实体即为一个实例
  • 集群:通常指服务内部的逻辑划分,包含多个实例
  • 常见的实例承载形式:进程、VM、k8s pod等
  • 有状态/无状态服务
  • 服务的实例是否存储了可持久化的数据,例如磁盘文件

通信

  • 单体服务中,通信只是简单的函数调用
  • 微服务中,服务之间的通信意味着网络传输

服务治理

  1. 服务注册
  2. 服务发现
  3. 负载均衡
  4. 扩缩容
  5. 流量治理
  6. 稳定性治理

可观测性

  1. 日志采集
  2. 日志分析
  3. 监控打点
  4. 异常报警
  5. 链路追踪

安全性

  1. 身份验证
  2. 认证授权
  3. 访问令牌
  4. 代码审计
  5. 传输加密
  6. 黑产攻击

服务发布

蓝绿部署

简单稳定,但是需要双倍资源

依靠两部分资源实现,一部分用于业务,一部分用于更新,两者交替工作。

一般来说会选择流量低谷进行流量转移,保证一半的资源可以承载所有实时流量。

蓝绿部署示意图如下:

image.png

灰度发布

对流量切换技术要求高,且回滚难度大

依靠一边切掉老项目的流量一边连接新项目的流量实现服务发布

今天的课程几乎全是概念,实在记不下去了。。。。