Open liu-song opened 3 years ago
目前http路由主要是用于thrift泛化调用,kitex本身没支持http请求,http框架会单独开源。但你的建议是合理的,我们会看下,你也可以直接提pr帮助改进哦
好的,我后续再仔细研究看下
通常 RPC 框架的路由跟 HTTP 路由是不一样的,HTTP 的路由匹配规则为前缀匹配,还有 pattern,对于 http router 组件来说 HTTP 的路由字符串不是精准匹配所以没法直接使用 hash map 命中,而绝大多数 RPC 框架的路由是固定的字符串,一个 hash map 就能命中并且性能更好。 我没有深入了解 @YangruiEmma 大佬说的 kitex 针对 thrift 泛化使用的 HTTP 路由,抛开泛化/非固定的路由场景,改为前缀树会让 RPC 路由性能下降。
@lesismal 是Kitex支持的泛化调用,解析idl将http或map类型请求做thrift编码
目前的http的路由前缀树是基于httprouter最早的版本修改而来的,gin 同样是在httprouter的基础上不断迭代, https://github.com/gin-gonic/gin/commits/master/tree.go 从而可以看到,我原本打算基于gin版本pr一版上来,但发现 fasthttp router 性能同样优异,同时这里有个关于router 的benchmark,https://github.com/smallnest/go-web-framework-benchmark, 不知目前kitex 框架的对应场景是否有必要更新,以及如果要更新的话,更加适合基于那个版本的更新.