架构师训练营 week10 summary
微服务框架需求
失效转移
负载均衡
高效的远程通讯
对应用的最小入侵
版本管理
Service Mesh网络服务
微服务架构落地
业务先行,先理清业务边界和依赖,技术是手段而不是目的
先有独立模块,后有分布式的服务
业务耦合严重,逻辑复杂多变的系统进行微服务重构要谨慎
搞清楚实施微服务的目的是什么
命令与查询职责隔离(CQRS):在服务接口层面将查询和命令隔离,实现服务层的读写分离
更清晰的领域模型
针对读写分别优化,实现更好的性能
查询服务不会修改数据,更好的保护数据
事件溯源:将用户请求的每次状态变化记录持久化
精确复现任何用户的状态,进行复核审计
有效监控用户状态变化,并以此实现分布式事
微服务网关
统一接入:高性能、高并发、高可靠、负载均衡
协议适配:http、dubbo、jsf
流量管控与容错:限流、降级、熔断
安全防护:校验拦截、防刷控制、黑白名单
开发平台网关
开放授权协议OAuth2.0:授权码、隐式授权、资源所有者密码、凭据与客户端凭据.互联网常用授权码
审计(日志、计费)
DDD总结:
经过多年发展依然落地困难,但在设计中我们仍然可以在战略设计上采用DDD思想,理清模块职责边界
资深程序员真正的优势是他在一个业务领域的多年积累而不是CRUD,对业务领域有更深刻的理解和认知。
把握好领域模型在不断的需求变更中的演进,是系统保持更好的活力,并以此实现自己真正的价值
组件设计原则
软件复杂度和它的规模成指数关系
组件内聚原则:讨论组件内应该包含哪些功能和类,以便提供相对完整的功能,又不至于太过庞大
复用发布原则:软件复用的最小粒度应该等于其发布的最小粒度。
共同封闭原则:将那些会同时修改、并且为了相同目的而修改的类放到同一个组件
共同复用原则:不要强迫一个组件的用户依赖他们不需要的东西
组件耦合:讨论组件间的耦合关系应该如何设计
无限循环依赖原则:避免循环依赖
稳定依赖原则:组件依赖必须指向更稳定的方向,不稳定的组件应该依赖于稳定的组件
稳定抽象原则:一个组件的抽象化程度应该与其稳定性程度一致,一个稳定的组件应该是抽象的,而不稳定的组件是具体的
组件的边界与依赖关系,不仅仅是技术问题:要考虑人、部门、政治问题
评论