关于微服务项目代码结构的疑问

由于微服务将功能打散, 让独立成服务的功能组成一个工程, 进而打成1个jar包, 比如我有个简单的需求:

服务1: 从ActiveMQ中读取要建立全文索引的文档标识和操作类型来在ElasticSearch中建立/更新/删除索引, 采用MessageListener方式从ActiveMQ中读取消息

服务2: 提供全文检索服务, 供PC/移动端使用

按照微服务, 这两个分别是在不同的工程里面, 服务器1为index-ms, 服务2为search-ms, 且彼此的启动停止相互不影响
问题如下:

  1. 他们的公用的代码如何组织, 比如都有一个Document对象来代表一个文档, 一个工程放一个, 还是再建立一个通用的工程让他们去引用依赖, 如果一个工程放一个,那么当field有变更的时候需要改2个工程, 如果这样的话, 那微服务中有很多这样的model需要公用

  2. 还有dao, service这类方法, 如果一个工程用其中几个方法, 而其他工程用另外几个方法, 那同名的dao和service就要分别在多个工程中存在, 只不过其中代码不一样, 而且未来也有可能在不同的微服务中存在相同的方法

这类问题, 大家都是如何去权衡的呢, 之前用jfinal的时候, 跟作者讨论过类似的设计, 因为jfinal可以按照数据库的表自动生成model代码(包含dao功能), 所以就将这部分单独弄成一个工程, 让其他工程依赖, 反正这个工程代码都是自动生成也不用去改, 不知道微服务可不可以用这个思路

阅读 3.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题