nats rest microservice gateway 设计简单说明
nats 内部核心还是基于subject的pub,sub处理,只是扩展了不少模式,比如request-reply,pub-sub,micro service等
如果我们基于nats 的micro service 开发,同时暴露一个rest api 还是有必要的,有利于快速开发
参考玩法
如下图,内部核心还是基于nats 的client 处理消息的转发,比如从rest api 获取数据,进行一些check,之后通过pub 或者request 获取数据然后结合场景进行数据的response 处理,比如request 模式的,获取数据返回给client,对于pub 模式的直接解决check 返回状态就可以了

一些细节简单说明
因为nats 请求路径核心就是subject,应该转换到rest 的path,机制上结合约定就可以了,处理上实现模式比较多,一种是直接请求(一个统一入口),对于请求不存在的nats 会有一些信息(比如micro service,request-reply,以及msg 就不行了),还有一种是基于registry 存储请求信息,然后在rest api gateway 动态生成api 地址,机制上,实际第一种约定好请求格式就行了,是一种相对简单快速的模式,但是基于body 的处理需要一些check机制,比如使用schema registry 等工具
说明
以上是一个是实现的简单思路,后续有时间了提供原型代码,golang 有一个resgate的开源参考实现,值得看看
参考资料
https://docs.nats.io/nats-concepts/core-nats
https://github.com/resgateio/resgate
https://github.com/resgateio/resgate/blob/master/docs/res-protocol.md
https://github.com/resgateio/resgate/blob/master/docs/res-service-protocol.md
https://github.com/resgateio/resgate/blob/master/docs/res-client-protocol.md
浙公网安备 33010602011771号