同一个业务,有用于 app/web 的服务 A ,用于管理后台的服务 B ,用于运营后台的服务 C 。
这三个作为单独的服务运行。
那么代码是拆分为三个代码仓库,还是同一个代码仓库,然后内部分模块,共用 DAO 层,Service 层,比如:
还是说这三个没必要作为单独的服务存在,直接在一个服务中就行。
各位大佬是如何考虑的
1
SorcererXW 2021-11-03 09:27:20 +08:00
1. 一个服务连接数据库,暴露 RPC 给上游服务(前端接口、管理后台)调用
2. 同一套代码,通过环境变量控制开启哪些功能、接口 |
2
yidinghe 2021-11-03 09:34:31 +08:00 via Android
那你就不能用缓存了。如果 A 缓存了记录但是 B 改了的话,A 是不知道的。
|
3
XTTX 2021-11-03 09:38:06 +08:00
好奇你准备怎么解决 race condition.
|
4
feitxue 2021-11-03 09:53:46 +08:00
单独两个项目,一个暴露前端的接口.一个内部使用的管理后台.
业务都比较简单,管理平台只负责开个账号,看个报表什么的. 这是目前我维护一个老项目.这样玩儿.问题不大.毕竟目前实际用户不到 20 个. 业务复杂的话,并且访问量大,管理端功能也复杂的话,不建议这样玩儿. |
5
meeop 2021-11-03 10:40:30 +08:00
怎么分都行,关键点在于数据库连接和使用的代码,表定义的代码是共享的,具体调用点分布在多少个项目都行
|
6
xuanbg 2021-11-03 10:47:10 +08:00
3 个项目,3 个仓库。
|
7
sujin190 2021-11-03 10:52:24 +08:00
建议别这么拆,建立把能独立单独做 rpc 服务提供接口统一调用,比如下单、退换货、退款管理等等,其它的各自搞各自的,搞个统一的 dao 层啥的在 web 上需要经常调整需求的用处不大,而且很快你就会发现几个调用方重合度完全没想的那么高,然后又各种不注意的相互依赖慢慢出来了,最后完全失去了一开始分模块项目的目的,完全一堆大杂烩
|
8
Huelse 2021-11-03 11:02:02 +08:00
请教下多个服务访问多个数据一致的数据库怎么解决,只能同步吗?或者是增加中间层?
|
9
duduaba 2021-11-03 20:10:53 +08:00
想怎么拆都可以,因为拆或不拆下个人接手也是骂人。。。
|
10
yangzzzzzz 2021-11-04 11:36:52 +08:00
我觉得还是根据业务拆开比较好。
|