170205 hashicorp/go-plugin

实现

在子进程中启动plugin服务,并通过net/rpc与之通信。Plugin与主进程之间的连接是复用的

用法

  1. 定义plugin暴露的接口
  2. 完成通过*rpc.Client调用实现以上接口的struct(client端),并完成对应的rpc server端struct(注意需要满足golang rpc方法规则)
  3. 实现Plugin接口,包含以上两种struct
  4. 在插件服务进程中调用plugin.Serve完成插件服务(注意plugin.ServeConfig的配置)
  5. 在主进程中调用plugin.NewClient定义插件实例(注意plugin.ClientConfig的配置,Cmd指向插件服务启动命令)
  6. 在主进程中client.Client()启动插件服务,Dispense方法获得实际的插件接口,再类型转换后即可使用

架构图

一些细节

MuxBroker的用法

hashicorp/terraform里有用到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容