
反向代理功能
http工具包提供反向代理服务。
http工具包提供的
ReverseProxy结构体可以创建到目标地址的 HTTP 连接,同时该结构体实现了 HTTP 的核心接口:
type Handler interface {ServeHTTP(ResponseWriter, *Request)}
ResponseWriter,
*Request参数赋值到
ReverseProxy提供的
ServeHTTP方法中,即可实现将原请求转发到特定后端服务端口的功能。那么如何区分应该把请求转发到 NeuronEX 模块下的 Neuron 还是 eKuiper 呢?关键在于识别请求路径中的特定前缀。因此,在 NeuronEX 的配置项中提供了如下设置,以支持流量的定向转发。
neuron:reverseProxies:- location: api/neuronproxyPath: http://127.0.0.1:7000/api/v2ekuiper:reverseProxies:- location: api/ekuiperproxyPath: http://127.0.0.1:9081- location: ws/ekuiperproxyPath: ws://127.0.0.1:10081
http://hostname:8085/api/ekuiper/version ,经过代理层处理后,代理将向真正的后端地址
http://127.0.0.1:9081/version发起请求。同样的,对于获取 Neuron 版本信息的请求,其完整路径为
http://hostname:8085/api/neuron/version,经过代理层处理后,代理将向真正的后端地址
http://127.0.0.1:7000/api/v2/version发起请求。由此可见,代理层能够根据请求路径中的特定前缀,识别并匹配到特定反向代理地址,然后将请求路径中的剩余路径与反向代理地址相结合,形成最终的访问地址。

进程管理功能
NeuronCmd := exec.Command("/bin/bash", "cd opt/neuronex/software/neuron && ./neuron --disable_auth")
exec.Command方法的第一个参数是 shell 程序名,第二个参数是在 shell 中启动 Neuron 的命令行语句。将这两者结合后,得到的命令行语句用于在 shell 中执行 Neuron 的启动命令。通过调用
NeuronCmd的
Start方法来启动程序,随后调用
Wait方法等待 Neuron 进程的退出。一旦 Neuron 进程退出,NeuronEX 进程在接收到信号后会立即退出。

总结



文章转载自EMQX,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




