架构师训练营 week10 - 学习总结
一、单体架构存在的问题
1、编译、部署困难
大的单体应用在部署和构建的时候,非常耗时,每次修改代码,build时间都非常长。如果一旦编译失败,又得重新来一次,整个过程非常耗时
2、代码分支管理困难
复用代码模块由多个团队共同维护修改,代码merge的时候总会发生冲突。发布merge等问题导致发版日工作到凌晨。
3、数据库连接耗尽
大规模的服务集群将需要在数据库上创建数千个连接,数据库服务器上,每个连接都会占用一些昂贵的系统资源,以至于数据库缺乏足够的系统资源进行一般的数据库操作,到时数据库查询访问响应慢,或者无法对外提供服务。
4、新增业务困难
增加新业务,维护旧功能,非常困难,导致员工加班加点赶新需求,经常出故障,新产品迟迟不能上线
二、微服务架构的技术点
服务的注册与发现、身份验证与授权、服务的伸缩控制、反向代理与负载均衡、路由控制、流量切换、日志管理、性能度量监控和优化、分布式跟踪、过载保护、服务降级、服务部署与版本升级策略支持、异常处理。关键点如下图:
三、领域驱动设计DDD
领域模型:(就是面向对象)
按照面向对象的思维设计类,每个类中有成员变量和方法,自己对自己进行计算。
贫血模型:
Service, Dao这些对象只有方法,没有数值成员变量,而方法调用时传递的数值对象,没有方法。
充血模型:
领域模型是合并了行为和数据的领域的对象模型。通过领域模型对象的交互完成业务逻辑的实现。设计好了领域模型对象,也就设计好了业务逻辑实现。
领域是一个组织所做的事情以及其所包含的一切, 通常做法是把整个领域拆分成多个子域。DDD就是从领域模型出发,分析领域内模型及其关系,进而进行软件设计的方法。
DDD战略设计:领域,子域,界限上下文,上下文映射图。
DDD战术设计:实体,值对象,聚合 etc.
评论