聊聊admin服务的架构模式

2023-09-14  本文已影响0人  go4it

本文主要研究一下admin服务的几种架构模式

分类

一般而言,一个服务提供的接口有的是C端用的,有的是给B端用的,还有的是给admin用的,对于admin服务该不该访问业务服务的数据库,这里通常会有很多分歧和实践模式。这里给admin服务的定义就是给admin后台系统的前端提供http接口的服务。

模式1: admin服务不能访问业务数据库

按微服模式的话,每个业务微服务都有独立的数据库,因而admin服务是不能访问业务微服务的数据库的,它只能是通过rpc的形式去编排和组装数据给到admin前端,具体示意如下:


admin micro arch r1.png

模式2: admin服务访问业务数据库

这种模式的话,赋予了admin服务访问业务数据库的权限,其整体架构模式变成如下:


admin micro w1.png

关于这种方式,有几种实现形式:

admin服务形式

不管是模式1还是模式2,这里的admin服务可能有几种形式

模式1的形式2


admin micro r2.png

模式2的形式2


admin micro w2.png

在不是太复杂的业务场景或者是团队规模不大的场景,形式1是用的比较多的方式;而在比较复杂的业务以及大规模的团队里头,一般是形式2的方式,这样子可以避免多个团队的人在同一个工程去修改代码

点评

模式1和模式2在很多公司里头都有用

模式1优缺点

若admin服务形式2的方式,由每个领域服务自己提供admin接口,那么数据库访问就相对可用了,还会有问题吗?

模式2优缺点

小结

模式1主要是从微服务开发的角度去考虑的,考虑领域逻辑闭环;模式2从服务部署及稳定性的角度去考虑的,是没错,但是具体做法有些会破坏微服务开发的原则,特别是service共用这种方式,假设是dao共享也是把数据库修改的权力扩散出去了,如果是每个微服务独立一个admin服务这种形式,影响还相对小一点,但是也存在领域逻辑可能扩散的问题,不好在同一地方维护,相当于得维护领域服务,还得维护领域admin服务的逻辑。

有没有更好的方式呢,综合模式1和模式2,有的,模式1和2的出发点都对,只是模式2的实现方式有点问题,我们期望的是领域逻辑闭环,而不同场景下领域服务能够隔离,其实模式2应该从部署层面去解决问题,而不是在微服务架构上去处理,也就是说其实我们可以对同一个微服务做不同场景的隔离部署,就解决问题了,比如对于C端、admin端的都是同一个领域服务提供能力,他们分开部署,也就解决了稳定性和隔离的问题,而代码层面,领域层面的能力是统一的。

上一篇 下一篇

猜你喜欢

热点阅读