干货收藏丨微服务架构下的9大经典隔离策略
👉目录
1 前言
2 隔离
3 动静隔离
4 读写隔离
5 核心隔离
6 热点隔离
7 用户隔离
8 进程隔离
9 线程隔离
10 集群隔离
11 机房隔离
01
02
03
-
指需要实时计算或从数据库中检索的数据,通常由后端服务提供; -
可以通过缓存、数据库优化等方法来提高动态内容的处理速度。
-
指可以直接从文件系统中获取的数据,例如图片、音视频、前端的 CSS、JS 文件等静态资源; -
可以存储到 OSS 并通过 CDN 进行访问加速。
04
-
大部分的系统里读写操作都是不均衡的,写数据可能远远少于读数据; -
读写隔离得以让读服务和写服务独立扩展。
-
负责处理所有的写操作,例如创建、更新和删除数据; -
通常会有一个或多个数据库或数据存储,用于保存系统的数据。
-
负责处理所有的读操作,例如查询和检索数据; -
可以有独立的数据库或数据存储,也可以使用缓存来提高查询的性能。
-
当写服务处理完一个写操作后,通常会发布一个事件,通知读服务数据已经发生变化; -
读服务可以监听这些事件,并更新其数据库或缓存,以保证数据的一致性。
-
通过 CQRS 模式,读服务和写服务可以独立地进行扩展; -
如果系统的读负载较高,可以增加读服务的实例数量;如果写负载较高,可以增加写服务的实例数量。
05
-
核心/非核心故障域的差异隔离(机器资源、依赖资源); -
核心业务可以搭建多集群通过冗余资源来提升吞吐和容灾能力; -
按照服务的核心程度进行分级。 -
1级:系统中最关键的服务,如果出现故障会导致用户或业务产生重大损失; -
2级:对于业务非常重要,如果出现故障会导致用户体验受到影响,但不会导致系统完全无法使用; -
3级:会对用户造成较小的影响,不容易注意或很难发现; -
4级:即使失败,也不会对用户体验造成影响。
06
-
可以帮助微服务系统更高效地处理热点数据的访问请求; -
需要有机制来识别和监控热点数据; -
分析系统的历史访问记录; -
观察系统的监控告警信息等。 -
将访问频次最高的 Top K 数据缓存起来,可以显著减少对后端存储服务的访问压力,同时提高数据访问的速度; -
可以创建一个独立的缓存服务来存储和管理热点数据,实现热点数据的隔离。
07
网关根据 tenant_id 识别出对应的服务实例进行转发
用户服务根据 tenant_id 确定操作哪一个数据库
用户服务根据 tenant_id 确定操作数据库的哪一行记录
08
09
-
如图,接口A 和 接口B 共用相同的线程池,当 接口A 的访问量激增时,接口C 的处理效率就会被影响,进而可能产生雪崩效应; -
使用线程隔离机制,可以将 接口A 和 接口B 做一个很好的隔离。
10
11
-
解决数据容量大、计算和 I/O 密集度高的问题。将不同区域的用户隔离到不同的地区,比如将湖北的数据存储在湖北的服务器,浙江的数据存储在浙江的服务器,这种区域化的数据管理能有效地分散流量和系统负载; -
增强数据安全性和灾难恢复能力。通过在不同地理位置建立服务的完整副本(包括计算服务和数据存储),系统可以实现异地多活或冷备份。这样,即使一个机房因自然灾害或其他紧急情况受损,其他机房仍能维持服务,确保数据安全和业务连续性。
📢📢欢迎加入腾讯云开发者社群,享前沿资讯、大咖干货,找兴趣搭子,交同城好友,更有鹅厂招聘机会、限量周边好礼等你来~
(长按图片立即扫码)
评论