我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下:
期望通过本系列带你在本机利用 Docker 环境利用 go-zero 快速开发一个商城系统,让你快速上手微服务。
完整示例代码:https://github.com/nivin-studio/go-zero-mall
首先,我们来看一下整体的服务拆分图:
Jaeger
介绍Jaeger
是 Uber
开发并开源的一款分布式追踪系统,兼容 OpenTracing API
,适用于以下场景:
Jaeger
的全链路追踪功能主要由三个角色完成:
client
:负责全链路上各个调用点的计时、采样,并将 tracing
数据发往本地 agent
。agent
:负责收集 client
发来的 tracing
数据,并以 thrift
协议转发给 collector
。collector
:负责搜集所有 agent
上报的 tracing
数据,统一存储。go-zero
使用 Jaeger
链路追踪go-zero
框架已经帮我们实现了链路追踪(详见:go-zero链路追踪),并且集成支持了 Jaeger
, Zipkin
这两种链路追踪上报工具,我们只要简单配置下,就可以可视化的查看到一个请求的完整的调用链,以及每一个环节的调用情况及性能。
user api
服务 Telemetry
配置$ vim mall/service/user/api/etc/user.yaml
Name: User
Host: 0.0.0.0
Port: 8000
...
Telemetry:
Name: user.api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
user rpc
服务 Telemetry
配置$ vim mall/service/user/rpc/etc/user.yaml
Name: user.rpc
ListenOn: 0.0.0.0:9000
...
Telemetry:
Name: user.rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
product api
服务 Telemetry
配置$ vim mall/service/product/api/etc/product.yaml
Name: Product
Host: 0.0.0.0
Port: 8001
...
Telemetry:
Name: product.api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
product rpc
服务 Telemetry
配置$ vim mall/service/product/rpc/etc/product.yaml
Name: product.rpc
ListenOn: 0.0.0.0:9001
...
Telemetry:
Name: product.rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
order api
服务 Telemetry
配置$ vim mall/service/order/api/etc/order.yaml
Name: Order
Host: 0.0.0.0
Port: 8002
...
Telemetry:
Name: order.api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
order rpc
服务 Telemetry
配置$ vim mall/service/order/rpc/etc/order.yaml
Name: order.rpc
ListenOn: 0.0.0.0:9002
...
Telemetry:
Name: order.rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
pay api
服务 Telemetry
配置$ vim mall/service/pay/api/etc/pay.yaml
Name: Pay
Host: 0.0.0.0
Port: 8003
...
Telemetry:
Name: pay.api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
pay rpc
服务 Telemetry
配置$ vim mall/service/pay/rpc/etc/pay.yaml
Name: pay.rpc
ListenOn: 0.0.0.0:9003
...
Telemetry:
Name: pay.rpc
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger
提示:配置修改后,需要重启服务才会生效。
Jaeger UI
查看链路/api/user/userinfo
api接口
Jaeger
服务,并为其 Jaeger UI
端口号16686
做了宿主机端口 5000
的映射关系,所以在浏览器中输入 http://127.0.0.1:5000/
访问 Jaeger UI
界面。选择 Search
菜单,在 Service
下拉框中选择 user.api
,最后点击 Find Traces
按钮,可以查询到刚刚访问的 /api/user/userinfo
接口的链路追踪数据。/api/user/userinfo
接口的链路时序图,以及服务依赖关系,和耗时情况。https://github.com/zeromicro/go-zero
https://gitee.com/kevwan/go-zero
欢迎使用 go-zero
并 star 支持我们!
关注『微服务实践』公众号并点击 交流群 获取社区群二维码。
|