再见,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
gRPC Golang Client Connection Test

gRPC Golang Client Connection Test

gRPC is a well-known RPC protocol and a lot of companies adopted it as an internal communication protocol because of its robustness and stability. To use it more efficiently, I’ve done some experiments about how to maximize the gRPC client concurrency.

Read more
Your browser is out-of-date!

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

×