再见,micro: 迁移go-micro到纯gRPC框架

再见,micro: 迁移go-micro到纯gRPC框架

micro是基于golang的微服务框架,之前华尔街见闻架构升级中谈到了我们是基于go-micro的后端架构,随着我们对服务网格的调研、测试和实施,为了打通不同语言之间的服务调用,我们选择了gRPC作为服务内部的通用协议。

go-micro框架的架构非常具有拓展性,它拥有自己的RPC框架,通过抽象codec,transport,selector等微服务组件,你既可以使用官方实现的各种插件go-plugins进行组装,又可以根据实际的情况实现自己的组件。然而,我们打算利用服务网格的优势,将微服务的基础组件下沉到基础设施中去,将组件代码从代码库中剥离开来。

这样一来,我们相当于只需要最简的RPC框架,只需要服务之间有统一、稳定、高效的通信协议,由于micro在我们新架构中略显臃肿,于是我们选择逐渐剥除micro。还有一个重要原因,我们选择的服务网格方案是istio,它的代理原生支持gRPC,而micro只是将gRPC当做transport层,相当于复写了gRPC的服务路由逻辑,这样有损于istio的一些特性,譬如流量监控等功能。

出于这些考虑,第一步需要将micro改成纯gRPC模式,这里的改造部分我们考虑只应该去更改基础库的代码,而尽量不要使业务代码更改,减少对已有逻辑的影响,和一些软性的譬如开发人员的工作量。

Read more
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×