第十周 - 学习总结
微服务
微服务架构落地
业务先行,先理顺业务边界和依赖,技术是手段而不是目的;
先有独立的模块,后有分布式的服务;
业务耦合严重,逻辑复杂多变的系统进行微服务重构要谨慎;
要搞清楚实施微服务的目的是什么,业务复用?开发边界清晰?分布式集群提升性能?
微服务最佳实践
命令与查询职责隔离(CQRS)
在服务接口层面将查询(读操作)与命令(写操作)隔离,实现服务层的读写分离:
更清晰的领域模型;
针对读写分别优化,实现更好的性能;
查询服务不会修改数据,更好地保护数据。
事件溯源
将用户请求处理过程中的每次状态变化都记录到事件日志中,并按时间序列进行持久化存储:
利用事件溯源,可以精确复现任何用户状态,进行复核审计;
利用事件溯源,可以有效监控用户状态变化,并在此基础上实现分布式事务。
断路器
当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用。
断路器三种状态:关闭、打开、半开。
服务重试及调用超时
上游调用者超时时间要大于下游调用者超时时间之和。
最重要的是需求
Needs(需求) - 要知道需求是什么;
Values(价值)- 有了需求看这种架构、方案能不能带来价值;
Principles(原则)- 应该遵循什么样的原则使用这种技术方案;
Practices(最佳实践)- 看使用这些技术的最佳实践都有哪些;
Tools(工具)- 使用这种技术或这种架构方案具体选型使用哪种工具。
评论