如何在不同服务中共用一套model层

发布于 2022-09-12 13:03:24 字数 290 浏览 32 评论 0

目前我们有四套系统,两套laravel框架写的,两套hyperf框架写的。共用一个数据库,导致的一个问题就是同一个Model类要在四个服务中写一遍,很是麻烦和繁琐,请问有什么方案可以解决这个问题吗?谢谢。
hyperflaravel都用的是Eloquent ORM。所以兼容问题还是可以解决的。
目前服务运行采用的是k8s+docker的方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

北音执念 2022-09-19 13:03:24

承邀:
使用grpc,swoole建立微服务,将model层放入微服务中。例如 @风中有php做的云 给到你的答案。我没有这样做过,不过可以给你一些思路。

1.新建一个仅有Eloquent ORM的项目。
2.将所有model放入这个项目。这是我们的model微服务,composer+复制粘贴即可完成
3.在你原有的项目中需要实现model本身的方法,ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable
4.最后,使用tcp或者http去通信你的微服务
5.微服务返回model实体
6.这样就无侵入的完成了model统一的需求

这仅仅是我的思路,未经过实践,建议不要使用在生产环境中。

赠意 2022-09-19 13:03:24

MODEL归类的服务独立出去
举个例子 User的Model就是根据用户服务相关的 看能不能抽出一个服务 其他的通过http or rpc调用就好了

无声无音无过去 2022-09-19 13:03:24

正常的服务设计是不应该出现 model 层共用, 一个 model 必然属于一个服务,外部只能通过服务提供的服务接口来调用.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文