漫画:SOA中怎样确定服务的粒度?

一般系统的服务划分有以下两种维度:

按模块划分

这个比较适用于偏业务的场景:复杂的系统,最好先按业务领域横向拆分成可独立部署的子系统,每个子系统内部再按技术纵向拆分成不同的子模块。

按角色划分

这个比较适用于基础服务类的场景:一个大系统,每个服务看起来关联都很紧密,存在相互的调用关系。这时候可以考虑它们各自承担的角色和使命。

核心原则

单一职责:能不能用一句话说清楚这个服务的职责?非要分成两句话,那就分成两个服务。

在核心原则的基础上,符合下面的原则是一个比较好的实践:

松散耦合原则

可复用性原则

服务自治原则

可发现性原则

可组合性原则

    服务自治、可发现性相对难理解一些,展开一下。

服务自治

当一个服务的逻辑单元由自身的领域边界内所控制,不受其他外界条件的影响(外界条件带有不可预测性),且运行环境是自身可控,完全自给自足,我们认为这个服务是自治的。

自治的服务自身可以很好的对稳定性做把控。

可发现性

因为服务是被用来复用的,如果在服务设计过程中,并不能发现一个已经存在的服务,而需要重新建立多个同样逻辑元旦的服务,会极大增加管理和维护成本。

服务发现主要有两种:

1.设计时发现(人)

服务设计人员和研发人员在研发一个新的服务时,可以通过搜索服务仓库的元数据信息,查看服务仓库是否已存在此服务,没有才重新开发。

2.运行时发现(程序)

服务的消费者可以通过服务注册中心查到特定服务的接口调用地址调用。

要根据系统的规模和人员配置情况。

比如如果系统一个系统的日活跃用户在万级和千万级,粒度肯定是不一样的。同样,基于系统规模带来的产出,那么开发人员数量也会相应不同。比较好的一个实践是一个人独立负责一个到两个服务。多人维护一个服务,交互成本非常高。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

不是云计算嫁衣 你应该了解的虚拟化知识

云计算的发展,让虚拟化技术也逐渐被人熟知,那么云计算和虚拟化有何关系呢? 下面让我们来看下: 说到虚拟化,一般是指将物理的实体,通过软件模式,形成若干虚拟存在的...

3567
来自专栏JAVA技术zhai

看阿里首席架构师是如何选择并落地架构方案的

如何针对当前需求,选择合适的应用架构,如何面向未来,保证架构平滑过渡,这个是软件开发者,特别是架构师,都需要深入思考的问题。

3539
来自专栏EAWorld

微服务模式系列之十:共享数据库

译者自序: 熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。但是这次不一样,公司和同事的大力支持降低了我...

2785
来自专栏CDA数据分析师

译文|数据建模有新招!

本文由CDA数据分析研究院翻译,译者:王晨光,转载必须获得本站、原作者、译者的同意,拒绝任何不表明译者及来源的转载! 在过去的三十年,ERP,CRM和Analy...

1836
来自专栏大数据

适合初学者的软件定义数据中心架构

软件定义数据中心是一种数据管理方式,它通过虚拟化来抽象计算、存储和网络资源,并将其作为服务提供。为了促进这一过程,SDDC包括智能软件以集中管理虚拟化资源,并自...

1797
来自专栏SDNLAB

适合初学者的软件定义数据中心(SDDC)架构

软件定义数据中心是一种数据管理方式,它通过虚拟化来抽象计算、存储和网络资源,并将其作为服务提供。为了促进这一过程,SDDC包括智能软件以集中管理虚拟化资源,并自...

3428
来自专栏小勇DW3

Spring Boot应用总结更新

SpringBoot的产生背景伴随着微服务,微服务的相关概念参考上一篇的博客,分布式架构理论;

842
来自专栏程序员互动联盟

程序员必看的十部电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如,大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之酷,甚至反过来能帮助我...

3315
来自专栏云原生架构实践

云平台架构实践中的微服务分解原则

933
来自专栏程序人生 阅读快乐

高性能MySQL(第3版)

《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关...

462

扫码关注云+社区