凤凰架构
2024-01-19 00:41:23 0 举报
AI智能生成
凤凰架构的思维导图整理
作者其他创作
大纲/内容
服务的组册
服务的维护
服务的发现
服务发现
路由
过滤
职责
阻塞
非阻塞
多路复用
信号驱动
同步
异步
网络I/O模型
网关
同一进程
客户端负载
不同进程,同一pod
代理负载
客户端负载均衡
第七章 从类库到服务
失败后将请求转发到其他副本服务
优点:系统自动处理,调用者对失败的信息不可见
缺点:增加调用时间,额外的资源开销
场景:调用幂等服务;对调用时间不敏感的场景
故障转移
直接返回失败
优点:调用者对失败有完全控制权;不依赖服务幂等
缺点:需要处理失败,否则可能雪崩
场景:非幂等服务;超时阈值较低的场景
快速失败
旁路不影响主流程
优点:不影响主路逻辑
缺点:只能用在旁路
场景:调用链中的旁路
安全失败
将错误隔离,不再调用
优点:控制错误不影响全局
缺点:出错的地方一段时间内不可用
场景:频繁超时的服务
沉默失败
失败后尝试重新执行
故障恢复
对多个服务副本发起调用,任一返回成功则算成功
并行调用
对多个服务副本发起调用,全部成功才算成功
广播调用
容错策略
达到阈值后由断路器介入,直接失败
断路器
隔离失败影响范围
舱壁隔离
主路进行同步重试
401等错误不应该重试
只对幂等服务重试
重试必须有明确终止条件
重试模式
容错设计模式
服务容错
之前运行状况的指标
依据什么限流
限流模式
如何限流
否决(熔断,降级)
阻塞(排队)
超额流量怎么处理
问题
每秒事务数 TPS
客户端发起请求的数量
每秒请求数 HPS
服务器响应次数
每秒查询数 QPS
统计指标
只针对离散统计
流量计数
适用于否决式
滑动时间窗
实现缓冲区,先进先出FIFO
漏桶
生成控量令牌,能够获取到令牌才能访问
令牌桶
限流设计模式
集中式缓存
基于额度的限流
分布式限流
流量控制
第八章 流量治理
不等同于放弃边界保护
身份来源于服务
服务之间没有固有信任关系
集中、共享的安全策略实施点
受信机器运行来源已知的代码
自动化、标准化变更管理
强隔离性工作负载
零信任网络
单向TLS认证
双向TLS认证
建立信任
服务安全
第九章 可靠通信
避免打印敏感信息
专门计算日志打印数据
避免引用慢操作
输入输出结果、执行时长等,应该交给追踪系统
避免打印追踪诊断信息
避免误导他人
处理请求的TraceID
记录运行中的关键事件
启动时输出非敏感配置信息
事件日志
追踪 trace
跨度 span
低性能损耗
对应用透明
随应用扩张
持续的监控
挑战
基于日志
基于服务
基于边车代理
数据收集
链路追踪
计数
瞬态
吞吐率
直方图
采样点分位图
聚合度量
第十章 可观测性
隔离文件:chroot
隔离访问:namespace
隔离资源:cgroups
封装系统: LXC
封装应用:Docker
封装集群: Kubernetes
容器
第十一章 虚拟化容器
当意识到没有什么技术能够包打天下
当个人能力因素成为系统发展的明显制约
当遇到来自外部商业层面对内部技术层面提出的要求
变化发展特别快的创新业务系统往往会自主地向微服务架构靠近
目的
决策者与执行者都能意识到康威定律在软件设计中的关键作用
组织中具备一些对微服务有充分理解、有一定实践经验的技术专家
环境预置
基础监控
快速部署
系统应具有以自治为目标的自动化与监控度量能力
复杂性已经成为制约生产力的主要矛盾
条件
独立——能够独立发布、独立部署、独立运行与独立测试
内聚——强相关的功能与数据在同一个服务中处理
完备——一个服务包含至少一项业务实体与对应的完整操作
下界
2 Pizza Team 能够在一个研发周期内完成的全部需求范围
上界
边界
第十六章 向微服务迈进
单体
自治
隔离
技术异构
特征
分体
系统完全独立
烟囱模式(孤岛)
依赖公共核心
微内核
独立的事件队列管道,可以自主处理或发布事件
事件驱动
演变
SOAP 远程调用协议
ESB 服务总线
SDO 服务数据对象
SCA 服务组件架构
组成
SOA
组织设计的产品/设计等价于这个组织的沟通结构
时间再多一件事情也不可能做的完美,但总有时间做完一件事情
线型系统和线型组织架构间有潜在的异质同态特性
大的系统组织总是比小系统更倾向于分解
康威定律
围绕业务能力构建
服务对应开发团队直接对服务运行质量负责任
分散治理
使用进程间通信
通过服务来实现独立自治的组件
开发者应将自己的服务作为一个产品,为用户(消费服务)提供支持
产品化思维
数据应该按领域分散管理、更新、维护、存储。同一实体在不同领域有不同的抽象
数据去中心化
SOAP与ESB会有不同的协议及不同的编码加工及业务规则转换,而微服务提倡简单通信,适合RESTful
强终端弱管道
不再幻想系统永远稳定、接受服务可能出错、应该设计自动机制,对可能发生的错误进行检测、隔离、重联,防止雪崩
容错性设计
承认服务会被淘汰,当系统中出现不可更改不可替代的服务,反而是设计上的脆弱
演进式设计
大量的服务需要通过CICD减少构建、发布、运维工作复杂度,微服务对基础设施的自动化要求更高
基础设施自动化
微服务
将数据、消息、日志、存储等运行与云端,开发者不需要烦劳部署及技术取舍
无服务
第一章 架构演进
管道 如:ps -ef | grep java
信号 如:kill -9 pid
信号量
少量通信
消息队列
共享内存
本地套接字接口
大量通信
进程间通信 IPC
序列化协议 如JSON、Web Service的XML
序列化与反序列化
如何表示数据
TCP、UDP
Wire Protocol :HTTP、SOAP等
序列化数据、异常、超时、安全、认证、授权事物等
如何传递数据
接口描述语言 IDL
如何表示方法
三个问题
文章
资源
文章的HTML
表征
当前文章
状态
当前文章变为下一篇文章
转移
理解
客户端与服务端分离
提高可见性、可靠性、可伸缩性,牺牲网络性
无状态
减少每次请求带有的额外冗余信息
可缓存
不需要知道是否是最终服务
分层系统
GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS
用资源及统一接口表示,而不是对象及动作表示
统一接口
按需代码
风格
REST
网络可靠
延迟不存在
网络是安全的
拓扑一成不变
总有管理员
没有运输成本
网络都是同质化的
网络分布式八宗罪
第二章 远程服务调用 RPC
原子性 A
隔离性 I
持久性 D
一致性 C
特性
NO-FORCE 可以不立即写入
NO-STEAL 不能提前写入
提交日志 commit logging
STEAL 可以提前写入,出错后进行回滚
提前写入 write ahead
实现原子性与持久性
写锁 W
读锁 R
范围锁
锁
加上所有类型锁,按顺序执行,性能最低
串行化
幻读 插入删除
可重复读 WR
不可重复读 修改
读已提交 W 查询完成释放读锁R
脏读 读到未提交数据
读未提交 W
隔离级别
实现隔离性
本地事务
确认是否所有事务都准备好提交
准备阶段
提交全部事务
提交阶段
参与者不知道协调者状态
单点问题
多次调用和持久化
性能问题
网络问题
一致性风险
二阶段提交 2PC
增加询问阶段
参与者未收到提交则超时处理
对需要回滚的场景,能提前处理
解决问题
三阶段提交 3PC
单个服务用多个数据源
全局事务
与生产相悖,数据库压力大
多个服务共用一个数据源
共享事务
可用性 A
分区容忍性 P
CAP
最终一致性
隔离性差,容易出现超卖
可靠消息队列
进行可执行性检查,预留业务资源
try
执行
confirm
取消
cancel
业务侵入强
TCC
将一个大事务拆分为若干个小事务,每个小事务都有对应的补偿动作
失败后一直重试直到成功
正向恢复
失败后一直取消
反向恢复
SAGA
事务
分布式事务
第三章 事务处理
http 1.0
expires
http 1.1
cache-control
强制缓存
如果资源没有修改过,可以直接返回304
last modified
通过资源唯一标识判断资源是否被修改过
etag
协商缓存
accept-*
请求header
content-*
响应header
客户端缓存
域名解析
http 2.0 多路复用
连接数优
传输压缩
http 3.0
快速UDP网络连接
传输链路
活动预热
主动分发
被动回源
加速静态资源分发
安全防御
协议升级
状态缓存
修改资源
访问控制
注入功能
CDN
内容分发网络
轮询
权重轮询
随机
权重随机
一致性哈希
响应速度
最少连接数
策略
负载均衡
提高业务复杂度
掩盖缺陷,延迟问题暴露时间
泄漏数据
缓存问题
缓存计算结果,缓解CPU计算压力
计算缓存
提高访问速度
I/O缓存
分类
ops 每秒操作数
吞吐量
从缓存返回与总请求的比例
FIFO 先进先出
LRU 淘汰最久未被访问的数据
LFU 淘汰最不经常访问的数据
缓存淘汰策略
命中率
扩展功能
将分布式缓存中的数据复制到进程缓存内
适合少更新,读取频繁
复制式缓存
与服务独立
缓存空值
通过布隆过滤器判断是否存在
查询的数据不存在
穿透
查询真实数据加锁
设计热点数据预热
缓存失效瞬间,收到大量请求
击穿
多级缓存
失效事件增加随机量
大量缓存同时失效
雪崩
读数据,先读缓存,没有读数据源,读取完数据更新到缓存再返回
写数据先写数据源,然后失效掉(不是覆盖,可能被其他请求再次更新)缓存
缓存与真实数据不一致
污染
风险
分布式缓存
维度
服务端缓存
第四章 透明多级分流系统
通过 http header 内 authorization 认证
http认证
web认证
认证功能
安全上下文
授权功能
密码的存储与验证
实现
认证
用户
角色
权限
RBAC
密码泄漏
访问范围
授权回收
先获取授权码,再换取访问令牌
授权码
直接返回访问令牌
隐式授权
密码
客户端
模式
OAuth2
授权
cookie-session
JWT
凭证
保密
传输
验证
第五章 架构安全性
第六章 分布式共识
凤凰架构
0 条评论
下一页