数据层是否可以独立为RPC?

假设有多个应用,调用同一套Models数据,多个应用都需要各自实现数据访问层方法,有大量的重复代码,所以想是否可以将这部分代码独立为RPC,这样不管是模型声明还是方法只需要实现一次,各个应用通过调用RPC实现数据读写。

实践中这样是否可行?

阅读 2.9k
4 个回答

从道理上来说是可行的,最近我针对用户部分就做了一套类似的东西,用k8s部署在同一套内网损耗不了多少性能。

但是用golang的话,且都是用的同一套数据库或者说数据库、表结构一致,可以作为一个 pkg 不同项目引入进来就行了,使用起来更方便,然后统一维护这套 pkg 就行了,不需要搞得那么复杂。

然后以我的经验来说一下用RPC做数据层的场景:

  1. 控制不同应用拿到的数据不同,可以放到 RPC 里统一做控制。
  2. 底层数据库部分对于实际应用访问来说,不能完全暴露,只有后台才可以访问全部数据,那么基于这种情况考虑可以独立成 RPC 调用,并把这一层的数据库独立出来专门用这套服务来做管理。

把数据层提升为数据服务是可行的,但肯定会牺牲性能(相比代码复用),好处是减少了维护成本;

当然可以,将数据访问层实现为RPC是一种可行的方案,可以让多个应用共享同一份代码,避免冗余实现。但是需要注意的是,RPC调用会带来额外的性能开销,需要根据实际情况综合考虑,选择适当的方案。同时,还需要确保RPC服务的高可用性、稳定性和安全性,这也需要付出一定的努力。

答案引用AI生成内容,并进行了验证
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏