这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
主题:微服务架构介绍和微服务架构原理及特征
1.微服务架构介绍
系统架构演变历史
为什么系统架构需要演进?
互联网的爆炸性发展
硬件设施的快速发展
需求复杂性的多样化
开发人员的急剧增加
计算机理论及技术的发展
系统架构演变历史:
单体架构
垂直应用架构
分布式架构
SOA架构
微服务架构
2.微服务架构原理及特征
基本概念
服务 (service)
一组具有相同逻辑的运行实体。
实例 (instance)
一个服务中,每个运行实体即为一个实例。实例与进程的关系。
实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程 (反之不常见)。
集群 (cluster)
通常指服务内部的逻辑划分,包含多个实例。
常见的实例承载形式进程、VM、k8s pod ....有状态 / 无状态服务服务的实例是否存储了可持久化的数据例如磁盘文件)
3.字节跳动服务治理实践
重试的意义
本地函数调用可能有哪些异常?
参数非法
OOM (Out Of Memory)
NPE(Null Pointer Exception)
边界 case
系统崩溃死循环
程序异常退出
远程函数调用可能有哪些异常?
网络抖动
下游负载高导致超时
下游机器宕机
本地机器负载高,调度超时
下游熔断、限流
重试的意义:
降低错误率
假设单次请求的错误概率为 0.01,那么连续两次错误概率则为 0.0001。
降低长尾延时
对于偶尔耗时较长的请求,重试请求有机会提前返回
容忍暂时性错误
某些时候系统会有暂时性异常 (例如网络抖动) ,重试可以尽量规避
避开下游故障实例
一个服务中可能会有少量实例故障 (例如机器故障)重试其他实例可以成功
重试的难点
幂等性 重试风暴 超时设置