一种基于 gRPC 的轻量级应用间双向通信框架
背景
Golang 原生的 Plugins 机制实现存在着一系列问题,比如:
- 要求 Core 和 Plugins 的 Go 编译器完全一致;
- 要求 Core 和 Plugins 的外部依赖的版本完全一致;
- Plugins 只能动态编译。
这一系列的限制使得 Plugins 机制非常难用。比如对于一个 core-plugin 架构的应用来说,往往 plugin 是在独立的仓库里,或者是由不同的工程师开发的,他们要花很大的精力来满足上述条件。目前 DevStream 也面临着这样的问题,导致插件的生命周期和 core 完全绑定,无法独立迭代。
需求
基于 gRPC 协议开发一个轻量级的生产可用的 core-plugin 跨应用双向通信框架,这个框架应该是通用的,所有需要应用双向通信的项目都可以使用。
注意点
- 测试覆盖完备,要实现生产级别可靠必须经过较完备的测试,ut 覆盖率高;
- 日志完备,方便调试问题;
- 性能优异,轻量级;
- 容易使用,文档详细。