前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漫画:SOA中怎样确定服务的粒度?

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

作者头像
静儿
发布2018-07-03 15:25:57
5530
发布2018-07-03 15:25:57
举报
文章被收录于专栏:编程一生编程一生

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

按模块划分

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

按角色划分

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

核心原则

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

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

松散耦合原则

可复用性原则

服务自治原则

可发现性原则

可组合性原则

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

服务自治

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

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

可发现性

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

服务发现主要有两种:

1.设计时发现(人)

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

2.运行时发现(程序)

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 按模块划分
  • 按角色划分
  • 核心原则
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档