SOA服务粒度拆分原则研究

对于SOA服务的拆分粒度,从服务拆分总体原则上来讲应该还是高内聚、低耦合为主。SOA服务拆分讲究最大程度的重用。

1. 粗粒度优行原则,由服务提供方提供粗粒度的业务服务,封装数据及数据处理逻辑,屏蔽数据及业务规则,降低耦合度,提供更多业务价值;

2. 重用拆分原则,若粗粒度服务不能满足重用需求,则拆分粗粒度服务,以增加重用;

3. 性能拆分原则,若粗粒度服务性能达不到性能需求,则适当拆分服务,以满足性能需求;

4. 安全性控制拆分原则,若粗粒度服务所包含的所有处理不在同一个安全级别上,为满足安全性需求拆分服务形成细粒度服务;

以下举一个示例来说明SOA服务拆分控制原则:

1) 首先,按照粗粒度优先原则,识别1个业务服务,由提供方接收输入,通过此服务完成所有3步操作后返回结果,对外屏蔽所有细节;

2) 按重用拆分原则:若存在两个业务系统,第一个系统希望得到所有3步操作结果,第二个系统仅需要得到第1步操作结果,根据重用性拆分原则,识别为3个服务,以增加重用性;

3) 性能拆分原则:若外部系统要求所有3步操作处理完成在50毫秒内完成,识别为一个业务系统无法满足时,可识别为3个服务,通过部署到不同的服务器上以满足性能需求;

4) 安全性拆分原则:若第1步操作所需的安全级别较高,第2、3步操作所需的安全级别较低时,可以识别为3个服务。

SOA的服务拆分建立在已有系统的基础上,不打破原有系统的整体架构,在接口集成时做的接口服务粒度的拆分,SOA架构通过对已有业务或系统的梳理来发现可提供复用的系统组件或功能,并统一通过Webservice来暴露接口。而目前流行的微服务架构的微服务组件的拆分则是将现有系统和业务重构,按照微服务的设计思路,将业务或系统打散成单个微服务组件,并基于微服务组件进行集成和组装编排,来生成全新的单体应用。

这里我们也简单来谈一下微服务组件的拆分原则,微服务组件的拆分讲究的是小、专注做一件事情:

1. 满足单一职责原则;

2. 运行在独立的进程中;

3. 轻量级的通信机制;

4. 松耦合,独立部署;

5. 康威定律:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。

可以看到,对于微服务组件拆分粒度应该是尽可能的拆小,但也不应该过分追求细粒度,要考虑适中不能过大或过小。按照单一职责原则和康威定律,在业务域、团队还有技术上平衡粒度。拆分后的代码应该是易控制,易维护的,业务职责也是明确单一的。

从以上对比我们可以看到,SOA架构实施比较容易,能最大程度利用以前的系统,并发掘可被利用的组件和功能。而微服务架构的实施就显得困难很多,等于是对组织和系统的一次大的重构。因此我们建议在微服务实施之前,先实施SOA架构,然后通过微服务的试点,逐步将SOA架构拆分的组件迁移成微服务组件,从风险和投资角度,这都是一个明智的选择。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180105G0BNIP00?refer=cp_1026

相关快讯

扫码关注云+社区