微服务基本介绍【学习笔记】

#### 微服务的优势
1. 快速迭代
2. 逻辑清晰
3. 多语言组合
#### 微服务与DDD
- 领域驱动设计(Domain Driven Design,简称ddd)
- - 合理拆分,进行微服务
- - ddd 的作用(总结:真正决定软件复杂性的是设计方法,而不是技术复杂。)
- - - 有助于指导我们确定系统边界
- - - 能够聚焦在系统的核心元素上
- - - 帮助我们拆分系统
- - ddd的常用概念
- - - 领域:==领域是有范围界限的,也可以说是有边界的==(比如做一个电商项目,电商领域:分为商品子域,订单子域,销售子域,短信子域,用户子域)
- - - - 核心域:核心域是业务系统的核心价值(销售子域就是核心子域)
- - - - 通用子域:所有子域的消费者,提供着通用服务。(通用子域,是 短信,邮件子域)
- - - - 支撑子域:专注业务系统的某一重要的业务(支撑子域就是除去核心子域的划分的模块就是支撑子域)
- - - 界限上下文
- - - - 理解:语文中的语境的意思
- - - - 方式:领域+界限上下文
- - - - 目的:==不在于如何划分界限,而是在于如何控制界限==。
- - - 领域模型
- - - - 理解:==领域模型是对我们软件系统中要解决问题的抽象表达。(比如你要解决什么问题,把它抽象出来)
- - - - 领域:==反应的是我们业务上需要解决的问题。
- 还有一个定律:康威定律 (Conway`s Law)
- - 组织架构和微服务拆分的模块对应。(优势避免沟通的成本逐步增加)
- - ddd域微服务四层架构
- - - 接口Inferface:用户的界面层
- - - 应用层Application:协调工作,如何接受用户,如何分配工作和合作
- - - 领域层Domain:实现业务规则,业务的状态和业务的信息。
- - - 基础设施层Infrastructure:基础设施比如,mysql redis 中间件 云设施 elasticsearch docker等。 ![image](http://note.youdao.com/yws/res/13999/D87EC1C270C74944943EB86DAC9722FE)
- - - - 四层再微服务里面再次拆分,如下图
![image](http://note.youdao.com/yws/res/14002/713A6FA639D942AB8FAADCEE34821435)
- - 微服务的设计原则
- - - 要领域驱动设计,而不是数据驱动设计,也不是界面驱动设计。
- - - - 数据驱动设计:系统拆分模块,第一通常做的是设计数据库和表和字段,(缺点后期维护加表拆表,假表字段),比较常用的设计。
- - - - 界面驱动设计:界面缺什么设计什么。
- - - 要边界清晰的微服务,而不是泥球小单体。(比如,==这个服务该做什么,不该做什么。注意控制边界==。订单模块放在用户模块里面,虽然方便,但是边界不清晰)
- - - 要职能清晰的分层,而不是什么放在大萝筐。(在模块里面进行分层,比如接口层,应用层,逻辑处理层 db层。一定要清晰分层)
- - - 要做自己能hold住的微服务,而不是过度拆分微服务。(服务尽可能少的拆分微服务,根据公司现状和人力进行拆分,因为拆分微服务过多会造成维护成本和测试定位问题的成本以指数进行上升。)

博客www.z88j.com

原创文章,作者:星辰,如若转载,请注明出处:https://www.z88j.com/101.html

(25)
打赏 微信扫一扫 微信扫一扫
上一篇 2020年12月2日 上午1:20
下一篇 2020年12月10日 下午8:51

相关推荐

发表回复

登录后才能评论

Warning: error_log(/www/wwwroot/www.z88j.com/wp-content/plugins/spider-analyser/#log/log-2921.txt): failed to open stream: No such file or directory in /www/wwwroot/www.z88j.com/wp-content/plugins/spider-analyser/spider.class.php on line 2900