【发布时间】:2020-11-02 06:42:02
【问题描述】:
我目前正在尝试创建一个有趣的跟踪工具(它支持 gRPC 跟踪),并且对我是否正确地考虑了这个架构感到困惑。跟踪工具跟踪请求的整个工作流程/旅程(从用户单击按钮的那一刻到请求到达 API 网关、微服务之间以及返回的时间。
假设应用程序是一个书店,它被分解为 2 个微服务,可能是帐户和书籍。假设有一个用户界面,当您单击一个按钮时,它允许用户收藏一本书。我只使用了 2 个微服务来简化这个示例。
**Different parts of the Fake/Mock up application**
UI ->
nginx -> I wanted to use this as an API Gateway.
microservice 1 -> (Contains data for all Users of a bookstore)
microservice 2 -> (Contains data for all the books)
**所以我的目标是找到一种方法来跟踪该请求。所以我们可以想象请求到了 nginx
关注点 #1: 当请求到达 nginx 时,它是 HTTP。很酷,但是当请求发送到微服务时,它是一个 grpc 调用(或通过 http2)。 nginx 可以获取一个 http 请求,然后通过 http2 发送该请求......?不确定我的措辞是否正确。我知道 nginx plus 支持 http2。我也知道grpc也有grpc网关。
关注点 2: 容器化。我是否必须单独容器化这两个微服务,还是必须将整个 docker 容器本身容器化。连接nginx和docker简单吗?
关注点 #3: 在跟踪 gRPC 请求时(了解请求完成的时间),我正在考虑使用中间件记录器或跟踪 API(opentracing、jaegar 等)去做这个。否则我怎么知道 gRPC 发出请求需要多长时间?
我想知道是否有可能解决这些问题,我的思考过程是否正确,以及此架构是否具有功能。
【问题讨论】:
标签: docker grpc grpc-java grpc-go grpc-node