本文最后更新于 2023-10-12,文章内容可能已经过时。

微服务架构原理与治理实践:

1.引入:

微服务架构是当前大多数互联网公司的标准架构.

QQ截图20230204103120

演进历史:

QQ截图20230204103154

2.1 单体架构:

QQ截图20230204103231

2.2 垂直应用架构:

QQ截图20230204103412

2.3 分布式架构:

QQ截图20230204103420

2.4 SOA架构:

QQ截图20230204103513

2.5 微服务架构:

QQ截图20230204103557

2.微服务架构:

2.1 微服务概览:

QQ截图20230204103735

2.2 核心要素:

QQ截图20230204103807

2.3 基本概念:

2.3.1 服务与实例:

QQ截图20230204104000

一个服务内部具有多个实例.也有可能只有一个实例。

一个服务的所有实例必须运行同一段代码。

QQ截图20230204104210

2.3.2 服务间通信:

QQ截图20230204104256

2.3.3 服务注册与发现:

QQ截图20230204104624

解决写死问题:

QQ截图20230204104702

无法相对平均的访问服务中的各个实例。

QQ截图20230204104833

QQ截图20230204104947

下线:

QQ截图20230204105032QQ截图20230204105022

上线:

QQ截图20230204105053

QQ截图20230204105318

2.3.4 流量特征:

QQ截图20230204105348

2.4 服务治理:

2.4.1 服务发布:

QQ截图20230204105704

存在的问题:

QQ截图20230204105831

2.4.1.2 蓝绿部署:

QQ截图20230204110213

先部署一部分实例。

简单,稳定,但是需要两倍的资源。

2.4.1.3 灰度发布(金丝雀发布)

QQ截图20230204110536

QQ截图20230204110624

不停地增添新的实例,去掉旧的实例。

如果在升级过程中,尤其是在升级后期(99%),发现bug,回滚会非常的困难。而k8s这种平台可以实现。

2.4.2 流量治理:

QQ截图20230204110930

boe?可以基于用户,测试自己的需求。

2.4.3 负载均衡:

QQ截图20230204111541

2.4.4 稳定性治理:

QQ截图20230204111645

QQ截图20230204111804

QQ截图20230204111821

熔断过程中,服务a不会一直访问,而是间歇性的访问尝试一下b恢复了没有。

降级就是有限保证重要的服务,而拒绝掉相对不太重要的服务。

2.4.5 总结:

QQ截图20230204112127

3.服务治理实践-重试:

3.1 是否需要重试:

QQ截图20230204112417

QQ截图20230204112448

本地调用如果失败,不需要重试。

远程调用失败,可以考虑重试。

3.2 重试的意义;

QQ截图20230204112618

QQ截图20230204112718

长尾延时,指的是有些请求的时间特别长(由于服务治理和负载均衡的部分策略原因)。

3.3 重试的难点:

QQ截图20230204113025

QQ截图20230204113008

次数指数型增长。

3.4 重试策略:

QQ截图20230204113233

QQ截图20230204113318

QQ截图20230204113524

QQ截图20230204113707

4.总结:

QQ截图20230204113845