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里有用到

你可能感兴趣的:(170205 hashicorp/go-plugin)