/gozerodemo

go-zero demo

Primary LanguageGo

README

RPC

https://go-zero.dev/cn/goctl-rpc.html

更新API后生成代码

goctl api go -api gozerodemo.api -dir . -style gozero

启动服务

go run gozerodemo.go -f etc/gozerodemo-api.yaml

验证

% curl -i -X GET \
    http://localhost:8888/from/me 
HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 07 Sep 2021 13:22:35 GMT
Content-Length: 23

{"Message":"hello: me"} 

监控

参考使用prometheus + grafana + pushgateway搭建监控可视化系统

配置:以resCode为例 rk_demo_api_resCode{exported_job="demo",instance="pushgateway:9091",job="prom-stack"}

参考:

一篇文章带你理解和使用Prometheus的指标

容器监控实践—PromQL查询解析

按分钟进行统计 increase(rk_demo_api_resCode{exported_job="demo",instance="pushgateway:9091",job="prom-stack"}[1m])

grafana: http://127.0.0.1:3000/

pushGateway: http://127.0.0.1:9091/

分布式任务队列

https://github.com/hibiken/asynq

docker run --rm --name asynqmon -d -p 8098:8080 -e REDIS_ADDR=172.17.0.1:6379 hibiken/asynqmon

Web页面: http://127.0.0.1:8098/

链路追踪

# 启动jaeger
docker run -d --name jaeger \
    -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
    -p 5775:5775/udp \
    -p 6831:6831/udp \
    -p 6832:6832/udp \
    -p 5778:5778 \
    -p 16686:16686 \
    -p 14268:14268 \
    -p 14250:14250 \
    -p 9411:9411 \
    jaegertracing/all-in-one:1.23

参考:https://rkdev.info/cn/docs/bootstrapper/user-guide/grpc-golang/basic/interceptor-tracing/

img.png

Web页面: http://127.0.0.1:16686/

部署示例APP

docker run --rm -it \
  --link jaeger \
  -p 8080-8083:8080-8083 \
  -e JAEGER_AGENT_HOST="jaeger" \
  jaegertracing/example-hotrod:1.14 \
  all

参考:https://blog.csdn.net/panjianlongWUHAN/article/details/113347757

gRPC测试工具

工具地址:https://github.com/fullstorydev/grpcui

参考:https://segmentfault.com/a/1190000020954443

在rpc服务hello为例,在其配置中设置Modetest或者dev并重启服务,然后执行grpcui -plaintext localhost:8080

接入北极星

安装北极星(单机版)

https://polarismesh.cn/zh/doc/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/%E5%AE%89%E8%A3%85%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%AE%89%E8%A3%85%E5%8D%95%E6%9C%BA%E7%89%88.html#%E5%8D%95%E6%9C%BA%E7%89%88%E5%AE%89%E8%A3%85

go-zero北极星服务发现能力支持

https://github.com/zeromicro/zero-contrib/tree/main/zrpc/registry/polaris

例子

服务端注册示例见:rpc/jaeger/jaeger.go

客户端调用示例见:rpc/jaeger/example/jaeger/main.go

注意调用示例同目录下需要添加polaris.yaml文件,内容为:

global:
    serverConnector:
        addresses:
            - 127.0.0.1:8091

helm安装北极星

https://github.com/polarismesh/polaris/blob/main/deploy/helm/README-zh.md

部署单机版:helm install polarisstandalone . --set global.mode=standalone

NAME: polarisstandalone
LAST DEPLOYED: Sat Mar  5 00:07:54 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

卸载 helm uninstall polarisstandalone

部署

参考:https://go-zero.dev/cn/goctl-other.html

docker

goctl docker -go demo.go

docker build -t demo:v1 -f api/Dockerfile .

docker run --rm -it -p 8888:8888 demo:v1

k8s

kubectl create namespace dev

goctl kube deploy -name demo -namespace dev -image demo:v1 -o deploy/demo.yaml -port 8888

kubectl apply -f deploy/demo.yaml

设置当目标镜像存在本地时就不去拉取 imagePullPolicy: IfNotPresent