跳到主要内容

一种基于 gRPC 的轻量级应用间双向通信框架

背景

Golang 原生的 Plugins 机制实现存在着一系列问题,比如:

  1. 要求 Core 和 Plugins 的 Go 编译器完全一致;
  2. 要求 Core 和 Plugins 的外部依赖的版本完全一致;
  3. Plugins 只能动态编译。

这一系列的限制使得 Plugins 机制非常难用。比如对于一个 core-plugin 架构的应用来说,往往 plugin 是在独立的仓库里,或者是由不同的工程师开发的,他们要花很大的精力来满足上述条件。目前 DevStream 也面临着这样的问题,导致插件的生命周期和 core 完全绑定,无法独立迭代。

需求

基于 gRPC 协议开发一个轻量级的生产可用的 core-plugin 跨应用双向通信框架,这个框架应该是通用的,所有需要应用双向通信的项目都可以使用。

注意点

  1. 测试覆盖完备,要实现生产级别可靠必须经过较完备的测试,ut 覆盖率高;
  2. 日志完备,方便调试问题;
  3. 性能优异,轻量级;
  4. 容易使用,文档详细。

项目仓库