微服务设计笔记(3)——服务建模
发布日期:2021-06-29 21:14:23 浏览次数:3 分类:技术文章

本文共 815 字,大约阅读时间需要 2 分钟。

1 好服务的特征

1.1 松耦合

松耦合指的是,修改一个服务,而另一个相关的服务,不需要修改。微服务的重要特点就是:能够独立修改和部署单个服务,而不会影响、甚至修改系统中的其它服务。

一个服务应该尽可能少地了解与之协作的服务信息。因为过度了解,会导致紧耦合。

1.2 高内聚

高内聚指的是,把相关的行为聚集在一起。这样,需要改变行为时,只需要在一处修改,然后独立发布。

我们需要做的是,找出业务领域的边界,然后实现高内聚。

2 服务边界

一个服务,分为两部分。一部分需要与外部通信,另一部分则不需要。就好像细胞,细胞膜定义了细胞的边界,并因此确定了什么在细胞内,什么在细胞外,以及什么物质可以通过细胞膜。

假设某家公司,拥有财务部门与仓库部门。这些部门都有明确的对外接口,比如仓库部门需要输出存货报告,而财务部门需要输出工资单等等。它们也有只有它们自己知道的细节,比如仓库部门内的铲车数量、财务部门的总账计算公式。

因此,这两个部门之间需要共享一个“库存信息”模型,进行数据交换。

微服务设计应该与构建的模型保持一致。如果搞错了服务边界,修复的代价是很大的。所以,我们可以等系统变得稳定之后,再确定需要把哪些内容作为服务划分出去。

把一套已有代码的系统划分为各个微服务,比从头开始构建微服务要简单得多。

3 逐步划分

一开始,我们会首先识别出一个粒度比较粗的服务模型。比如我们把仓库分为处理订单、接收货物、管理库存。而财务会根据目前的状况,通过微服务的形式来影响库存等级:

也可以去除仓库边界,把这些模块都作为微服务:

我们要根据组织的实际情况,来选择划分的方法。如果处理订单、接收货物、管理库存,是由不同的团队来提供服务,那么建议把它们都划分为微服务;如果它们都是由一个团队来负责的,那么建议加上仓库边界,统一对外提供服务。这种方式可以很方便地打包测试,而且只需要测试一个服务。

建议按照地理位置或组织结构,对系统进行合理划分。

转载地址:https://deniro.blog.csdn.net/article/details/98469440 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说 Cookie 的 HttpOnly 属性
下一篇:微服务设计笔记(2)——从架构师角度来看待微服务

发表评论

最新留言

很好
[***.229.124.182]2024年04月08日 16时47分24秒