二次开发rpcxgateway支持非golang梳理

编程

rpcx-gatewa的调用是是流程源码梳理

功能实现

  • API define handle 让网关支持自定义路由, 可以根据自定义的理由,网关直接调用相应的服务,直接是二层服务的架构,减少客户端(消费者)这一层程序

golang">// 关键代码

router.POST("/echo", g.EchoHandle) // 消费echo服务

func (g *Gateway) EchoHandle(w http.ResponseWriter, r *http.Request, params httprouter.Params) {

// API router的定义范例

svc := "Echo"

call := "Say"

g.handleRequestApi(w, r, svc, call)

  • 在HttpRequest2RPCRequest的逻辑判断中,判断是否属于golang的服务端,分开进行服务端的调用逻辑,可灵活接入不同语言实现的服务端

// 判断是否为golang服务端的关键代码,非golang服务端会把语言的定义放在metadata里面

// 在创建xClient时,会根据语言的类型设置 isGo 属性

for _, v := range servers {

if strings.Index(v, "typ=py") != -1 {

// 为非go语言

client.isGo = false

client.noGoServers = servers

break

}

}

要优化的地方

  • 性能方面目前不能完美结合rpcx的总体设计,这个要会加入后续feature
  • 目前支持python, 考虑支持java

详细源码地址: https://github.com/halokid/rpcx-gateway

与此二次开发版本匹配的rpcx项目源码: https://github.com/halokid/rpcx

开发完善后,会统一提PR :-)

以上是 二次开发rpcxgateway支持非golang梳理 的全部内容, 来源链接: utcz.com/z/515591.html

回到顶部