Week10 总结
微服务架构设计
单体服务存在的问题
部署困难
代码分支管理困难
数据库资源耗尽
新增业务困难
解决方案
服务拆分,将业务拆分成职责单一的子服务独立部署。
微服务框架
解决微服务落地的问题:
服务注册与发现、服务调用
失效转移
负载均衡:微服务网关
高效的远程通信:服务网格
对应用侵入最小
版本管理
微服务架构落地
业务先行,先要用理顺业务的边界和依赖,并进行合理拆分;
技术只是手段,先理清要解决的问题及实现的目的,再着手微服务设计和实施。
领域驱动设计
解决的问题
只有需求分析,没有真正的设计,系统没有一个完整的领域模型维持其内在逻辑的一致性;
功能特性的迭代没有内在逻辑进行设计;
设计方法论
领域包含系统的一切对象;
从领域出发,分析领域内模型及其关系;
领域包含的东西过多,需要拆分成子域;
子域的拆分需要根据业务的边界进行;
理清子域间交互的上下文;
设计实体:实体对象指代什么数据,其包含的属性、方法、功能,相当于模块或类的设计;
值对象:推荐使用将对象设计为值对象,对象的值改变,对象就跟着改变;如订单可能经过创建、待支付、已支付、待发贷、已发货、签收等状态;
聚合:通过关系实体对象,对外暴露操作接口的集合;
启发与收获
程序员应该要在开发中积累领域模型设计的经验,加深对其的理解,把握好领域模型在不断演进的需求变更中使系统保持活力的方法,这样才能体现自己的价值。
评论