如何在不同服务中共用一套model层
目前我们有四套系统,两套laravel
框架写的,两套hyperf
框架写的。共用一个数据库,导致的一个问题就是同一个Model
类要在四个服务中写一遍,很是麻烦和繁琐,请问有什么方案可以解决这个问题吗?谢谢。hyperf
和laravel
都用的是Eloquent ORM
。所以兼容问题还是可以解决的。
目前服务运行采用的是k8s
+docker
的方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
承邀:
使用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统一的需求
这仅仅是我的思路,未经过实践,建议不要使用在生产环境中。
MODEL归类的服务独立出去
举个例子 User的Model就是根据用户服务相关的 看能不能抽出一个服务 其他的通过http or rpc调用就好了
正常的服务设计是不应该出现 model 层共用, 一个 model 必然属于一个服务,外部只能通过服务提供的服务接口来调用.