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

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

按模块划分

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

按角色划分

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

核心原则

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

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

松散耦合原则

可复用性原则

服务自治原则

可发现性原则

可组合性原则

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

服务自治

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

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

可发现性

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

服务发现主要有两种:

1.设计时发现(人)

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

2.运行时发现(程序)

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯大讲堂的专栏

王者荣耀、NBA突发支撑

2317
来自专栏云计算D1net

如何保护混合云安全:IT专家需要知道的内容

1297
来自专栏云计算D1net

克服云性能问题小贴士

糟糕的性能会对公有、私有和混合云造成毁灭性的影响。使用这些快速技巧解决云应用,API等相关的性能问题。 ? 无论是公有,私有还是混合云,都有许多移动的组件,而让...

3148
来自专栏资深Tester

有关测试流程中的问题

最近在带一个学生,是一个超级认真、努力的学生,布置的作业和学习点都会认真去完成,我能感受到他是在尽心尽力地去做好,从提出的问题中就能看到这个变化,由以前的很外行...

1093
来自专栏云计算D1net

API如何开启IT基础设施的未来

企业一直在寻找新的方法来提高效率,降低成本的同时保持其产品和服务的质量。云计算的重要组成部分API被IT部门和服务供应商越来越看好(应用程序编程接口),其使工作...

34113
来自专栏云计算D1net

混合云计算部署的三个要求

如今,许多IT专业人员倾向于采用混合云方法,让企业的不同工作负载在内部部署数据中心或在公共云中这样彼此独立的情况下运行。然而,对于大多数企业来说,采用更多的是混...

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

《面向模式的软件体系结构 卷2:用于并发和网络化对象的模式》

中间件是Web服务、分布式对象、协同应用程序、电子商务系统以及其他重要平台的基础。开发并发与联网中间件和应用程序过程中面临的关键问题有服务访问与配置、时间处理、...

771
来自专栏腾讯大讲堂的专栏

社区产品消息提醒重要吗?

适时适当的消息提醒对社区产品来说也是很重要的一个环节,这个得从豌豆荚的产品经理Lebanner在知乎上对于移动社区和传统互联网社区的对比分析说起。 ? 总结说来...

1837
来自专栏云计算D1net

混合云的性能管理状态

混合云的性能管理 如今,IT管理员在如何运行关键业务的工作负载方面比以往任何时候都有着更多的选择。其中包括物理,虚拟,本地,云计算,或一些组合。这就是为什么找...

3165
来自专栏frankzheng的专栏

浅谈系统架构的几个方面

今天心血来潮,突然想起以前对于架构设计的理解,也是多年来总结的一个结果,分享给大家,欢迎拍砖!

1694

扫码关注云+社区