美文网首页编程一生
漫画:SOA中怎样确定服务的粒度?

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

作者: 编程一生 | 来源:发表于2018-06-28 21:09 被阅读3次

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

按模块划分

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

按角色划分

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

核心原则

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

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

松散耦合原则

可复用性原则

服务自治原则

可发现性原则

可组合性原则

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

服务自治

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

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

可发现性

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

服务发现主要有两种:

1.设计时发现(人)

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

2.运行时发现(程序)

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

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

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

相关文章

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

    一般系统的服务划分有以下两种维度: 按模块划分 这个比较适用于偏业务的场景:复杂的系统,最好先按业务领域横向拆分成...

  • 初识SpringCloudAlibaba

    SOA和微服务架构的区别 SOA为粗粒度的服务治理,关注的是服务的重用性和信息孤岛问题 微服务为细粒度的服务治理,...

  • 架构设计读书笔记-微服务架构

    SOA与微服务架构的对比 对比维度SOA微服务服务粒度粗细服务通信重量级,ESB轻量级,如HTTP RESTful...

  • spring cloud开篇

    微服务的概念现在特别火热,以前研究过SOA,但是实际使用中还是出了不少问题,服务粒度过大,业务越来越多的时候会很混...

  • 微服务

    SOA (面向服务的架构) 微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开...

  • 数据中心建设----数据仓库中粒度的确定

    前面已经讲到了数据仓库中的粒度有关概念,但是当我们在具体的实时过程中应该怎样去确定在建数据的粒度呢,书中也给出了一...

  • 数据中心建设--数据仓库中粒度的确定

    前面已经讲到了数据仓库中的粒度有关概念,但是当我们在具体的实时过程中应该怎样去确定在建数据的粒度呢,书中也给出了一...

  • Java开发必读——初识微服务一定要阅读这篇文章

    微服务是什么? 微服务是一种细粒度(Fine-Grain)的SOA 或许在座的高朋了解过其概念。个人认为,与其说微...

  • SOA和微服务的区别

    SOA和微服务都是面向服务的架构。微服务是在soa架构思想上的最佳实践方向。 1.SOA(Service Orie...

  • 对SOA架构和Spring Cloud的思考?

    单体架构-->SOA架构 服务化架构,也可以称之为SOA架构。 SOA架构 --> 变迁到 微服务架构 ESB企...

网友评论

    本文标题:漫画:SOA中怎样确定服务的粒度?

    本文链接:https://www.haomeiwen.com/subject/irbnyftx.html