基于微服务系统的层次结构

一、引言

   将一个复杂的系统分成几个相对独立的且相互协调的微服务来开发、部署、运维、维护,相对于单体式应用有着巨大的优势,但如果层次划分不清,无序访问数据,不但不会发挥这些优势,反而让系统更加复杂

二、层次结构说明

      

有关微服务的优点和缺点有非常多的讨论,这里讨论一下基于微服务系统的层次架构。


基于微服务系统的层次结构

如上图所示,整个系统分为三层:表现层,API网关层,业务逻辑层。

1、表现层:负责和用户进行交互, 包括WEB页面、APP页面、供第三方调用的接口等。

2、API网关层:它是系统的统一入口,外部通过统一的API网关接入微服务,同时处理一些非业务功能,如监控,负载均衡,流量控制,身份认证等。

3、业务逻辑层:负责实现业务规则,是系统核心部分,这一层又划分成基础服务层和聚合服务层两个子层。

  1)基础微服务层:负责实现本业务模块的业务规则,一般是通过操作业务数据集来实现单一的业务规则。

2)聚合微服务层:负责实现跨业务模块的复杂的业务规则,他需要两个或两个以上的基础服务共同来完成一个复杂的业务规则。本层涉及到二个及以上的基础微服务的组合,所以这一层要处理跨数据集的事务。

在表现层或API网关层也可能存在微服务的架构,这里不做讨论。

三、业务逻辑数据集的独立和隔离

       数据集是数据的集合,集合的元素是关系数据库或关系数据库中的表,NOSQL数据库或NOSQL数据库中的表,内存数据库等。例如数据库中的几个表可以组成一个数据集,几个数据库可以组成一个数据集,几个关系数据库和几个非关系数据库可以组成一个数据集等。

      数据在一个系统中有着举足轻重的作用,数据的混乱必然会导致系统的混乱,牵一发动全身,很难维护,很难扩展。在基于微服务的系统中如果数据出现混乱,不但不会发挥微服务的优点,反而比单体应用更混乱,难维护,更难扩展。

微服务中“微”需要通过数据的“微”来实现,业务模块之间的“独立和隔离”体现在业务数据集之间的“独立和隔离”。

我们把系统中业务逻辑层数据集分为业务数据集和公共数据集两类。业务数据集中存放业务数据;公共数据集中存放支撑业务的非业务数据,它供一个或多个基础服务访问,这类数据的特点是一般数据量不大,而且相对稳定,几乎不修改或很少修改。

所谓“独立和隔离”就是要做到基础微服务不能交叉访问数据集。定义如下:

      假设系统划分成n个基础微服务A={A_1,…, A_n};根据基础服务将数据划分成m个业务数据集D={D_1,…,D_m},其中n大于等于m,如果满足以下三个条件就则可认为微服务是“独立和隔离”的:

1) 任意基础微服务A_i,至多访问一个业务数据集D_j,即不能访问两个或两个以上的数据集;

2) 任意两个业务数据集D_i,D_j,D_i和D_j交集为空。

3)如果一个数据集存在多个基础微服务访问,其中一个是主基础微服务,其他的是主基础微服务的补充或扩展。

 我们应该按照数据集“独立和隔离”的原则,保持微服务相对独立性。




  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值