week10- 根据当周学习情况,完成一篇学习总结
一、微服务:服务本身的设计、维护以及治理
1、单体系统架构:
缺点;编译、部署困难;代码分支管理困难;数据库连接耗尽;新增业务困难;
2、解决方案就是拆分,将模块独立部署,降低系统耦合性;
横向拆分(将复用的业务拆分出来);纵向拆分(将一个大应用拆分为多个小应用);
3、webservice 与企业级分布式服务;
缺点:臃肿的注册与发现机制;低效的 xml 序列化手段;开销相对较高的 HTTP 远程通信;复杂的部署与维护手段;
4、微服务框架需求;负载均衡、失效转移、高校的远程通信(二进制、长连接)、对应用最少侵入、版本管理、
5、微服务框架(Dubbo)架构;
二、微服务:落地实践的策略与思路
1、Service Mesh 服务网格;
2、Service Mesh 的 Sider 模式;
3、微服务落地落地;
3.1、业务先行,先理顺业务边界和依赖,技术是手段而不是目的;
3.2、先有独立的模块,后有分布式的服务;
3.3、业务耦合严重,逻辑复杂多变的系统进行服务重构要谨慎;--->业务重构、模块重构;现实准备;
3.4、要搞清楚实施微服务的目的是什么,业务复用?开发边界清晰?分布式集群提升性能?
4、命令与查询职责隔离(CQRS);
4.1、更清晰的领域模型;
4.2、针对读写分别优化,实现更好的性能;
4.3、查询服务不会修改数据,更好地保护数据;
5、事件溯源
5.1、利用事件溯源,可以精确复现任何用户状态,进行复核审计;
5.2、利用事件溯源,可以有效监控用户状态变化,并在此基础上实现分布式事务;
6、断路器;关闭、打开、半开;
7、服务充实及调用超时;
8、最重要的是需求;需求/目标--->价值--->原则--->最佳实践---->工具;
三、微服务网关的技术架构
1、基于网关的微服务架构;
2、网关的作用;统一接入、安全防护,流量管控;协议转换;
3、微服务网关;
4、网关管道技术;职责:各种校验与拦截;实现技术:责任链设计模式;
5、Flower 异步网关与异步微服务框架;利用 Servlet3 实现异步网关;
6、开放平台网关;
7、开放授权协议 OAuth2.0;
8、授权码授权;
四、领域驱动设计 DDD
1、边界、功能
2、为什么需要 DDD;用户或者产品经理的需求零零散散,不断变更;
3、事务脚本;这个业务场景是:
4、领域模型,业务对象承担自己的职责;
5、贫血模型 VS 充血模型;
6、DDD 战略设计和战术设计;界面驱动,业务驱动,数据库驱动;
DDD 概念:子域、限界上下文、上下文映射图、实体、值对象、聚合(关联对象)
构建成系统:DDD 分层架构;
7、DDD 六边形架构;
五、软件组件设计原则
1、在没有编程语言的时候就已经有了软件组件;
2、软件的复杂度和它的规模成指数关系;
3、组件内聚原则;
3.1、复用发布等同原则;
3.2、共同封闭原则;
3.3、共同复用原则;
4、组件耦合原则;依赖关系
4.1、无循环依赖原则;
4.2、稳定依赖原则;
4.3、稳定抽象原则;
5、组件的边界与依赖关系,不仅仅是技术问题;
六、案例:用领域驱动设计驱动系统架构
评论