在先前的文章当中,笔者分享了一套简洁的go微服务monorepo代码架构的实现,主要解决中小团队协同开发微服务集群的代码架构组织问题。但是在实际代码开发过程中,怎么组织不同的业务服务service实例,就成了比较棘手的问题。
为什么会出现这样的场景?首先,不同的业务服务可能会用到相同的底层服务,比如DB、缓存、MQ以及三方Client等等。其次,一个底层服务实例可能会在多个业务服务复用,一个业务服务又可能成为另外一个业务服务的依赖。因此这样下来,不同服务实例之间就存在错综复杂的联系,用代码组织起来就比较困难了。
幸运的是,我们拥有wire工具去做go对象的依赖注入,这样就可以用简单的代码实现解决上述问题。在以前的wire文章当中,也简单提到了wire对于微服务框架的作用,但讲解的不算特别精要。所以今天这篇文章,笔者就分享下在go大仓的场景下,怎么用wire去解决service实例依赖问题的,以及怎样才是更加恰当的打开方式。
首先我们要知道wire工具对外暴露了什么能力,有以下一些: