Dubbo-go example中如何高效学习并掌握应用?

摘要:dubbo-go example仓库地址: https:github.comapachedubbo-go-samples 你可以在 https:github.comapachedubbo-go-samplesblobma
dubbo-go example仓库地址: https://github.com/apache/dubbo-go-samples 你可以在 https://github.com/apache/dubbo-go-samples/blob/main/README_CN.md 查看中文的README文档 快速上手 这个是通过 https://cn.dubbo.apache.org/zh-cn/blog/2021/01/14/快速上手-dubbo-go/ 官方博客中的内容进行快速入门. 这只是一个参考 注册中心可替换,官方推荐的是 zk 如果有变更,注册中心将基于长连接推送变更数据给消费者,注册中心,服务提供者,服务消费者三者之间均为长连接 基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用 消费者在本地缓存了提供者列表 clone git clone https://github.com/apache/dubbo-go-samples.git 项目结构 cmd 是 command(命令)的缩写。它的主要作用是存放项目的 main 包,也就是程序启动的地方。一个项目中可以有多个 main 包,每个包对应一个不同的可执行程序。 启动docker-compose 使用make -f build/Makefile docker-up启动服务 该项目使用docker-compose来运行依赖的文件, 主要是zookeeper, etcd, nacos. 我对于这三个服务的理解是: 三个可选择相互之间替换的配置和注册中心. 上图是运行效果 make -f build/Makefile docker-down 这个是关闭docker-compose服务的方案 启动hello world server服务 以下内容是官方文档里面启动server的方案, 但是我没有找到../conf/dubbogo.yml cd helloworld/go-server/cmd export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" go run . 我没有使用DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml"环境变量 启动hello world client服务 cd helloworld/go-client/cmd go run main.go 那个配置文件确实不知道有什么用 效果 上方是server, 下面是client. 使用curl 使用curl指令检查功能是否可行 curl \ --header "Content-Type: application/json" \ --data '{"name": "Dubbo"}' \ http://localhost:20000/greet.GreetService/Greet 也可以证明服务是否是可行的 分析hello world实现代码 proto 关于proto文件夹中的协议文件不过多赘述, 这些内容本质上和其他框架一样都是统一的. syntax = "proto3"; package greet; option go_package = "github.com/apache/dubbo-go-samples/helloworld/proto;greet"; message GreetRequest { string name = 1; } message GreetResponse { string greeting = 1; } service GreetService { rpc Greet(GreetRequest) returns (GreetResponse) {} } 本质上就是实现了一个服务, 接受字符串name, 返回字符串greeting 探索如何编译出需要的.go文件 protoc --go_out=. --go_opt=paths=source_relative \ --go-triple_out=. --go-triple_opt=paths=source_relative \ ./greet.proto 生成的 .pb.go 文件主要负责数据结构和编码/解码。 .triple.go不存储服务的实现(implementation),而是存储服务的接口定义(interface definition)和 客户端桩代码(client stub)。
阅读全文