10.2 微服务:落地实践的策略与思路
1.Service Mesh 服务网格
Service Mesh 是一个基础设施层,用于处理服务间的通信,通常表现为一组轻量级网络代理,他们与应用程序部署在一起,而对应用程序透明。
适用场景:大规模服务,复杂网络拓扑结构。
2.微服务架构落地
业务先行,先理顺业务边界和依赖,技术是手段而不是目的。
现有独立的模块,后又分布式的服务。
业务耦合严重,逻辑复杂多变的系统进行微服务重构要谨慎。
要搞清楚微服务的目的是什么,业务复用?开发边界清晰?分布式集群提升性能?
3.命令与查询职责隔离(CQRS)
在服务接口层面将查询(读操作)与命令(写操作)隔离,实现服务层的读写分离。
CQRS:Command-Query Responsbility Seprate(读写职责分离)
更清晰的领域模型
针对读写分别优化,实现更好的性能
查询服务不会修改数据,更好的保护数据。
4.事件溯源
将用户请求处理过程中的每次状态变化都记录到事件日志中,并按照时间序列进行持久化存储。
利用事件溯源,可以精确复现任何用户状态,进行复核审计。
使用事件溯源,可以有效监控用户状态变化,并在此基础上实现分布式事务。
5.断路器
当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求阻塞,资源消耗增加,进而出现服务及联失效,这种情况下使用断路器阻断对故障服务的调用。
断路器的三种状态:关闭,打开,半开。
6.服务重试及调用超时
上游调用者超时时间要大于下游调用者超时时间之和。
7.最重要的是需求
实践落地的指导思想:先知道需要什么,再选择工具。
架构师工作思路:先知道需求,在选择工具。
技术选型,遵照这种方法进行思考。先知道需求(想要什么)==>价值==>指导规则==>最佳实践==>框架工具
微服务:
业务驱动技术。
评论