这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
架构概述
单体架构
all in one process
- 优势:性能最高,冗余小
- 劣势:debug困难,模块互相影响,模块分工、开发流程复杂
分布式架构
抽出业务无关的公共模块
- 优势:业务无关的独立服务
- 劣势:服务模块debug可导致全站瘫痪,调用关系n对n而导致十分复杂,不同服务也很冗余
SOA架构
面向服务
- 优势:服务注册,业务层和服务层划分清晰
- 劣势:整个系统设计中心化,需要从上至下设计,重构难度大,不利于项目后期优化
微服务架构
彻底的服务化
- 优势:基于约定提高的开发效率,自下而上,业务独立设计,隔离故障
- 劣势:治理运维难度高,观测挑战,安全性要求高,分布式系统
微服务架构
基本概念
- 服务:一组具有相同逻辑的运行实体
- 实例:一个服务中,每个运行实体即为一个实例
- 集群:通常指服务内部的逻辑划分,包含多个实例
- 常见的实例承载形式:进程、VM、k8s pod等
- 有状态/无状态服务
- 服务的实例是否存储了可持久化的数据,例如磁盘文件
通信
- 单体服务中,通信只是简单的函数调用
- 微服务中,服务之间的通信意味着网络传输
服务治理
- 服务注册
- 服务发现
- 负载均衡
- 扩缩容
- 流量治理
- 稳定性治理
可观测性
- 日志采集
- 日志分析
- 监控打点
- 异常报警
- 链路追踪
安全性
- 身份验证
- 认证授权
- 访问令牌
- 代码审计
- 传输加密
- 黑产攻击
服务发布
蓝绿部署
简单稳定,但是需要双倍资源
依靠两部分资源实现,一部分用于业务,一部分用于更新,两者交替工作。
一般来说会选择流量低谷进行流量转移,保证一半的资源可以承载所有实时流量。
蓝绿部署示意图如下:
灰度发布
对流量切换技术要求高,且回滚难度大
依靠一边切掉老项目的流量一边连接新项目的流量实现服务发布
今天的课程几乎全是概念,实在记不下去了。。。。