├── .asf.yaml ├── .github ├── dependabot.yml └── workflows │ ├── github-actions.yml │ └── golangci-lint.yml ├── .gitignore ├── .golangci.yml ├── .images ├── metrics.png ├── run-configurations.png ├── samples-rpc-triple-client.png └── samples-rpc-triple-server.png ├── .licenserc.yaml ├── HOWTO.md ├── HOWTO_zh.md ├── LICENSE ├── README.md ├── README_CN.md ├── book-flight-ai-agent ├── .env.example ├── README.md ├── README_zh.md ├── go-client │ ├── cmd │ │ └── client.go │ └── frontend │ │ ├── handlers │ │ └── chat.go │ │ ├── main.go │ │ ├── service │ │ └── context.go │ │ ├── static │ │ ├── script.js │ │ └── style.css │ │ └── templates │ │ └── index.html ├── go-server │ ├── actions │ │ └── action.go │ ├── agents │ │ ├── agent.go │ │ ├── cot_agent.go │ │ └── task.go │ ├── cmd │ │ └── server.go │ ├── conf │ │ ├── bookflight_prompt.yml │ │ └── config.go │ ├── mcp │ │ └── jsonrpc.go │ ├── model │ │ ├── llm.go │ │ ├── llm_utility.go │ │ ├── ollama │ │ │ ├── ollama.go │ │ │ └── options.go │ │ └── option.go │ ├── prompts │ │ └── prompt.go │ └── tools │ │ ├── bookingflight │ │ └── booking_tools.go │ │ ├── tool.go │ │ └── tool_base.go └── proto │ ├── chat.pb.go │ ├── chat.proto │ └── chat.triple.go ├── build └── Makefile ├── ci.sh ├── compatibility ├── api │ ├── generate.sh │ ├── samples_api.pb.go │ ├── samples_api.proto │ └── samples_api_triple.pb.go ├── apisix │ ├── README.md │ ├── apisix-compose │ │ ├── apisix_conf │ │ │ └── config.yaml │ │ └── docker-compose.yml │ ├── apisix-dashboard-compose │ │ ├── dashboard_conf │ │ │ └── conf.yaml │ │ └── docker-compose.yml │ ├── etcd-compose │ │ └── docker-compose.yml │ ├── helloworld │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── main.go │ │ └── protobuf │ │ │ └── helloworld │ │ │ ├── helloworld.pb.go │ │ │ ├── helloworld.proto │ │ │ └── helloworld_triple.pb.go │ ├── mysql5.7-compose │ │ ├── README.md │ │ ├── docker-compose.yml │ │ └── mysql │ │ │ ├── Dockerfile │ │ │ └── my.cnf │ └── nacos2.0.3-compose │ │ ├── docker-compose.yml │ │ └── nacos_conf │ │ └── custom.properties ├── async │ ├── README.md │ ├── README_zh.md │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ └── user.go │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ └── pkg │ │ ├── user.go │ │ ├── user_provider.go │ │ └── user_provider_v2.go ├── config-api │ ├── README.md │ ├── config-merge │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ ├── dubbogo-local.yml │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ ├── configcenter │ │ ├── nacos │ │ │ ├── go-client │ │ │ │ └── cmd │ │ │ │ │ └── client.go │ │ │ └── go-server │ │ │ │ └── cmd │ │ │ │ └── server.go │ │ └── zookeeper │ │ │ ├── go-client │ │ │ └── cmd │ │ │ │ └── client.go │ │ │ └── go-server │ │ │ └── cmd │ │ │ └── server.go │ ├── rpc │ │ ├── README.md │ │ └── triple │ │ │ ├── go-client │ │ │ └── cmd │ │ │ │ └── client.go │ │ │ └── go-server │ │ │ └── cmd │ │ │ └── server.go │ └── subModule │ │ ├── configcenter │ │ └── main.go │ │ ├── registry │ │ ├── README.md │ │ └── main.go │ │ └── service │ │ └── main.go ├── configcenter │ ├── nacos │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ └── zookeeper │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── context │ ├── README.md │ ├── README_zh.md │ ├── dubbo │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ └── triple │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── direct │ ├── README.md │ ├── README_zh.md │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── error │ └── triple │ │ ├── hessian2 │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ ├── client.go │ │ │ │ └── error_response.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ ├── error_response.go │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ │ └── pb │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ │ └── go-server │ │ ├── cmd │ │ ├── error_reponse.go │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── filter │ ├── README.md │ ├── README_zh.md │ ├── custom │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ ├── client.go │ │ │ │ └── myfilter.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ ├── myfilter.go │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ ├── token │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ └── tpslimit │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ └── user.go │ │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ └── pkg │ │ ├── limit_strategy.go │ │ ├── reject_handler.go │ │ └── user.go ├── game │ ├── go-server-game │ │ ├── cmd │ │ │ └── server.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ ├── consumer.go │ │ │ └── provider.go │ ├── go-server-gate │ │ ├── cmd │ │ │ └── server.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ ├── consumer.go │ │ │ └── provider.go │ ├── pkg │ │ ├── consumer │ │ │ ├── game │ │ │ │ └── basketball.go │ │ │ └── gate │ │ │ │ └── basketball.go │ │ └── pojo │ │ │ ├── info.go │ │ │ └── result.go │ └── website │ │ ├── css │ │ └── style.css │ │ ├── img │ │ └── bac.png │ │ ├── index.html │ │ └── js │ │ ├── api.js │ │ └── index.js ├── generic │ ├── README.md │ ├── README_zh.md │ └── default │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── pkg │ │ │ └── user.go │ │ ├── go-server │ │ ├── cmd │ │ │ └── server.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ ├── init.go │ │ │ ├── user.go │ │ │ ├── user_provider.go │ │ │ ├── user_provider_triple.go │ │ │ └── user_response.go │ │ ├── java-client │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── samples │ │ │ │ ├── ApiConsumer.java │ │ │ │ └── User.java │ │ │ └── resources │ │ │ └── log4j.properties │ │ └── java-server │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── dubbo │ │ │ └── samples │ │ │ ├── ApiProvider.java │ │ │ ├── Gender.java │ │ │ ├── Response.java │ │ │ ├── User.java │ │ │ ├── UserProvider.java │ │ │ ├── UserProviderImpl.java │ │ │ ├── UserProviderTriple.java │ │ │ └── UserProviderTripleImpl.java │ │ └── resources │ │ └── log4j.properties ├── logger │ ├── README.md │ ├── README_zh.md │ ├── custom │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yml │ ├── default │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yml │ ├── level │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yml │ └── rolling │ │ ├── cmd │ │ └── main.go │ │ └── conf │ │ └── dubbogo.yml ├── mesh │ ├── README.md │ ├── deploy │ │ ├── Namespace.yml │ │ ├── consumer │ │ │ ├── Deployment.yml │ │ │ └── Service.yml │ │ ├── provider │ │ │ ├── Deployment-v2.yml │ │ │ ├── Deployment.yml │ │ │ └── Service.yml │ │ └── traffic │ │ │ └── virtual-service.yml │ ├── go-client │ │ ├── Dockerfile │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ ├── go.mod │ │ └── go.sum │ └── go-server │ │ ├── Dockerfile │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ ├── go.mod │ │ └── go.sum ├── metrics │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── otel │ └── trace │ │ ├── config │ │ └── config.go │ │ ├── go-client │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yaml │ │ └── go-server │ │ ├── cmd │ │ └── main.go │ │ └── conf │ │ └── dubbogo.yaml ├── polaris │ ├── limit │ │ ├── README-zh.md │ │ ├── README.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── main.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── images │ │ │ └── dubbogo-ratelimit-rule.png │ ├── registry │ │ ├── README-zh.md │ │ ├── README.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── main.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ └── router │ │ ├── README-zh.md │ │ ├── README.md │ │ ├── go-client │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yaml │ │ ├── go-server │ │ ├── server-dev │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ ├── server-pre │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ └── server-prod │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yaml │ │ └── images │ │ ├── dubbogo-route-rule-dev.png │ │ ├── dubbogo-route-rule-pre.png │ │ └── dubbogo-route-rule-prod.png ├── proxyless │ ├── README.md │ ├── deploy │ │ ├── Namespace.yml │ │ ├── consumer │ │ │ ├── Deployment.yml │ │ │ └── Service.yml │ │ ├── provider │ │ │ ├── Deployment-v2.yml │ │ │ ├── Deployment.yml │ │ │ └── Service.yml │ │ └── traffic │ │ │ └── virtual-service.yml │ ├── go-client │ │ ├── Dockerfile │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ ├── go.mod │ │ └── go.sum │ └── go-server │ │ ├── Dockerfile │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ ├── go.mod │ │ └── go.sum ├── registry │ ├── all │ │ ├── README.md │ │ ├── nacos │ │ │ ├── go-client │ │ │ │ ├── cmd │ │ │ │ │ └── client.go │ │ │ │ └── conf │ │ │ │ │ └── dubbogo.yml │ │ │ └── go-server │ │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── zookeeper │ │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ ├── etcd │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ └── user.go │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ ├── conf │ │ │ └── dubbogo.yml │ │ │ ├── docker │ │ │ └── docker-compose.yml │ │ │ └── pkg │ │ │ └── user.go │ ├── nacos │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ ├── servicediscovery │ │ ├── nacos │ │ │ ├── go-client │ │ │ │ ├── cmd │ │ │ │ │ └── client.go │ │ │ │ └── conf │ │ │ │ │ └── dubbogo.yml │ │ │ └── go-server │ │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── zookeeper │ │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ │ ├── java-client │ │ │ ├── build │ │ │ │ └── generated │ │ │ │ │ └── source │ │ │ │ │ └── proto │ │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── sample │ │ │ │ │ └── hello │ │ │ │ │ └── Helloworld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── sample │ │ │ │ │ └── basic │ │ │ │ │ ├── ApiConsumer.java │ │ │ │ │ └── IGreeter.java │ │ │ │ ├── proto │ │ │ │ └── helloworld.proto │ │ │ │ └── resources │ │ │ │ └── log4j.properties │ │ │ └── java-server │ │ │ ├── build │ │ │ └── generated │ │ │ │ └── source │ │ │ │ └── proto │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── hello │ │ │ │ └── Helloworld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── basic │ │ │ │ ├── ApiProvider.java │ │ │ │ ├── IGreeter.java │ │ │ │ └── IGreeter1Impl.java │ │ │ ├── proto │ │ │ └── helloworld.proto │ │ │ └── resources │ │ │ └── log4j.properties │ └── zookeeper │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── rpc │ ├── dubbo │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ └── user.go │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ ├── common_user_provider.go │ │ │ │ ├── complex_provider.go │ │ │ │ ├── user.go │ │ │ │ ├── user_provider.go │ │ │ │ └── wrapper_array_class_provider.go │ │ ├── java-client │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── sample │ │ │ │ │ ├── ComplexData.java │ │ │ │ │ ├── ComplexProvider.java │ │ │ │ │ ├── Consumer.java │ │ │ │ │ ├── Gender.java │ │ │ │ │ ├── User.java │ │ │ │ │ ├── UserProvider.java │ │ │ │ │ └── WrapperArrayClassProvider.java │ │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── spring │ │ │ │ │ └── dubbo.consumer.xml │ │ │ │ └── log4j.properties │ │ └── java-server │ │ │ ├── build │ │ │ └── generated │ │ │ │ └── source │ │ │ │ └── proto │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── hello │ │ │ │ └── Helloworld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ ├── ComplexData.java │ │ │ │ ├── ComplexProvider.java │ │ │ │ ├── ComplexProviderImpl.java │ │ │ │ ├── Gender.java │ │ │ │ ├── Provider.java │ │ │ │ ├── Response.java │ │ │ │ ├── User.java │ │ │ │ ├── UserProvider.java │ │ │ │ ├── UserProviderAnotherImpl.java │ │ │ │ ├── UserProviderImpl.java │ │ │ │ ├── WrapperArrayClassProvider.java │ │ │ │ └── WrapperArrayClassProviderImpl.java │ │ │ ├── proto │ │ │ └── helloworld.proto │ │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ └── dubbo.provider.xml │ │ │ └── log4j.properties │ ├── grpc │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── protobuf │ │ │ ├── helloworld.pb.go │ │ │ ├── helloworld.proto │ │ │ └── protobuf.mk │ ├── jsonrpc │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ └── user.go │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ ├── conf │ │ │ └── dubbogo.yml │ │ │ ├── docker │ │ │ └── docker-compose.yml │ │ │ └── pkg │ │ │ ├── user.go │ │ │ ├── user_provider.go │ │ │ ├── user_provider1.go │ │ │ └── user_provider2.go │ └── triple │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── codec-extension │ │ ├── codec │ │ │ └── codec.go │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ │ ├── hessian2 │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ ├── client.go │ │ │ │ ├── complex_service.go │ │ │ │ └── simple_service.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ ├── complex_service.go │ │ │ │ ├── server.go │ │ │ │ └── simple_service.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ ├── java-client │ │ │ ├── build │ │ │ │ └── generated │ │ │ │ │ └── source │ │ │ │ │ └── proto │ │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── sample │ │ │ │ │ └── hello │ │ │ │ │ └── Helloworld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── sample │ │ │ │ │ └── basic │ │ │ │ │ ├── ApiConsumer.java │ │ │ │ │ ├── ComplexData.java │ │ │ │ │ ├── ComplexProvider.java │ │ │ │ │ ├── IGreeter.java │ │ │ │ │ └── User.java │ │ │ │ ├── proto │ │ │ │ └── helloworld.proto │ │ │ │ └── resources │ │ │ │ └── log4j.properties │ │ └── java-server │ │ │ ├── build │ │ │ └── generated │ │ │ │ └── source │ │ │ │ └── proto │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── hello │ │ │ │ └── Helloworld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── basic │ │ │ │ ├── ApiProvider.java │ │ │ │ ├── ComplexData.java │ │ │ │ ├── ComplexProvider.java │ │ │ │ ├── ComplexProviderImpl.java │ │ │ │ ├── IGreeter.java │ │ │ │ ├── IGreeterImpl.java │ │ │ │ └── User.java │ │ │ ├── proto │ │ │ └── helloworld.proto │ │ │ └── resources │ │ │ └── log4j.properties │ │ ├── msgpack │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ │ ├── pb │ │ ├── dubbogo-grpc │ │ │ ├── README.md │ │ │ ├── README_zh.md │ │ │ ├── go-client │ │ │ │ ├── cmd │ │ │ │ │ └── client.go │ │ │ │ └── conf │ │ │ │ │ └── dubbogo.yml │ │ │ ├── go-server │ │ │ │ ├── cmd │ │ │ │ │ └── server.go │ │ │ │ ├── conf │ │ │ │ │ └── dubbogo.yml │ │ │ │ └── pkg │ │ │ │ │ └── greeter.go │ │ │ ├── grpc-client │ │ │ │ └── main.go │ │ │ ├── grpc-server │ │ │ │ └── main.go │ │ │ └── protobuf │ │ │ │ └── api │ │ │ │ ├── helloworld.pb.go │ │ │ │ ├── helloworld.proto │ │ │ │ └── helloworld_grpc.pb.go │ │ └── dubbogo-java │ │ │ ├── README.md │ │ │ ├── README_zh.md │ │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ └── greeter.go │ │ │ ├── java-client │ │ │ ├── build │ │ │ │ └── generated │ │ │ │ │ └── source │ │ │ │ │ └── proto │ │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── demo │ │ │ │ │ └── HelloWorld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── apache │ │ │ │ │ └── dubbo │ │ │ │ │ └── demo │ │ │ │ │ ├── ApiConsumer.java │ │ │ │ │ └── IGreeter.java │ │ │ │ ├── proto │ │ │ │ └── HelloWorld.proto │ │ │ │ └── resources │ │ │ │ └── log4j.properties │ │ │ └── java-server │ │ │ ├── build │ │ │ └── generated │ │ │ │ └── source │ │ │ │ └── proto │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── demo │ │ │ │ └── HelloWorld.java │ │ │ ├── pom.xml │ │ │ ├── run.sh │ │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── demo │ │ │ │ ├── ApiProvider.java │ │ │ │ ├── IGreeter.java │ │ │ │ └── IGreeterImpl.java │ │ │ ├── proto │ │ │ └── HelloWorld.proto │ │ │ └── resources │ │ │ └── log4j.properties │ │ └── pb2 │ │ ├── README.md │ │ ├── README_zh.md │ │ ├── api │ │ ├── helloworld.pb.go │ │ ├── helloworld.proto │ │ └── helloworld_triple.pb.go │ │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ │ ├── go-server │ │ ├── cmd │ │ │ └── server.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── pkg │ │ │ └── greeter.go │ │ ├── hack │ │ ├── custom-boilerplate.go.txt │ │ ├── gen-go-to-protobuf.sh │ │ └── note.txt │ │ └── models │ │ ├── generated.pb.go │ │ ├── generated.proto │ │ └── models.go ├── seata-go │ ├── README.md │ ├── README_zh.md │ ├── docker-compose.yml │ └── tcc │ │ ├── README.md │ │ ├── client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── service │ │ │ └── user_provider.go │ │ └── server │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ └── service │ │ └── user_provider.go ├── skywalking │ ├── README.md │ ├── README_zh.md │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ └── conf │ │ │ └── dubbogo.yml │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ └── conf │ │ └── dubbogo.yml ├── task │ └── shop │ │ ├── .images │ │ └── shop-arc.png │ │ ├── READEME_CN.md │ │ ├── comment │ │ ├── api │ │ │ ├── comment_api.pb.go │ │ │ ├── comment_api.proto │ │ │ └── comment_api_triple.pb.go │ │ ├── server_v1 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ ├── server_v2 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ └── test │ │ │ ├── client │ │ │ └── client.go │ │ │ └── conf │ │ │ └── dubbogo.yaml │ │ ├── detail │ │ ├── api │ │ │ ├── detail_api.pb.go │ │ │ ├── detail_api.proto │ │ │ └── detail_api_triple.pb.go │ │ ├── server_v1 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ ├── server_v2 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ └── test │ │ │ ├── client │ │ │ └── client.go │ │ │ └── conf │ │ │ └── dubbogo.yaml │ │ ├── frontend │ │ ├── api │ │ │ └── frontend_api.go │ │ ├── cmd │ │ │ └── main.go │ │ ├── conf │ │ │ └── dubbogo.yaml │ │ ├── pages │ │ │ ├── router.go │ │ │ ├── server.go │ │ │ ├── static │ │ │ │ ├── architecture.png │ │ │ │ ├── goods.png │ │ │ │ └── jquery-3.6.3.min.js │ │ │ └── templates │ │ │ │ ├── detail.html │ │ │ │ └── index.html │ │ └── server_v1 │ │ │ └── server.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── order │ │ ├── api │ │ │ ├── order_api.pb.go │ │ │ ├── order_api.proto │ │ │ └── order_api_triple.pb.go │ │ ├── server_v1 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ ├── server_v2 │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yaml │ │ └── test │ │ │ ├── client │ │ │ └── client.go │ │ │ └── conf │ │ │ └── dubbogo.yaml │ │ └── user │ │ ├── api │ │ ├── user_api.pb.go │ │ ├── user_api.proto │ │ └── user_api_triple.pb.go │ │ ├── server │ │ ├── cmd │ │ │ └── server.go │ │ └── conf │ │ │ └── dubbogo.yaml │ │ └── test │ │ ├── client │ │ └── client.go │ │ └── conf │ │ └── dubbogo.yaml ├── tls │ ├── README.md │ ├── README_zh.md │ ├── dubbo │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ ├── conf │ │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ │ └── user.go │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ ├── conf │ │ │ └── dubbogo.yml │ │ │ └── pkg │ │ │ ├── common_user_provider.go │ │ │ ├── complex_provider.go │ │ │ ├── user.go │ │ │ ├── user_provider.go │ │ │ └── wrapper_array_class_provider.go │ ├── grpc │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ ├── go-server │ │ │ ├── cmd │ │ │ │ └── server.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── protobuf │ │ │ ├── helloworld.pb.go │ │ │ ├── helloworld.proto │ │ │ └── protobuf.mk │ ├── triple │ │ ├── codec │ │ │ └── codec.go │ │ ├── go-client │ │ │ ├── cmd │ │ │ │ └── client.go │ │ │ └── conf │ │ │ │ └── dubbogo.yml │ │ └── go-server │ │ │ ├── cmd │ │ │ └── server.go │ │ │ └── conf │ │ │ └── dubbogo.yml │ └── x509 │ │ ├── README.md │ │ ├── client1_cert.pem │ │ ├── client1_key.pem │ │ ├── client2_cert.pem │ │ ├── client2_key.pem │ │ ├── client_ca_cert.pem │ │ ├── client_ca_key.pem │ │ ├── create.sh │ │ ├── multiple_uri_cert.pem │ │ ├── multiple_uri_key.pem │ │ ├── openssl.cnf │ │ ├── server1_cert.pem │ │ ├── server1_key.pem │ │ ├── server2_cert.pem │ │ ├── server2_key.pem │ │ ├── server_ca_cert.pem │ │ ├── server_ca_key.pem │ │ ├── spiffe_cert.pem │ │ └── spiffe_key.pem └── tracing │ ├── dubbo │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ ├── docker │ │ │ └── docker-compose.yml │ │ └── pkg │ │ │ └── user.go │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ ├── docker │ │ └── docker-compose.yml │ │ └── pkg │ │ └── user.go │ ├── grpc │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── docker │ │ │ └── docker-compose.yml │ ├── go-server │ │ ├── cmd │ │ │ └── server.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ └── docker │ │ │ └── docker-compose.yml │ └── protobuf │ │ ├── helloworld.pb.go │ │ ├── helloworld.proto │ │ └── protobuf.mk │ ├── jsonrpc │ ├── go-client │ │ ├── cmd │ │ │ └── client.go │ │ ├── conf │ │ │ └── dubbogo.yml │ │ ├── docker │ │ │ └── docker-compose.yml │ │ └── pkg │ │ │ └── user.go │ └── go-server │ │ ├── cmd │ │ └── server.go │ │ ├── conf │ │ └── dubbogo.yml │ │ ├── docker │ │ └── docker-compose.yml │ │ └── pkg │ │ └── user.go │ └── triple │ ├── go-client │ ├── cmd │ │ └── client.go │ └── conf │ │ └── dubbogo.yml │ └── go-server │ ├── cmd │ └── server.go │ └── conf │ └── dubbogo.yml ├── config_center ├── nacos │ ├── README.md │ ├── README_zn.md │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go └── zookeeper │ ├── README.md │ ├── README_zn.md │ ├── go-client │ └── cmd │ │ └── main.go │ ├── go-server │ └── cmd │ │ └── main.go │ └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── config_yaml ├── README.md ├── README_zh.md ├── go-client │ ├── cmd │ │ └── main.go │ └── conf │ │ └── dubbogo.yml ├── go-server │ ├── cmd │ │ └── main.go │ └── conf │ │ └── dubbogo.yml └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── context ├── README.md ├── README_zn.md ├── go-client │ └── cmd │ │ └── main.go ├── go-server │ └── cmd │ │ └── main.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── error ├── README.md ├── README_zn.md ├── go-client │ └── cmd │ │ └── main.go ├── go-server │ └── cmd │ │ └── main.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── filter ├── proto │ ├── greet.pb.go │ ├── greet.proto │ ├── greet.triple.go │ └── sentinel │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go ├── sentinel │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ └── go-server │ │ └── cmd │ │ └── main.go └── token │ ├── go-client │ └── cmd │ │ └── main.go │ └── go-server │ └── cmd │ └── main.go ├── go.mod ├── go.sum ├── healthcheck ├── README.md ├── README_zn.md ├── go-client │ └── cmd │ │ └── client.go ├── go-server │ └── cmd │ │ └── server.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── helloworld ├── README.md ├── go-client │ └── cmd │ │ └── main.go ├── go-server │ └── cmd │ │ └── main.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── integrate_test.sh ├── integrate_test ├── compatibility │ ├── async │ │ └── tests │ │ │ └── integration │ │ │ ├── async_test.go │ │ │ └── main_test.go │ ├── config-api │ │ ├── config-merge │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── merge_test.go │ │ ├── configcenter │ │ │ ├── nacos │ │ │ │ └── tests │ │ │ │ │ └── integration │ │ │ │ │ ├── config-api-center-nacos_test.go │ │ │ │ │ └── main_test.go │ │ │ └── zookeeper │ │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── config-api-center-zk_test.go │ │ │ │ └── main_test.go │ │ └── rpc │ │ │ └── triple │ │ │ └── tests │ │ │ └── integration │ │ │ ├── configapi_rpc_triple_test.go │ │ │ └── main_test.go │ ├── configcenter │ │ ├── apollo │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── greeterProvider_test.go │ │ │ │ └── main_test.go │ │ └── nacos │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ ├── context │ │ ├── dubbo │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ └── triple │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ ├── direct │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ ├── error │ │ └── triple │ │ │ ├── hessian2 │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ │ └── pb │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ ├── filter │ │ ├── custom │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ ├── myfilter.go │ │ │ │ └── userprovider_test.go │ │ └── token │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── token_test.go │ ├── game │ │ ├── go-server-game │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── provider_test.go │ │ └── go-server-gate │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── provider_test.go │ ├── generic │ │ └── default │ │ │ ├── docker │ │ │ ├── docker-compose.yml │ │ │ └── docker-health-check.sh │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ ├── metrics │ │ └── tests │ │ │ └── integration │ │ │ ├── helloworld_test.go │ │ │ └── main_test.go │ ├── polaris │ │ ├── limit │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── limit_test.go │ │ │ │ └── main_test.go │ │ └── registry │ │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── registry_test.go │ ├── registry │ │ ├── all │ │ │ ├── nacos │ │ │ │ └── tests │ │ │ │ │ └── integration │ │ │ │ │ ├── greeter_test.go │ │ │ │ │ └── main_test.go │ │ │ └── zookeeper │ │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── greeter_test.go │ │ │ │ └── main_test.go │ │ ├── etcd │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ ├── nacos │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ ├── servicediscovery │ │ │ ├── nacos │ │ │ │ └── tests │ │ │ │ │ └── integration │ │ │ │ │ ├── helloworld_test.go │ │ │ │ │ └── main_test.go │ │ │ └── zookeeper │ │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── helloworld_test.go │ │ │ │ └── main_test.go │ │ └── zookeeper │ │ │ └── tests │ │ │ └── integration │ │ │ ├── helloworld_test.go │ │ │ └── main_test.go │ ├── rpc │ │ ├── dubbo │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ ├── grpc │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── greeter_test.go │ │ │ │ └── main_test.go │ │ ├── jsonrpc │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ └── triple │ │ │ ├── codec-extension │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── codec.go │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ │ ├── hessian2 │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ │ ├── msgpack │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ │ ├── pb │ │ │ └── dubbogo-grpc │ │ │ │ └── tests │ │ │ │ └── integration │ │ │ │ ├── main_test.go │ │ │ │ └── userprovider_test.go │ │ │ └── pb2 │ │ │ └── tests │ │ │ └── integration │ │ │ ├── greeter_test.go │ │ │ └── main_test.go │ └── tls │ │ ├── dubbo │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── user_test.go │ │ ├── grpc │ │ └── tests │ │ │ └── integration │ │ │ ├── greeter_test.go │ │ │ └── main_test.go │ │ └── triple │ │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── user_test.go ├── config_center │ ├── nacos │ │ └── tests │ │ │ └── integration │ │ │ ├── config_center_nacos_test.go │ │ │ └── main_test.go │ └── zookeeper │ │ └── tests │ │ └── integration │ │ ├── config_center_zookeeper_test.go │ │ └── main_test.go ├── config_yaml │ └── tests │ │ └── integration │ │ ├── context_test.go │ │ └── main_test.go ├── context │ └── tests │ │ └── integration │ │ ├── context_test.go │ │ └── main_test.go ├── dockercompose │ ├── docker-compose.yml │ └── docker-health-check.sh ├── error │ └── tests │ │ └── integration │ │ ├── error_test.go │ │ └── main_test.go ├── filter │ ├── sentinel │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── sentinel_test.go │ └── token │ │ └── tests │ │ └── integration │ │ ├── helloworld_test.go │ │ └── main_test.go ├── healthcheck │ └── tests │ │ └── integration │ │ ├── healthcheck_test.go │ │ └── main_test.go ├── helloworld │ └── tests │ │ └── integration │ │ ├── helloworld_test.go │ │ └── main_test.go ├── java_interop │ └── service_discovery │ │ ├── interface │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── service_discovery_test.go │ │ └── service │ │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── service_discovery_test.go ├── otel │ └── tracing │ │ └── stdout │ │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── stdout_test.go ├── registry │ ├── nacos │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── userprovider_test.go │ └── zookeeper │ │ └── tests │ │ └── integration │ │ ├── helloworld_test.go │ │ └── main_test.go ├── retry │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── retry_test.go ├── rpc │ ├── grpc │ │ └── tests │ │ │ └── integration │ │ │ ├── grpcprovider_test.go │ │ │ └── main_test.go │ ├── multi-protocols │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── multirpc_test.go │ └── triple │ │ ├── instance │ │ └── tests │ │ │ └── integration │ │ │ ├── instanceprovider_test.go │ │ │ └── main_test.go │ │ ├── old_triple │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── oldtripleprovider_test.go │ │ ├── pb-json │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── pb-jsonprovider_test.go │ │ ├── pb │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── pbprovider_test.go │ │ ├── pb2 │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── pb2provider_test.go │ │ ├── reflection │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── reflectionprovider_test.go │ │ ├── registry │ │ └── tests │ │ │ └── integration │ │ │ ├── main_test.go │ │ │ └── registryprovider_test.go │ │ └── stream │ │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── streamprovider_test.go ├── streaming │ └── tests │ │ └── integration │ │ ├── main_test.go │ │ └── streaming_test.go └── timeout │ └── tests │ └── integration │ ├── main_test.go │ └── timeout_test.go ├── java_interop ├── non-protobuf-dubbo │ ├── README.md │ ├── go-client │ │ └── client.go │ ├── go-server │ │ └── server.go │ ├── java-client │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── hessian2 │ │ │ │ ├── api │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetResponse.java │ │ │ │ └── GreetingsService.java │ │ │ │ └── client │ │ │ │ └── Application.java │ │ │ └── resources │ │ │ └── log4j2.xml │ ├── java-server │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── hessian2 │ │ │ │ ├── api │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetResponse.java │ │ │ │ └── GreetingsService.java │ │ │ │ └── provider │ │ │ │ ├── Application.java │ │ │ │ └── GreetingsServiceImpl.java │ │ │ └── resources │ │ │ └── log4j2.xml │ └── proto │ │ ├── build.sh │ │ ├── greet.dubbo.go │ │ ├── greet.hessian2.go │ │ ├── greet.proto │ │ ├── hessian2_extend │ │ └── hessian2_extend.proto │ │ ├── java8_time │ │ └── java8_time.proto │ │ ├── java_exception │ │ └── java_exception.proto │ │ ├── java_math │ │ └── java_math.proto │ │ ├── java_sql_time │ │ └── java_sql_time.proto │ │ ├── java_util │ │ └── java_util.proto │ │ └── self_extension │ │ └── self_extension.proto ├── non-protobuf-triple.zip ├── non-protobuf-triple │ ├── README.md │ ├── go-client │ │ └── client.go │ ├── go-server │ │ └── server.go │ ├── java-client │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── tri │ │ │ │ └── hessian2 │ │ │ │ ├── api │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetResponse.java │ │ │ │ └── GreetingsService.java │ │ │ │ └── client │ │ │ │ └── Application.java │ │ │ └── resources │ │ │ └── log4j2.xml │ ├── java-server │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── tri │ │ │ │ └── hessian2 │ │ │ │ ├── api │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetResponse.java │ │ │ │ └── GreetingsService.java │ │ │ │ └── provider │ │ │ │ ├── Application.java │ │ │ │ └── GreetingsServiceImpl.java │ │ │ └── resources │ │ │ └── log4j2.xml │ └── proto │ │ ├── build.sh │ │ ├── greet.hessian2.go │ │ ├── greet.proto │ │ ├── greet.triple.go │ │ ├── greet_multi.proto │ │ ├── hessian2_extend │ │ └── hessian2_extend.proto │ │ ├── java8_time │ │ └── java8_time.proto │ │ ├── java_exception │ │ └── java_exception.proto │ │ ├── java_math │ │ └── java_math.proto │ │ ├── java_sql_time │ │ └── java_sql_time.proto │ │ ├── java_util │ │ └── java_util.proto │ │ └── self_extension │ │ └── self_extension.proto ├── protobuf-triple │ ├── README.md │ ├── go │ │ ├── go-client │ │ │ └── cmd │ │ │ │ └── client.go │ │ ├── go-server │ │ │ └── cmd │ │ │ │ └── server.go │ │ └── proto │ │ │ ├── greet.pb.go │ │ │ ├── greet.proto │ │ │ └── greet.triple.go │ └── java │ │ ├── java-client │ │ ├── build │ │ │ └── protobuf │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ ├── DubboGreeterTriple.java │ │ │ │ ├── Greeter.java │ │ │ │ ├── HelloReply.java │ │ │ │ ├── HelloReplyOrBuilder.java │ │ │ │ ├── HelloRequest.java │ │ │ │ ├── HelloRequestOrBuilder.java │ │ │ │ └── HelloWorldProto.java │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ └── Consumer.java │ │ │ ├── proto │ │ │ └── greet.proto │ │ │ └── resources │ │ │ └── log4j2.xml │ │ ├── java-server │ │ ├── build │ │ │ └── protobuf │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ ├── DubboGreeterTriple.java │ │ │ │ ├── Greeter.java │ │ │ │ ├── HelloReply.java │ │ │ │ ├── HelloReplyOrBuilder.java │ │ │ │ ├── HelloRequest.java │ │ │ │ ├── HelloRequestOrBuilder.java │ │ │ │ └── HelloWorldProto.java │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── sample │ │ │ │ ├── GreeterImpl.java │ │ │ │ └── Provider.java │ │ │ ├── proto │ │ │ └── greet.proto │ │ │ └── resources │ │ │ └── log4j2.xml │ │ └── pom.xml └── service_discovery │ ├── interface │ ├── README.md │ ├── go-client │ │ └── cmd │ │ │ └── client.go │ ├── go-server │ │ └── cmd │ │ │ └── server.go │ ├── java-client │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── samples │ │ │ │ ├── Main.java │ │ │ │ └── proto │ │ │ │ ├── DubboGreetServiceTriple.java │ │ │ │ ├── GreetProto.java │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetRequestOrBuilder.java │ │ │ │ ├── GreetResponse.java │ │ │ │ ├── GreetResponseOrBuilder.java │ │ │ │ ├── GreetService.java │ │ │ │ ├── SayHelloRequest.java │ │ │ │ ├── SayHelloRequestOrBuilder.java │ │ │ │ ├── SayHelloResponse.java │ │ │ │ └── SayHelloResponseOrBuilder.java │ │ │ └── resources │ │ │ ├── log4j.properties │ │ │ └── spring │ │ │ └── dubbo.consumer.xml │ ├── java-server │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── dubbo │ │ │ │ └── samples │ │ │ │ ├── Main.java │ │ │ │ ├── proto │ │ │ │ ├── DubboGreetServiceTriple.java │ │ │ │ ├── GreetProto.java │ │ │ │ ├── GreetRequest.java │ │ │ │ ├── GreetRequestOrBuilder.java │ │ │ │ ├── GreetResponse.java │ │ │ │ ├── GreetResponseOrBuilder.java │ │ │ │ ├── GreetService.java │ │ │ │ ├── SayHelloRequest.java │ │ │ │ ├── SayHelloRequestOrBuilder.java │ │ │ │ ├── SayHelloResponse.java │ │ │ │ └── SayHelloResponseOrBuilder.java │ │ │ │ └── service │ │ │ │ └── GreetServiceImpl.java │ │ │ ├── proto │ │ │ └── greet.proto │ │ │ └── resources │ │ │ ├── log4j.properties │ │ │ └── spring │ │ │ └── dubbo.server.xml │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ └── service │ ├── README.md │ ├── go-client │ └── cmd │ │ └── client.go │ ├── go-server │ └── cmd │ │ └── server.go │ ├── java-client │ ├── build │ │ └── protobuf │ │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── dubbo │ │ │ └── samples │ │ │ └── proto │ │ │ ├── DubboGreetServiceTriple.java │ │ │ ├── GreetProto.java │ │ │ ├── GreetRequest.java │ │ │ ├── GreetRequestOrBuilder.java │ │ │ ├── GreetResponse.java │ │ │ ├── GreetResponseOrBuilder.java │ │ │ ├── GreetService.java │ │ │ ├── SayHelloRequest.java │ │ │ ├── SayHelloRequestOrBuilder.java │ │ │ ├── SayHelloResponse.java │ │ │ └── SayHelloResponseOrBuilder.java │ ├── pom.xml │ ├── run.sh │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── dubbo │ │ │ └── samples │ │ │ └── Main.java │ │ ├── proto │ │ └── greet.proto │ │ └── resources │ │ ├── application.yml │ │ ├── dubbo.properties │ │ └── log4j.properties │ ├── java-server │ ├── build │ │ └── protobuf │ │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── dubbo │ │ │ └── samples │ │ │ └── proto │ │ │ ├── DubboGreetServiceTriple.java │ │ │ ├── GreetProto.java │ │ │ ├── GreetRequest.java │ │ │ ├── GreetRequestOrBuilder.java │ │ │ ├── GreetResponse.java │ │ │ ├── GreetResponseOrBuilder.java │ │ │ ├── GreetService.java │ │ │ ├── SayHelloRequest.java │ │ │ ├── SayHelloRequestOrBuilder.java │ │ │ ├── SayHelloResponse.java │ │ │ └── SayHelloResponseOrBuilder.java │ ├── pom.xml │ ├── run.sh │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── dubbo │ │ │ └── samples │ │ │ ├── Main.java │ │ │ └── service │ │ │ └── GreetServiceImpl.java │ │ ├── proto │ │ └── greet.proto │ │ └── resources │ │ ├── application.yml │ │ └── log4j.properties │ └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── llm ├── .env.example ├── README.md ├── README_zh.md ├── config │ └── config.go ├── go-client │ ├── cmd │ │ └── client.go │ └── frontend │ │ ├── handlers │ │ └── chat.go │ │ ├── main.go │ │ ├── service │ │ └── context.go │ │ ├── static │ │ ├── script.js │ │ └── style.css │ │ └── templates │ │ └── index.html ├── go-server │ └── cmd │ │ └── server.go ├── proto │ ├── chat.pb.go │ ├── chat.proto │ └── chat.triple.go ├── start_servers.bat └── start_servers.sh ├── logger ├── README.md ├── README_zh.md ├── custom │ └── cmd │ │ └── main.go ├── default │ └── cmd │ │ └── main.go ├── level │ └── cmd │ │ └── main.go └── rolling │ ├── cmd │ └── main.go │ └── conf │ └── dubbogo.yml ├── metrics ├── Deployment.yml ├── README.md ├── assert │ ├── dashboard.png │ ├── datasource.png │ ├── import-datasource.png │ ├── import-json.png │ ├── import.png │ └── podmonitor.png ├── go-client │ ├── Dockerfile │ ├── build.sh │ └── cmd │ │ └── main.go ├── go-server │ ├── Dockerfile │ ├── build.sh │ └── cmd │ │ └── main.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── online_boutique ├── LICENSE ├── README.md ├── docs │ ├── cloudshell-tutorial.md │ ├── cymbal-shops.md │ ├── development-guide.md │ ├── development-principles.md │ ├── img │ │ ├── architecture-diagram.png │ │ ├── jaeger-dependencies.png │ │ ├── memorystore.png │ │ ├── online-boutique-frontend-1.png │ │ └── online-boutique-frontend-2.png │ ├── jaeger.md │ ├── memorystore.md │ ├── network-policies │ │ ├── README.md │ │ ├── network-policy-adservice.yaml │ │ ├── network-policy-cartservice.yaml │ │ ├── network-policy-checkoutservice.yaml │ │ ├── network-policy-currencyservice.yaml │ │ ├── network-policy-deny-all.yaml │ │ ├── network-policy-emailservice.yaml │ │ ├── network-policy-frontend.yaml │ │ ├── network-policy-loadgenerator.yaml │ │ ├── network-policy-paymentservice.yaml │ │ ├── network-policy-productcatalogservice.yaml │ │ ├── network-policy-recommendationservice.yaml │ │ ├── network-policy-redis.yaml │ │ └── network-policy-shippingservice.yaml │ ├── service-mesh.md │ └── workload-identity.md ├── release │ └── kubernetes-manifests.yaml └── src │ ├── adservive │ ├── Dockerfile │ ├── Makefile │ ├── cli │ │ └── main.go │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── adservice.go │ ├── main.go │ └── proto │ │ ├── adservice.pb.go │ │ ├── adservice.proto │ │ └── adservice.triple.go │ ├── cartservice │ ├── Dockerfile │ ├── Makefile │ ├── cartstore │ │ ├── interface.go │ │ └── memory.go │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── cartservice.go │ ├── main.go │ └── proto │ │ ├── cartservice.pb.go │ │ ├── cartservice.proto │ │ └── cartservice.triple.go │ ├── checkoutservice │ ├── Dockerfile │ ├── Makefile │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── checkoutservice.go │ ├── main.go │ ├── money │ │ ├── money.go │ │ └── money_test.go │ ├── proto │ │ ├── hipstershop.pb.go │ │ ├── hipstershop.proto │ │ └── hipstershop.triple.go │ └── tracing.go │ ├── currencyservice │ ├── Dockerfile │ ├── Makefile │ ├── data │ │ └── currency_conversion.json │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── currencyservice.go │ ├── main.go │ └── proto │ │ ├── currencyservice.pb.go │ │ ├── currencyservice.proto │ │ └── currencyservice.triple.go │ ├── emailservice │ ├── Dockerfile │ ├── Makefile │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── emailservice.go │ ├── main.go │ ├── proto │ │ ├── email.pb.go │ │ ├── email.proto │ │ └── email.triple.go │ └── template │ │ └── confirmation.html │ ├── frontend │ ├── Dockerfile │ ├── Makefile │ ├── config │ │ └── config.go │ ├── deployment_details.go │ ├── go.mod │ ├── go.sum │ ├── handlers.go │ ├── main.go │ ├── middleware.go │ ├── money │ │ ├── money.go │ │ └── money_test.go │ ├── proto │ │ ├── hipstershop.pb.go │ │ ├── hipstershop.proto │ │ └── hipstershop.triple.go │ ├── rpc.go │ ├── static │ │ ├── favicon-cymbal.ico │ │ ├── favicon.ico │ │ ├── icons │ │ │ ├── Cymbal_NavLogo.svg │ │ │ ├── Hipster_Advert2.svg │ │ │ ├── Hipster_CartIcon.svg │ │ │ ├── Hipster_CheckOutIcon.svg │ │ │ ├── Hipster_CurrencyIcon.svg │ │ │ ├── Hipster_DownArrow.svg │ │ │ ├── Hipster_FacebookIcon.svg │ │ │ ├── Hipster_GooglePlayIcon.svg │ │ │ ├── Hipster_HelpIcon.svg │ │ │ ├── Hipster_HeroLogo.svg │ │ │ ├── Hipster_HeroLogoCyan.svg │ │ │ ├── Hipster_InstagramIcon.svg │ │ │ ├── Hipster_KitchenwareOffer.svg │ │ │ ├── Hipster_NavLogo.svg │ │ │ ├── Hipster_PinterestIcon.svg │ │ │ ├── Hipster_ProfileIcon.svg │ │ │ ├── Hipster_SearchIcon.svg │ │ │ ├── Hipster_TwitterIcon.svg │ │ │ ├── Hipster_UpDownControl.svg │ │ │ └── Hipster_YoutubeIcon.svg │ │ ├── images │ │ │ ├── Advert2BannerImage.png │ │ │ ├── AdvertBannerImage.png │ │ │ ├── HeroBannerImage.png │ │ │ ├── HeroBannerImage2.png │ │ │ ├── VRHeadsets.png │ │ │ ├── credits.txt │ │ │ ├── folded-clothes-on-white-chair-wide.jpg │ │ │ └── folded-clothes-on-white-chair.jpg │ │ ├── img │ │ │ └── products │ │ │ │ ├── bamboo-glass-jar.jpg │ │ │ │ ├── candle-holder.jpg │ │ │ │ ├── hairdryer.jpg │ │ │ │ ├── loafers.jpg │ │ │ │ ├── mug.jpg │ │ │ │ ├── salt-and-pepper-shakers.jpg │ │ │ │ ├── sunglasses.jpg │ │ │ │ ├── tank-top.jpg │ │ │ │ └── watch.jpg │ │ └── styles │ │ │ ├── cart.css │ │ │ ├── order.css │ │ │ └── styles.css │ └── templates │ │ ├── ad.html │ │ ├── cart.html │ │ ├── error.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── home.html │ │ ├── order.html │ │ ├── product.html │ │ └── recommendations.html │ ├── loadgenerator │ ├── Dockerfile │ ├── locustfile.py │ ├── requirements.in │ └── requirements.txt │ ├── paymentservice │ ├── Dockerfile │ ├── Makefile │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── paymentservice.go │ ├── main.go │ └── proto │ │ ├── payment.pb.go │ │ ├── payment.proto │ │ └── payment.triple.go │ ├── productcatalogservice │ ├── Dockerfile │ ├── Makefile │ ├── data │ │ └── products.json │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── productcatalogservice.go │ ├── main.go │ └── proto │ │ ├── productcatalogservice.pb.go │ │ ├── productcatalogservice.proto │ │ └── productcatalogservice.triple.go │ ├── recommendationservice │ ├── Dockerfile │ ├── Makefile │ ├── go.mod │ ├── go.sum │ ├── handler │ │ └── recommendationservice.go │ ├── main.go │ └── proto │ │ ├── recommendationservice.pb.go │ │ ├── recommendationservice.proto │ │ └── recommendationservice.triple.go │ └── shippingservice │ ├── Dockerfile │ ├── Makefile │ ├── config │ └── config.go │ ├── go.mod │ ├── go.sum │ ├── handler │ ├── quote.go │ ├── shippingservice.go │ └── tracker.go │ ├── main.go │ ├── proto │ ├── shippingservice.pb.go │ ├── shippingservice.proto │ └── shippingservice.triple.go │ └── tracing.go ├── otel └── tracing │ ├── README.md │ └── stdout │ ├── README.md │ ├── go-client │ └── cmd │ │ └── main.go │ ├── go-server │ └── cmd │ │ └── main.go │ └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── registry ├── README.md ├── nacos │ ├── README.md │ ├── go-client │ │ └── cmd │ │ │ └── client.go │ ├── go-server │ │ └── cmd │ │ │ └── server.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go └── zookeeper │ ├── README.md │ ├── go-client │ └── cmd │ │ └── client.go │ ├── go-server │ └── cmd │ │ └── server.go │ └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── retry ├── README.md ├── README_CN.md ├── go-client │ └── cmd │ │ └── main.go ├── go-server │ └── cmd │ │ └── main.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── rpc ├── grpc │ ├── README.md │ ├── README_zh.md │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ ├── grpc-client │ │ └── cmd │ │ │ └── main.go │ ├── grpc-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ ├── greet.triple.go │ │ └── greet_grpc.pb.go ├── multi-protocols │ ├── README.md │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go └── triple │ ├── instance │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ ├── old_triple │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ ├── cmd │ │ │ └── main.go │ │ └── conf │ │ │ └── dubbogo.yml │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet_triple.pb.go │ ├── pb-json │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ ├── pb │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ ├── pb2 │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ ├── reflection │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ ├── registry │ ├── go-client │ │ └── cmd │ │ │ └── main.go │ ├── go-server │ │ └── cmd │ │ │ └── main.go │ └── proto │ │ ├── greet.pb.go │ │ ├── greet.proto │ │ └── greet.triple.go │ └── stream │ ├── go-client │ └── cmd │ │ └── main.go │ ├── go-server │ └── cmd │ │ └── main.go │ └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── start_integrate_test.sh ├── streaming ├── README.md ├── README_zh.md ├── go-client │ └── cmd │ │ └── client.go ├── go-server │ └── cmd │ │ └── server.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── task └── shop │ ├── .images │ └── shop-arc.png │ ├── READEME_CN.md │ ├── comment │ ├── api │ │ ├── comment_api.pb.go │ │ ├── comment_api.proto │ │ └── comment_api.triple.go │ ├── client │ │ └── cmd │ │ │ └── client.go │ ├── server_v1 │ │ └── cmd │ │ │ └── server.go │ └── server_v2 │ │ └── cmd │ │ └── server.go │ ├── detail │ ├── api │ │ ├── detail_api.pb.go │ │ ├── detail_api.proto │ │ └── detail_api.triple.go │ ├── client │ │ └── cmd │ │ │ └── client.go │ ├── server_v1 │ │ └── cmd │ │ │ └── server.go │ └── server_v2 │ │ └── cmd │ │ └── server.go │ ├── frontend │ ├── api │ │ └── frontend_api.go │ ├── cmd │ │ └── main.go │ ├── pages │ │ ├── router.go │ │ ├── server.go │ │ ├── static │ │ │ ├── architecture.png │ │ │ ├── goods.png │ │ │ └── jquery-3.6.3.min.js │ │ └── templates │ │ │ ├── detail.html │ │ │ └── index.html │ └── server_v1 │ │ └── server.go │ ├── go.mod │ ├── go.sum │ ├── order │ ├── api │ │ ├── order_api.pb.go │ │ ├── order_api.proto │ │ └── order_api.triple.go │ ├── client │ │ └── cmd │ │ │ └── client.go │ ├── server_v1 │ │ └── cmd │ │ │ └── server.go │ └── server_v2 │ │ └── cmd │ │ └── server.go │ └── user │ ├── api │ ├── user_api.pb.go │ ├── user_api.proto │ └── user_api.triple.go │ ├── go-client │ └── cmd │ │ └── client.go │ └── go-server │ └── cmd │ └── server.go ├── timeout ├── README.md ├── README_cn.md ├── go-client │ └── cmd │ │ └── client.go ├── go-server │ └── cmd │ │ └── server.go └── proto │ ├── greet.pb.go │ ├── greet.proto │ └── greet.triple.go ├── transcation └── seata-go │ ├── dockercompose │ └── docker-compose.yml │ ├── non-idl │ ├── README.md │ ├── README_zh.md │ ├── client │ │ ├── cmd │ │ │ └── client.go │ │ ├── seata-client │ │ │ └── seata.go │ │ └── service │ │ │ └── service.go │ └── server │ │ ├── cmd │ │ └── server.go │ │ └── service │ │ └── user_provider.go │ └── triple │ ├── README.md │ ├── README_zh.md │ ├── client │ ├── cmd │ │ └── main.go │ └── seata-client │ │ └── seata.go │ ├── proto │ ├── seata.pb.go │ ├── seata.proto │ └── seata.triple.go │ ├── server │ └── cmd │ │ └── main.go │ └── service │ └── service.go └── waiting_launch.sh /.asf.yaml: -------------------------------------------------------------------------------- 1 | github: 2 | features: 3 | wiki: true 4 | issues: true 5 | merge: true 6 | projects: true 7 | notifications: 8 | commits: commits@dubbo.apache.org 9 | issues: notifications@dubbo.apache.org 10 | pullrequests: notifications@dubbo.apache.org 11 | jira_options: link label link label 12 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "gomod" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | target-branch: "master" 13 | 14 | - package-ecosystem: "github-actions" 15 | # Workflow files stored in the 16 | # default location of `.github/workflows` 17 | directory: "/" 18 | schedule: 19 | interval: "weekly" 20 | target-branch: "master" 21 | 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | *.DS_Store 8 | *__debug_bin* 9 | 10 | dist/ 11 | *.log 12 | # Test binary, build with `go test -c` 13 | *.test 14 | 15 | # Output of the go coverage tool, specifically when used with LiteIDE 16 | *.out 17 | coverage.txt 18 | 19 | # .env is a user-specific environment configuration file 20 | *.env 21 | 22 | *.idea 23 | *.iml 24 | target/ 25 | classes 26 | dubbo.json 27 | 28 | # Gopkg.lock 29 | vendor/ 30 | 31 | logs/ 32 | .vscode/ 33 | cache/ 34 | log/ 35 | coverage.txt 36 | 37 | # maven 38 | .classpath 39 | .project 40 | .settings/ 41 | 42 | # java build 43 | general/dubbo3/api/dubbogo-java/java-client/build/ 44 | general/dubbo3/api/dubbogo-java/java-server/build/ 45 | 46 | # license header 47 | /license-header-checker-linux/ 48 | /license-header-checker-linux.zip -------------------------------------------------------------------------------- /.golangci.yml: -------------------------------------------------------------------------------- 1 | linters-settings: 2 | gocyclo: 3 | min-complexity: 10 4 | dupl: 5 | threshold: 100 6 | goconst: 7 | min-len: 2 8 | min-occurrences: 2 9 | depguard: 10 | rules: 11 | main: 12 | deny: 13 | - pkg: "github.com/sirupsen/logrus" 14 | desc: logging is allowed only by logutils.Log, logrus, is allowed to use only in logutils package 15 | lll: 16 | line-length: 140 17 | goimports: 18 | local-prefixes: github.com/golangci/golangci-lint 19 | gocritic: 20 | enabled-tags: 21 | - performance 22 | - style 23 | - experimental 24 | disabled-checks: 25 | - wrapperFunc 26 | 27 | linters: 28 | disable-all: true 29 | enable: 30 | - staticcheck 31 | - ineffassign 32 | - misspell 33 | 34 | issues: 35 | exclude-dirs: 36 | - test/testdata_etc 37 | - pkg/golinters/goanalysis/(checker|passes) 38 | exclude-rules: 39 | - text: "weak cryptographic primitive" 40 | linters: 41 | - gosec 42 | - linters: 43 | - staticcheck 44 | text: "SA1019:" 45 | 46 | 47 | -------------------------------------------------------------------------------- /.images/metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/.images/metrics.png -------------------------------------------------------------------------------- /.images/run-configurations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/.images/run-configurations.png -------------------------------------------------------------------------------- /.images/samples-rpc-triple-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/.images/samples-rpc-triple-client.png -------------------------------------------------------------------------------- /.images/samples-rpc-triple-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/.images/samples-rpc-triple-server.png -------------------------------------------------------------------------------- /compatibility/api/generate.sh: -------------------------------------------------------------------------------- 1 | export GO111MODULE="on" 2 | export GOPROXY="http://goproxy.io" 3 | go install github.com/dubbogo/tools/cmd/protoc-gen-go-triple@v1.0.8 4 | protoc --go_out=. --go-triple_out=. samples_api.proto -------------------------------------------------------------------------------- /compatibility/apisix/apisix-compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | apisix: 4 | image: apache/apisix:2.13.1-alpine 5 | restart: always 6 | volumes: 7 | - ./apisix_log:/usr/local/apisix/logs 8 | - ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro 9 | ports: 10 | - "80:9080/tcp" 11 | - "9091:9091/tcp" 12 | - "443:9443/tcp" 13 | networks: 14 | apisix: 15 | default_network: 16 | etcd: 17 | environment: 18 | - TZ=Asia/Shanghai 19 | networks: 20 | apisix: 21 | driver: bridge 22 | default_network: 23 | external: 24 | name: default_network 25 | etcd: 26 | external: 27 | name: etcd-compose_etcd 28 | -------------------------------------------------------------------------------- /compatibility/apisix/apisix-dashboard-compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | apisix-dashboard: 4 | image: apache/apisix-dashboard:2.11-alpine 5 | restart: always 6 | volumes: 7 | - ./dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml 8 | ports: 9 | - "9000:9000" 10 | networks: 11 | apisix: 12 | etcd: 13 | environment: 14 | - TZ=Asia/Shanghai 15 | networks: 16 | apisix: 17 | external: 18 | name: apisix-compose_apisix 19 | etcd: 20 | external: 21 | name: etcd-compose_etcd 22 | 23 | -------------------------------------------------------------------------------- /compatibility/apisix/etcd-compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | etcd: 4 | image: bitnami/etcd:3.4.9 5 | user: root 6 | restart: always 7 | volumes: 8 | - ./etcd_data:/etcd_data 9 | environment: 10 | ETCD_DATA_DIR: /etcd_data 11 | ETCD_ENABLE_V2: "true" 12 | ALLOW_NONE_AUTHENTICATION: "yes" 13 | ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379" 14 | ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" 15 | TZ: "Asia/Shanghai" 16 | ports: 17 | - "2379:2379/tcp" 18 | networks: 19 | etcd: 20 | networks: 21 | etcd: 22 | driver: bridge 23 | -------------------------------------------------------------------------------- /compatibility/apisix/helloworld/.gitignore: -------------------------------------------------------------------------------- 1 | /log 2 | /.idea 3 | -------------------------------------------------------------------------------- /compatibility/apisix/helloworld/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.18.0-alpine3.15 as builder 2 | ENV TIMEZONE Asia/Shanghai 3 | RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ 4 | && apk update && apk add git 5 | WORKDIR /aixichen/helloworld 6 | RUN mkdir -p /aixichen/helloworld 7 | #添加文件 8 | COPY ./ /aixichen/helloworld 9 | ##编译 10 | RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct \ 11 | && cd /aixichen/helloworld/ && go build -o aixichen-service 12 | 13 | FROM alpine:3.15 14 | RUN mkdir -p /aixichen/helloworld 15 | COPY --from=builder /aixichen/helloworld/aixichen-service /aixichen/helloworld 16 | WORKDIR /aixichen/helloworld 17 | 18 | EXPOSE 80 19 | ENTRYPOINT ["./aixichen-service"] 20 | -------------------------------------------------------------------------------- /compatibility/apisix/helloworld/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/apisix/helloworld/README.md -------------------------------------------------------------------------------- /compatibility/apisix/helloworld/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services : 3 | helloworld: 4 | build: ./ #编译 5 | # ports: 6 | # - 8084:80 # 绑定服务器端口:容器端口 7 | networks: 8 | default_network: 9 | restart: always 10 | environment: 11 | - TZ=Asia/Shanghai 12 | networks: 13 | default_network: 14 | external: 15 | name: default_network 16 | -------------------------------------------------------------------------------- /compatibility/apisix/mysql5.7-compose/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/apisix/mysql5.7-compose/README.md -------------------------------------------------------------------------------- /compatibility/apisix/mysql5.7-compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services : 3 | mysql: 4 | build: ./mysql #编译./mysql下的Dockerfile 5 | restart: always 6 | ports: 7 | - "3306:3306" # 绑定服务器端口:容器端口 8 | volumes: 9 | - ./data/mysql:/var/lib/mysql 10 | environment: 11 | - MYSQL_ROOT_PASSWORD=123456 12 | - TZ=Asia/Shanghai 13 | -------------------------------------------------------------------------------- /compatibility/apisix/mysql5.7-compose/mysql/Dockerfile: -------------------------------------------------------------------------------- 1 | from mysql:5.7.25 2 | maintainer mandarava 3 | #run mv /etc/mysql/conf.d/my.conf /etc/mysql/conf.d/my.conf.bak 4 | run echo "Asia/Shanghai" > /etc/timezone \ 5 | && cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 6 | 7 | add my.cnf /etc 8 | user root 9 | #mkdir -p /var/mysql/logs && mkdir -p /var/mysql/data 10 | #docker run -p 3306:3306 --name mymysql -v /var/mysql/logs:/logs -v /var/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d registry.cn-hangzhou.aliyuncs.com/mandarava/mysql-docker:latest 11 | #进入容器 12 | #docker exec -it 833 /bin/bash 13 | #允许远程访问 14 | #use mysql; 15 | #GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; 16 | #flush privileges; 17 | #select host,user from user; //查看修改是否成功。 18 | 19 | -------------------------------------------------------------------------------- /compatibility/apisix/mysql5.7-compose/mysql/my.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | skip-name-resolve 3 | max_allowed_packet = 100M 4 | innodb_buffer_pool_size=100M 5 | explicit_defaults_for_timestamp=true 6 | max_connections=500 7 | bind-address=0.0.0.0 8 | default-time-zone = '+8:00' 9 | #解决不监听ipv4 10 | sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES 11 | #ANSI_QUOTES 解决双引号导入失败问题 12 | -------------------------------------------------------------------------------- /compatibility/apisix/nacos2.0.3-compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | nacos: 4 | image: nacos/nacos-server:2.0.3 5 | environment: 6 | - PREFER_HOST_MODE=hostname 7 | - MODE=standalone 8 | - SPRING_DATASOURCE_PLATFORM=derby 9 | - JVM_XMS=128m 10 | - JVM_XMX=128m 11 | # - SPRING_DATASOURCE_PLATFORM=mysql 12 | # - MYSQL_SERVICE_HOST=mysql 13 | # - MYSQL_SERVICE_DB_NAME=nacos_config_apisix 14 | # - MYSQL_SERVICE_PORT=3306 15 | # - MYSQL_SERVICE_USER=root 16 | # - MYSQL_SERVICE_PASSWORD=123456 17 | - TZ=Asia/Shanghai 18 | volumes: 19 | - ./logs/:/home/nacos/logs 20 | - ./nacos_conf/custom.properties:/home/nacos/init.d/custom.properties 21 | ports: 22 | - "8848:8848" 23 | - "9848:9848" 24 | - "9555:9555" 25 | restart: always 26 | networks: 27 | #mysql_network: 28 | default_network: 29 | networks: 30 | default_network: 31 | external: 32 | name: default_network 33 | # mysql_network: 34 | # external: 35 | # name: mysql57-compose_default 36 | -------------------------------------------------------------------------------- /compatibility/apisix/nacos2.0.3-compose/nacos_conf/custom.properties: -------------------------------------------------------------------------------- 1 | #spring.security.enabled=false 2 | #management.security=false 3 | #security.basic.enabled=false 4 | #nacos.security.ignore.urls=/** 5 | #management.metrics.export.elastic.host=http://localhost:9200 6 | # metrics for prometheus 7 | management.endpoints.web.exposure.include=* 8 | 9 | # metrics for elastic search 10 | #management.metrics.export.elastic.enabled=false 11 | #management.metrics.export.elastic.host=http://localhost:9200 12 | 13 | # metrics for influx 14 | #management.metrics.export.influx.enabled=false 15 | #management.metrics.export.influx.db=springboot 16 | #management.metrics.export.influx.uri=http://localhost:8086 17 | #management.metrics.export.influx.auto-create-db=true 18 | #management.metrics.export.influx.consistency=one 19 | #management.metrics.export.influx.compressed=true -------------------------------------------------------------------------------- /compatibility/async/README.md: -------------------------------------------------------------------------------- 1 | # Async RPC Dubbo for Dubbo-go 2 | 3 | For api definition and go client and server startup, please refer to [dubbo-go 3.0 quickstart](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html) 4 | 5 | ## Instructions 6 | ### 1. Start zookeeper 7 | Execute the command `docker run --rm -p 2181:2181 zookeeper` or `make -f $DUBBO_GO_SAMPLES_ROOT_PATH/build/Makefile docker-up`. 8 | If you choose the second way, please ensure that you have set the environment $DUBBO_GO_SAMPLES_ROOT_PATH. 9 | 10 | ### 2. Start the server 11 | 12 | Use goland to start async/go-server/cmd/server.go 13 | 14 | ### 3. Start the client 15 | 16 | Use goland to start async/go-client/cmd/client.go -------------------------------------------------------------------------------- /compatibility/async/README_zh.md: -------------------------------------------------------------------------------- 1 | # 异步 RPC Dubbo for Dubbo-go 3.0 2 | 3 | api 定义以及 go 客户端、服务端启动,可以参考 [dubbo-go 3.0 快速开始](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html) 4 | 5 | ## 使用方法 6 | 1. 启动 zookeeper 7 | 8 | 2. 启动服务端 9 | 10 | 使用 goland 启动 async/go-server/cmd/server.go 11 | 12 | 3. 启动客户端 13 | 14 | 使用 goland 启动 async/go-client/com/client.go 15 | -------------------------------------------------------------------------------- /compatibility/async/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | consumer: 9 | references: 10 | UserProvider: 11 | protocol: dubbo 12 | interface: org.apache.dubbo.sample.UserProvider 13 | async: true 14 | UserProviderV2: 15 | protocol: dubbo 16 | interface: org.apache.dubbo.sample.UserProviderV2 17 | async: true -------------------------------------------------------------------------------- /compatibility/async/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | dubbo: 11 | name: dubbo 12 | port: 20000 13 | provider: 14 | services: 15 | UserProvider: 16 | interface: org.apache.dubbo.sample.UserProvider 17 | UserProviderV2: 18 | interface: org.apache.dubbo.sample.UserProviderV2 -------------------------------------------------------------------------------- /compatibility/config-api/README.md: -------------------------------------------------------------------------------- 1 | ## 配置API 2 | 3 | 配置API旨在支持用户通过API的形式来使用dubbo-go框架,而无需定义配置文件。 4 | 配置API具有更高的灵活性,可以在代码中动态地写入配置条目,从而启动框架服务,或者生成自己需要使用的实例。例如注册中心、配置中心等模块。 5 | 6 | ### 目录结构 7 | 8 | -configcenter/ 9 | 10 | 使用配置API,从远程配置中心读取框架启动配置,详情见 [README](rpc/README.md) 11 | 12 | - rpc/ 13 | 14 | 使用配置API启动provider端和consumer端,发起调用 15 | 16 | - subModule/ 17 | 18 | 使用配置API 获取框架特定组件的实例 19 | -------------------------------------------------------------------------------- /compatibility/config-api/config-merge/go-client/conf/dubbogo-local.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | custom: 3 | config-map: 4 | test-config: true 5 | registries: 6 | demoZK: 7 | protocol: zookeeper 8 | timeout: 10s 9 | address: 127.0.0.1:2181 10 | consumer: 11 | references: 12 | GreeterClientImpl: 13 | protocol: tri 14 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/config-api/config-merge/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | profiles: 3 | active: local 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | references: 11 | GreeterClientImpl: 12 | protocol: tri 13 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/config-api/config-merge/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/config-api/subModule/configcenter/main.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package main 19 | 20 | import ( 21 | _ "dubbo.apache.org/dubbo-go/v3/imports" 22 | ) 23 | 24 | // todo 25 | func main() { 26 | } 27 | -------------------------------------------------------------------------------- /compatibility/config-api/subModule/registry/README.md: -------------------------------------------------------------------------------- 1 | ## 通过配置API生成实例化子模块 2 | 3 | ### 注册中心 4 | 5 | 例子: 6 | ```go 7 | // 通过配置 API 生成注册中心配置,此处为默认zk配置 8 | registryConfig := config.NewRegistryConfigWithProtocolDefaultPort("zookeeper") 9 | 10 | // 调用注册中心配置API,获取注册中心实例 reg 11 | reg, err := registryConfig.GetInstance(common.PROVIDER) 12 | if err != nil { 13 | panic(err) 14 | } 15 | 16 | // 生成一个 provider URL 17 | ivkURL, err := common.NewURL("mock://localhost:8080", 18 | common.WithPath("com.alibaba.dubbogo.HelloService"), 19 | common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)), 20 | common.WithMethods([]string{"GetUser", "SayHello"}), 21 | ) 22 | if err != nil { 23 | panic(err) 24 | } 25 | // 使用新生成的注册中心实例注册 26 | if err := reg.Register(ivkURL); err != nil { 27 | panic(err) 28 | } 29 | time.Sleep(time.Second * 30) 30 | // 反注册 31 | if err := reg.UnRegister(ivkURL); err != nil { 32 | panic(err) 33 | } 34 | 35 | ``` -------------------------------------------------------------------------------- /compatibility/config-api/subModule/service/main.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package main 19 | 20 | import ( 21 | _ "dubbo.apache.org/dubbo-go/v3/imports" 22 | ) 23 | 24 | // todo 25 | func main() { 26 | } 27 | -------------------------------------------------------------------------------- /compatibility/configcenter/nacos/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | config-center: 3 | protocol: nacos 4 | address: 127.0.0.1:8848 5 | data-id: dubbo-go-samples-configcenter-nacos-client 6 | group: myGroup # default is DEFAULT_GROUP 7 | # namespace: 9fb00abb-278d-42fc-96bf-e0151601e4a1 # default is public 8 | 9 | 10 | ## set in config center, group is 'dubbo', dataid is 'dubbo-go-samples-configcenter-nacos-client', namespace is default 11 | #dubbo: 12 | # registries: 13 | # demoZK: 14 | # protocol: zookeeper 15 | # timeout: 3s 16 | # address: 127.0.0.1:2181 17 | # consumer: 18 | # references: 19 | # GreeterClientImpl: 20 | # protocol: tri 21 | # interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/configcenter/nacos/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | config-center: 3 | protocol: nacos 4 | address: 127.0.0.1:8848 5 | data-id: dubbo-go-samples-configcenter-nacos-server 6 | group: myGroup # nacos group, default is DEFAULT_GROUP 7 | # namespace: 9fb00abb-278d-42fc-96bf-e0151601e4a1 # nacos namespaceID, default is public namespace 8 | 9 | ## set in config center, group is 'dubbo', dataid is 'dubbo-go-samples-configcenter-nacos-server', namespace is default 10 | #dubbo: 11 | # registries: 12 | # demoZK: 13 | # protocol: zookeeper 14 | # timeout: 3s 15 | # address: 127.0.0.1:2181 16 | # protocols: 17 | # triple: 18 | # name: tri 19 | # port: 20000 20 | # provider: 21 | # services: 22 | # GreeterProvider: 23 | # interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/configcenter/zookeeper/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | config-center: 3 | protocol: zookeeper 4 | address: 127.0.0.1:2181 5 | data-id: "dubbo-go-samples-configcenter-zookeeper-client" 6 | 7 | ## set in config center, group is 'dubbo', dataid is 'dubbo-go-samples-configcenter-zookeeper-client', namespace is default 8 | #dubbo: 9 | # registries: 10 | # demoZK: 11 | # protocol: zookeeper 12 | # timeout: 3s 13 | # address: 127.0.0.1:2181 14 | # consumer: 15 | # registry-ids: 16 | # - demoZK 17 | # references: 18 | # GreeterClientImpl: 19 | # protocol: tri 20 | # interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/configcenter/zookeeper/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | config-center: 3 | protocol: zookeeper 4 | address: 127.0.0.1:2181 5 | data-id: "dubbo-go-samples-configcenter-zookeeper-server" 6 | 7 | ## set in config center, group is 'dubbo', dataid is 'dubbo-go-samples-configcenter-zookeeper-server', namespace is default 8 | #dubbo: 9 | # registries: 10 | # demoZK: 11 | # protocol: zookeeper 12 | # timeout: 3s 13 | # address: 127.0.0.1:2181 14 | # protocols: 15 | # triple: 16 | # name: "tri" 17 | # port: 20000 18 | # provider: 19 | # registry-ids: 20 | # - demoZK 21 | # services: 22 | # GreeterProvider: 23 | # protocol: triple 24 | # interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/context/dubbo/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | dubbo: 8 | name: dubbo 9 | port: 20000 10 | consumer: 11 | references: 12 | UserProvider: 13 | protocol: dubbo 14 | interface: org.apache.dubbo.UserProvider -------------------------------------------------------------------------------- /compatibility/context/dubbo/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | dubbo: 8 | name: dubbo 9 | port: 20000 10 | provider: 11 | services: 12 | UserProvider: 13 | interface: org.apache.dubbo.UserProvider -------------------------------------------------------------------------------- /compatibility/context/triple/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | consumer: 8 | references: 9 | GreeterClientImpl: 10 | protocol: tri -------------------------------------------------------------------------------- /compatibility/context/triple/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: "" # read interface from pb -------------------------------------------------------------------------------- /compatibility/direct/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | consumer: 3 | references: 4 | GreeterClientImpl: 5 | url: tri://localhost:20000 6 | protocol: tri -------------------------------------------------------------------------------- /compatibility/direct/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | protocols: 3 | triple: 4 | name: tri 5 | port: 20000 6 | provider: 7 | services: 8 | GreeterProvider: 9 | interface: "" # read interface from pb -------------------------------------------------------------------------------- /compatibility/error/triple/hessian2/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | consumer: 8 | references: 9 | ErrorResponseProvider: 10 | protocol: tri 11 | serialization: hessian2 12 | interface: com.apache.dubbo.sample.basic.ErrorResponseProvider # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/error/triple/hessian2/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | ErrorResponseProvider: 13 | serialization: hessian2 14 | interface: com.apache.dubbo.sample.basic.ErrorResponseProvider # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/error/triple/pb/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | consumer: 6 | references: 7 | GreeterClientImpl: 8 | protocol: tri 9 | interface: org.apache.dubbo.demo.Greeter -------------------------------------------------------------------------------- /compatibility/error/triple/pb/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | protocols: 6 | triple: 7 | name: tri 8 | port: 20000 9 | provider: 10 | services: 11 | ErrorResponseProvider: 12 | interface: org.apache.dubbo.demo.Greeter -------------------------------------------------------------------------------- /compatibility/filter/custom/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | filter: myClientFilter 11 | check: true 12 | request_timeout: 3s 13 | connect_timeout: 3s 14 | references: 15 | GreeterClientImpl: 16 | protocol: tri -------------------------------------------------------------------------------- /compatibility/filter/custom/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | tripleProtocol: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | filter: myServerFilter 14 | loadbalance: random 15 | warmup: 100 16 | cluster: failover 17 | -------------------------------------------------------------------------------- /compatibility/filter/token/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | references: 11 | GreeterClientImpl: 12 | protocol: tri -------------------------------------------------------------------------------- /compatibility/filter/token/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | tripleProtocol: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | filter: token 14 | token: "dubbo-go" 15 | -------------------------------------------------------------------------------- /compatibility/filter/tpslimit/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | request_timeout: 3s 11 | connect_timeout: 3s 12 | references: 13 | UserProvider: 14 | retries: 0 15 | protocol: dubbo 16 | interface: org.apache.dubbo.UserProvider -------------------------------------------------------------------------------- /compatibility/game/go-server-game/pkg/consumer.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package pkg 19 | 20 | import ( 21 | "github.com/apache/dubbo-go-samples/compatibility/game/pkg/consumer/gate" 22 | ) 23 | 24 | var GateBasketball = gate.BasketballService{} 25 | -------------------------------------------------------------------------------- /compatibility/game/pkg/pojo/info.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package pojo 19 | 20 | type Info struct { 21 | Name string `json:"name"` 22 | Score int `json:"score"` 23 | } 24 | 25 | func (m *Info) JavaClassName() string { 26 | return "org.apache.dubbo.pojo.Info" 27 | } 28 | -------------------------------------------------------------------------------- /compatibility/game/website/img/bac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/game/website/img/bac.png -------------------------------------------------------------------------------- /compatibility/generic/default/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | protocols: 8 | dubbo: 9 | name: dubbo 10 | port: 20000 11 | triple: 12 | name: tri 13 | port: 20001 14 | provider: 15 | registry-ids: zk 16 | services: 17 | UserProvider: 18 | serialization: hessian2 19 | interface: org.apache.dubbo.samples.UserProvider 20 | UserProviderTriple: 21 | serialization: hessian2 22 | interface: org.apache.dubbo.samples.UserProviderTriple -------------------------------------------------------------------------------- /compatibility/generic/default/go-server/pkg/user_response.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package pkg 19 | 20 | type UserResponse struct { 21 | Users []*User 22 | } 23 | 24 | func (u *UserResponse) JavaClassName() string { 25 | return "org.apache.dubbo.samples.UserResponse" 26 | } 27 | -------------------------------------------------------------------------------- /compatibility/generic/default/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.ApiConsumer" -------------------------------------------------------------------------------- /compatibility/generic/default/java-client/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ## Logger configure file for myproject 2 | log.dir=logs/ 3 | datestamp=yyyy-MM-dd/HH:mm:ss.SSS 4 | 5 | log4j.rootLogger=DEBUG, file, console 6 | 7 | log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 8 | log4j.appender.file.threshold=DEBUG 9 | log4j.appender.file.File=${log.dir}/log4j.log 10 | log4j.appender.file.DatePattern=-yyyyMMddHH 11 | log4j.appender.file.ImmediateFlush=true 12 | log4j.appender.file.Append=true 13 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 15 | 16 | log4j.appender.console=org.apache.log4j.ConsoleAppender 17 | log4j.appender.console.Threshold=DEBUG 18 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 19 | log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 20 | -------------------------------------------------------------------------------- /compatibility/generic/default/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.ApiProvider" -------------------------------------------------------------------------------- /compatibility/generic/default/java-server/src/main/java/org/apache/dubbo/samples/Gender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.samples; 19 | 20 | public enum Gender { 21 | MAN, 22 | WOMAN 23 | } 24 | -------------------------------------------------------------------------------- /compatibility/generic/default/java-server/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ## Logger configure file for myproject 2 | log.dir=logs/ 3 | datestamp=yyyy-MM-dd/HH:mm:ss.SSS 4 | 5 | log4j.rootLogger=DEBUG, file, console 6 | 7 | log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 8 | log4j.appender.file.threshold=DEBUG 9 | log4j.appender.file.File=${log.dir}/log4j.log 10 | log4j.appender.file.DatePattern=-yyyyMMddHH 11 | log4j.appender.file.ImmediateFlush=true 12 | log4j.appender.file.Append=true 13 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 15 | 16 | log4j.appender.console=org.apache.log4j.ConsoleAppender 17 | log4j.appender.console.Threshold=DEBUG 18 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 19 | log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 20 | 21 | -------------------------------------------------------------------------------- /compatibility/logger/custom/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: "" # read interface name from pb -------------------------------------------------------------------------------- /compatibility/logger/default/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: "" # read interface name from pb -------------------------------------------------------------------------------- /compatibility/logger/level/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: "" # read interface name from pb -------------------------------------------------------------------------------- /compatibility/logger/rolling/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | triple: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | interface: "" 14 | logger: 15 | lumberjack-config: 16 | filename: logs.log 17 | maxSize: 1 18 | maxAge: 3 19 | maxBackups: 5 20 | localTime: true 21 | compress: false -------------------------------------------------------------------------------- /compatibility/mesh/deploy/Namespace.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: dubbo-demo 5 | labels: 6 | istio-injection: enabled -------------------------------------------------------------------------------- /compatibility/mesh/deploy/consumer/Service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: client-demo 5 | namespace: dubbo-demo 6 | spec: 7 | type: ClusterIP 8 | sessionAffinity: None 9 | selector: 10 | app: client-demo 11 | ports: 12 | - name: grpc-dubbo 13 | protocol: TCP 14 | port: 50052 15 | targetPort: 50052 -------------------------------------------------------------------------------- /compatibility/mesh/deploy/provider/Service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: server-demo 5 | namespace: dubbo-demo 6 | spec: 7 | type: ClusterIP 8 | sessionAffinity: None 9 | selector: 10 | app: server-demo 11 | ports: 12 | - name: grpc-tri 13 | port: 50052 14 | targetPort: 50052 15 | -------------------------------------------------------------------------------- /compatibility/mesh/go-client/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.18.0-alpine3.15 as builder 2 | ENV TIMEZONE Asia/Shanghai 3 | WORKDIR /mesh/ 4 | #添加文件 5 | COPY go.mod ./ 6 | COPY go.sum ./ 7 | COPY conf ./conf 8 | COPY cmd ./cmd 9 | ##编译 10 | RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download 11 | RUN go build -o client-demo ./... 12 | 13 | FROM alpine:3.15 14 | WORKDIR /mesh 15 | COPY --from=builder /mesh/client-demo ./client-demo 16 | COPY --from=builder /mesh/conf . 17 | 18 | ENV DUBBO_GO_CONFIG_PATH="./dubbogo.yml" 19 | ENTRYPOINT ["./client-demo"] 20 | -------------------------------------------------------------------------------- /compatibility/mesh/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: client-demo 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | mesh-enable: true 11 | references: 12 | GreeterClientImpl: 13 | protocol: tri 14 | provided_by: server-demo 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/mesh/go-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.18.0-alpine3.15 as builder 2 | ENV TIMEZONE Asia/Shanghai 3 | WORKDIR /mesh/ 4 | #添加文件 5 | COPY go.mod ./ 6 | COPY go.sum ./ 7 | COPY conf ./conf 8 | COPY cmd ./cmd 9 | 10 | ##编译 11 | RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download 12 | RUN go build -o server-demo ./... 13 | 14 | FROM alpine:3.15 15 | WORKDIR /mesh 16 | COPY --from=builder /mesh/server-demo ./server-demo 17 | COPY --from=builder /mesh/conf/ . 18 | 19 | ENV DUBBO_GO_CONFIG_PATH="./dubbogo.yml" 20 | EXPOSE 50052 21 | ENTRYPOINT ["./server-demo"] 22 | -------------------------------------------------------------------------------- /compatibility/mesh/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: server-demo 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: N/A 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 50052 12 | provider: 13 | services: 14 | GreeterProvider: 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/metrics/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | version: 3.0.1 4 | metrics: 5 | enable: true # default is true 6 | path: /metrics # default is /metrics 7 | summary-max-age: 60000000000 # 1 minute, default is 10min 8 | port: 9092 # default is 9090 9 | registries: 10 | demoZK: 11 | protocol: zookeeper 12 | timeout: 3s 13 | address: 127.0.0.1:2181 14 | consumer: 15 | references: 16 | GreeterClientImpl: 17 | group: dubbo-go 18 | filter: metrics -------------------------------------------------------------------------------- /compatibility/metrics/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | version: 3.0.1 4 | metrics: 5 | enable: true # default is true 6 | path: /metrics # default is /metrics 7 | summary-max-age: 60000000000 # 1 minute, default is 10min 8 | port: 9091 # default is 9090 9 | registries: 10 | myzk: 11 | protocol: zookeeper 12 | address: localhost:2181 13 | protocols: 14 | triple: 15 | name: tri 16 | port: 20000 17 | logger: 18 | zap-config: 19 | level: debug 20 | provider: 21 | services: 22 | GreeterProvider: 23 | group: dubbo-go -------------------------------------------------------------------------------- /compatibility/otel/trace/go-client/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | consumer: 8 | filter: otelClientTrace 9 | check: true 10 | request_timeout: 3s 11 | connect_timeout: 3s 12 | references: 13 | GreeterClientImpl: 14 | protocol: tri -------------------------------------------------------------------------------- /compatibility/otel/trace/go-server/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | tripleProtocol: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | GreeterProvider: 13 | filter: otelServerTrace 14 | loadbalance: random 15 | warmup: 100 16 | cluster: failover 17 | -------------------------------------------------------------------------------- /compatibility/polaris/limit/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: myApp # metadata: application=myApp; name=myApp 4 | module: opensource #metadata: module=opensource 5 | group: myAppGroup # no metadata record 6 | organization: dubbo # metadata: organization=dubbo 7 | owner: laurence # metadata: owner=laurence 8 | version: myversion # metadata: app.version=myversion 9 | environment: pro # metadata: environment=pro 10 | registries: 11 | polarisMesh: 12 | protocol: polaris 13 | address: 127.0.0.1:8091 14 | namespace: dubbogo 15 | registry-type: interface 16 | consumer: 17 | references: 18 | UserProvider: 19 | protocol: dubbo 20 | interface: org.apache.dubbo.UserProvider.Test 21 | UserProviderWithCustomGroupAndVersion: 22 | protocol: dubbo 23 | interface: org.apache.dubbo.UserProvider.Test2 24 | version: myInterfaceVersion # dubbo interface version must be same with server 25 | -------------------------------------------------------------------------------- /compatibility/polaris/limit/images/dubbogo-ratelimit-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/polaris/limit/images/dubbogo-ratelimit-rule.png -------------------------------------------------------------------------------- /compatibility/polaris/registry/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: myApp # metadata: application=myApp; name=myApp 4 | module: opensource #metadata: module=opensource 5 | group: myAppGroup # no metadata record 6 | organization: dubbo # metadata: organization=dubbo 7 | owner: laurence # metadata: owner=laurence 8 | version: myversion # metadata: app.version=myversion 9 | environment: pro # metadata: environment=pro 10 | registries: 11 | polarisMesh: 12 | protocol: polaris 13 | address: 127.0.0.1:8091 14 | namespace: dubbogo 15 | registry-type: interface 16 | consumer: 17 | references: 18 | UserProvider: 19 | protocol: dubbo 20 | interface: org.apache.dubbo.UserProvider.Test 21 | UserProviderWithCustomGroupAndVersion: 22 | protocol: dubbo 23 | interface: org.apache.dubbo.UserProvider.Test2 24 | version: myInterfaceVersion # dubbo interface version must be same with server -------------------------------------------------------------------------------- /compatibility/polaris/registry/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: myApp # metadata: application=myApp; name=myApp 4 | module: opensource #metadata: module=opensource 5 | group: myAppGroup # no metadata record 6 | organization: dubbo # metadata: organization=dubbo 7 | owner: laurence # metadata: owner=laurence 8 | version: myversion # metadata: app.version=myversion 9 | environment: pro # metadata: environment=pro 10 | registries: 11 | polarisMesh: 12 | protocol: polaris 13 | address: 127.0.0.1:8091 14 | namespace: dubbogo 15 | registry-type: interface 16 | protocols: 17 | dubbo: 18 | name: dubbo 19 | port: 20000 20 | provider: 21 | services: 22 | UserProvider: 23 | interface: org.apache.dubbo.UserProvider.Test 24 | UserProviderWithCustomGroupAndVersion: 25 | interface: org.apache.dubbo.UserProvider.Test2 26 | version: myInterfaceVersion # dubbo interface version must be same with client 27 | group: myInterfaceGroup # dubbo interface group must be same with client -------------------------------------------------------------------------------- /compatibility/polaris/router/go-client/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | 2 | dubbo: 3 | application: 4 | name: myApp # metadata: application=myApp; name=myApp 5 | module: opensource #metadata: module=opensource 6 | group: myAppGroup # no metadata record 7 | organization: dubbo # metadata: organization=dubbo 8 | owner: laurence # metadata: owner=laurence 9 | version: myversion # metadata: app.version=myversion 10 | environment: pro # metadata: environment=pro 11 | registries: 12 | polarisMesh: 13 | protocol: polaris 14 | address: 127.0.0.1:8091 15 | namespace: dubbogo 16 | registry-type: interface 17 | consumer: 18 | references: 19 | UserProvider: 20 | protocol: dubbo 21 | interface: org.apache.dubbo.UserProvider.Test 22 | UserProviderWithCustomGroupAndVersion: 23 | protocol: dubbo 24 | interface: org.apache.dubbo.UserProvider.Test2 25 | version: myInterfaceVersion # dubbo interface version must be same with server 26 | -------------------------------------------------------------------------------- /compatibility/polaris/router/images/dubbogo-route-rule-dev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/polaris/router/images/dubbogo-route-rule-dev.png -------------------------------------------------------------------------------- /compatibility/polaris/router/images/dubbogo-route-rule-pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/polaris/router/images/dubbogo-route-rule-pre.png -------------------------------------------------------------------------------- /compatibility/polaris/router/images/dubbogo-route-rule-prod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/polaris/router/images/dubbogo-route-rule-prod.png -------------------------------------------------------------------------------- /compatibility/proxyless/deploy/Namespace.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: dubbo-demo 5 | labels: 6 | istio-injection: enabled -------------------------------------------------------------------------------- /compatibility/proxyless/deploy/consumer/Service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: client-demo 5 | namespace: dubbo-demo 6 | spec: 7 | type: ClusterIP 8 | sessionAffinity: None 9 | selector: 10 | app: client-demo 11 | ports: 12 | - name: grpc-dubbo 13 | protocol: TCP 14 | port: 50052 15 | targetPort: 50052 -------------------------------------------------------------------------------- /compatibility/proxyless/deploy/provider/Service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: server-demo 5 | namespace: dubbo-demo 6 | spec: 7 | type: ClusterIP 8 | sessionAffinity: None 9 | selector: 10 | app: server-demo 11 | ports: 12 | - name: grpc-tri 13 | port: 50052 14 | targetPort: 50052 15 | -------------------------------------------------------------------------------- /compatibility/proxyless/go-client/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.18.0-alpine3.15 as builder 2 | ENV TIMEZONE Asia/Shanghai 3 | WORKDIR /mesh/ 4 | #添加文件 5 | COPY go.mod ./ 6 | COPY go.sum ./ 7 | COPY conf ./conf 8 | COPY cmd ./cmd 9 | ##编译 10 | RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download 11 | RUN go build -o client-demo ./... 12 | 13 | FROM alpine:3.15 14 | WORKDIR /mesh 15 | COPY --from=builder /mesh/client-demo ./client-demo 16 | COPY --from=builder /mesh/conf . 17 | 18 | ENV DUBBO_GO_CONFIG_PATH="./dubbogo.yml" 19 | ENTRYPOINT ["./client-demo"] 20 | -------------------------------------------------------------------------------- /compatibility/proxyless/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: client-demo 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | mesh-enable: true 11 | references: 12 | GreeterClientImpl: 13 | protocol: tri 14 | provided_by: server-demo 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/proxyless/go-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.18.0-alpine3.15 as builder 2 | ENV TIMEZONE Asia/Shanghai 3 | WORKDIR /mesh/ 4 | #添加文件 5 | COPY go.mod ./ 6 | COPY go.sum ./ 7 | COPY conf ./conf 8 | COPY cmd ./cmd 9 | 10 | ##编译 11 | RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download 12 | RUN go build -o server-demo ./... 13 | 14 | FROM alpine:3.15 15 | WORKDIR /mesh 16 | COPY --from=builder /mesh/server-demo ./server-demo 17 | COPY --from=builder /mesh/conf/ . 18 | 19 | ENV DUBBO_GO_CONFIG_PATH="./dubbogo.yml" 20 | EXPOSE 50052 21 | ENTRYPOINT ["./server-demo"] 22 | -------------------------------------------------------------------------------- /compatibility/proxyless/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: server-demo 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: N/A 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 50052 12 | provider: 13 | services: 14 | GreeterProvider: 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/all/README.md: -------------------------------------------------------------------------------- 1 | # Dubbo Go registry-type support all 2 | 3 | | 参数 | 注册方式 | 4 | |------------|------------| 5 | | interface | 接口级 | 6 | | service | 应用级 | 7 | | all | 应用级 && 接口级 | 8 | 9 | 10 | ## 使用方法 11 | 1. 启动 zk/nacos 12 | 13 | 2. 启动服务端 14 | 将启动配置修改为: registry-type: all 15 | ```shell 16 | cd registry/all/go-server 17 | DUBBO_GO_CONFIG_PATH=registry/all/nacos/go-server/conf/dubbogo.yml && go run server.go 18 | ``` 19 | 20 | 3. 启动客户端 21 | 由于服务注册方式支持双注册,客户端使用 service/interface 两种参数均可访问服务端 22 | ```shell 23 | cd registry/all/go-client 24 | DUBBO_GO_CONFIG_PATH=registry/all/nacos/go-client/conf/dubbogo.yml && go run client.go 25 | ``` 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /compatibility/registry/all/nacos/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: nacos 5 | address: 127.0.0.1:8848 6 | registry-type: service 7 | metadata-report: 8 | protocol: nacos 9 | address: 127.0.0.1:8848 10 | consumer: 11 | references: 12 | GreeterClientImpl: 13 | protocol: tri 14 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/all/nacos/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: nacos 5 | address: 127.0.0.1:8848 6 | registry-type: all 7 | metadata-report: 8 | protocol: nacos 9 | address: 127.0.0.1:8848 10 | protocols: 11 | triple: 12 | name: tri 13 | port: 20000 14 | provider: 15 | services: 16 | GreeterProvider: 17 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/all/zookeeper/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | registry-type: all 7 | metadata-report: 8 | protocol: zookeeper 9 | address: 127.0.0.1:2181 10 | consumer: 11 | registry-ids: 12 | - demoZK 13 | references: 14 | GreeterClientImpl: 15 | protocol: tri 16 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/all/zookeeper/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | registry-type: all 7 | metadata-report: 8 | protocol: zookeeper 9 | address: 127.0.0.1:2181 10 | protocols: 11 | triple: 12 | name: tri 13 | port: 20000 14 | provider: 15 | services: 16 | GreeterProvider: 17 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/etcd/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | organization: "dubbo.io" 4 | name: "UserInfoClient" 5 | module: "dubbo-go user-info client" 6 | version: "0.0.1" 7 | environment: "dev" 8 | registries: 9 | etcd: 10 | protocol: "etcdv3" 11 | timeout: "3s" 12 | address: "127.0.0.1:2379" 13 | consumer: 14 | references: 15 | UserProvider: 16 | protocol: "dubbo" 17 | interface: "org.apache.dubbo.UserProvider" -------------------------------------------------------------------------------- /compatibility/registry/etcd/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | organization: "dubbo.io" 4 | name: "UserInfoServer" 5 | module: "dubbo-go user-info server" 6 | version: "0.0.1" 7 | environment: "dev" 8 | registries: 9 | etcd: 10 | protocol: "etcdv3" 11 | timeout: "3s" 12 | address: "127.0.0.1:2379" 13 | protocols: 14 | dubbo: 15 | name: "dubbo" 16 | port: 20000 17 | provider: 18 | services: 19 | UserProvider: 20 | interface: "org.apache.dubbo.UserProvider" -------------------------------------------------------------------------------- /compatibility/registry/etcd/go-server/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | etcd: 5 | image: "quay.io/coreos/etcd:latest" 6 | container_name: etcd 7 | environment: 8 | - ETCDCTL_API=3 9 | command: [ 10 | "etcd", 11 | "--name=etcd0", 12 | "--advertise-client-urls=http://127.0.0.1:2379", 13 | "--listen-client-urls=http://0.0.0.0:2379", 14 | "--initial-advertise-peer-urls=http://127.0.0.1:2380", 15 | "--listen-peer-urls=http://0.0.0.0:2380", 16 | "--initial-cluster=etcd0=http://127.0.0.1:2380", 17 | ] 18 | ports: 19 | - "2379:2379" 20 | - "2380:2380" 21 | restart: always 22 | -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/nacos/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: nacos 5 | address: 127.0.0.1:8848 6 | registry-type: service 7 | metadata-report: 8 | protocol: nacos 9 | address: 127.0.0.1:8848 10 | consumer: 11 | references: 12 | GreeterClientImpl: 13 | protocol: tri 14 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/nacos/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: nacos 5 | address: 127.0.0.1:8848 6 | registry-type: service 7 | metadata-report: 8 | protocol: nacos 9 | address: 127.0.0.1:8848 10 | protocols: 11 | triple: 12 | name: tri 13 | port: 20000 14 | provider: 15 | services: 16 | GreeterProvider: 17 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | registry-type: service 7 | metadata-report: 8 | protocol: zookeeper 9 | address: 127.0.0.1:2181 10 | consumer: 11 | registry-ids: 12 | - demoZK 13 | references: 14 | GreeterClientImpl: 15 | protocol: tri 16 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | registry-type: service 7 | metadata-report: 8 | protocol: zookeeper 9 | address: 127.0.0.1:2181 10 | protocols: 11 | triple: 12 | name: tri 13 | port: 20000 14 | provider: 15 | services: 16 | GreeterProvider: 17 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn install -DSkipTests 2 | mvn exec:java -Dexec.mainClass="com.apache.dubbo.sample.basic.ApiConsumer" -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/java-client/src/main/proto/helloworld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | 14 | option java_package = "org.apache.dubbo.sample.hello"; 15 | 16 | package helloworld; 17 | 18 | // The request message containing the user's name. 19 | message HelloRequest { 20 | string name = 1; 21 | } 22 | 23 | // The response message containing the greetings 24 | message User { 25 | string name = 1; 26 | string id = 2; 27 | int32 age = 3; 28 | } 29 | -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn install -DSkipTests 2 | mvn exec:java -Dexec.mainClass="com.apache.dubbo.sample.basic.ApiProvider" -------------------------------------------------------------------------------- /compatibility/registry/servicediscovery/zookeeper/java-server/src/main/proto/helloworld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | 14 | option java_package = "org.apache.dubbo.sample.hello"; 15 | 16 | package helloworld; 17 | 18 | // The request message containing the user's name. 19 | message HelloRequest { 20 | string name = 1; 21 | } 22 | 23 | // The response message containing the greetings 24 | message User { 25 | string name = 1; 26 | string id = 2; 27 | int32 age = 3; 28 | } 29 | -------------------------------------------------------------------------------- /compatibility/registry/zookeeper/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | group: myGroup 8 | registry-type: interface 9 | consumer: 10 | references: 11 | GreeterClientImpl: 12 | protocol: tri 13 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java 14 | UserProviderWithCustomGroupAndVersion: 15 | protocol: tri 16 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java 17 | group: myInterfaceGroup # dubbo interface group must be same with server 18 | version: myInterfaceVersion # dubbo interface version must be same with server -------------------------------------------------------------------------------- /compatibility/registry/zookeeper/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | group: myGroup # default is dubbo 8 | registry-type: interface 9 | protocols: 10 | triple: 11 | name: tri 12 | port: 20000 13 | provider: 14 | services: 15 | GreeterProvider: 16 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java 17 | UserProviderWithCustomGroupAndVersion: 18 | interface: com.apache.dubbo.sample.basic.IGreeter 19 | version: myInterfaceVersion # dubbo interface version must be same with client 20 | group: myInterfaceGroup # dubbo interface group must be same with client -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/README.md: -------------------------------------------------------------------------------- 1 | # RPC Dubbo for Dubbo-go 3.0 2 | 3 | For api definition and go client and server startup, please refer to [dubbo-go 3.0 quickstart](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html) 4 | 5 | ## Instructions 6 | ### 1. Start zookeeper 7 | Execute the command `docker run --rm -p 2181:2181 zookeeper` or `make -f $DUBBO_GO_SAMPLES_ROOT_PATH/build/Makefile docker-up`. 8 | If you choose the second way, please ensure that you have set the environment $DUBBO_GO_SAMPLES_ROOT_PATH. 9 | 10 | ### 2. Start the server 11 | 12 | Use goland to start rpc-dubbo-go-server 13 | 14 | or 15 | 16 | Execute `sh run.sh` in the java-server folder to start the java server 17 | 18 | ### 3. Start the client 19 | 20 | Use goland to start rpc-dubbo-go-client 21 | 22 | or 23 | 24 | Execute `sh run.sh` under the java-client folder to start the java client 25 | 26 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/README_zh.md: -------------------------------------------------------------------------------- 1 | # RPC Dubbo for Dubbo-go 3.0 2 | 3 | api 定义以及 go 客户端、服务端启动,可以参考 [dubbo-go 3.0 快速开始](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html) 4 | 5 | ## 使用方法 6 | 1. 启动 zookeeper 7 | 8 | 2. 启动服务端 9 | 10 | 使用 goland 启动 rpc-dubbo-go-server 11 | 12 | 或者 13 | 14 | 在 java-server 文件夹下执行 `sh run.sh` 启动 java server 15 | 16 | 3. 启动客户端 17 | 18 | 使用 goland 启动 rpc-dubbo-go-client 19 | 20 | 或者 21 | 22 | 在 java-client 文件夹下执行 `sh run.sh` 启动 java client 23 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | consumer: 9 | references: 10 | UserProvider: 11 | protocol: dubbo 12 | interface: org.apache.dubbo.sample.UserProvider 13 | logger: 14 | zap-config: 15 | level: info -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | dubbo: 11 | name: dubbo 12 | port: 20000 13 | provider: 14 | services: 15 | UserProvider: 16 | interface: org.apache.dubbo.sample.UserProvider 17 | UserProvider1: 18 | interface: org.apache.dubbo.sample.UserProvider 19 | version: "2.0" 20 | UserProvider2: 21 | interface: org.apache.dubbo.sample.UserProvider 22 | version: "2.0" 23 | group: as 24 | ComplexProvider: 25 | interface: org.apache.dubbo.sample.ComplexProvider 26 | WrapperArrayClassProvider: 27 | interface: org.apache.dubbo.sample.WrapperArrayClassProvider 28 | logger: 29 | zap-config: 30 | level: info 31 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.sample.Consumer" -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-client/src/main/java/org/apache/dubbo/sample/Gender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.sample; 19 | 20 | public enum Gender { 21 | MAN, 22 | WOMAN 23 | } 24 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-client/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ## Logger configure file for myproject 2 | log.dir=logs/ 3 | datestamp=yyyy-MM-dd/HH:mm:ss.SSS 4 | 5 | log4j.rootLogger=DEBUG, file, console 6 | 7 | log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 8 | log4j.appender.file.threshold=DEBUG 9 | log4j.appender.file.File=${log.dir}/log4j.log 10 | log4j.appender.file.DatePattern=-yyyyMMddHH 11 | log4j.appender.file.ImmediateFlush=true 12 | log4j.appender.file.Append=true 13 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 15 | 16 | log4j.appender.console=org.apache.log4j.ConsoleAppender 17 | log4j.appender.console.Threshold=DEBUG 18 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 19 | log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 20 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile -U exec:java -Dexec.mainClass="org.apache.dubbo.sample.Provider" -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-server/src/main/java/org/apache/dubbo/sample/Gender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.sample; 19 | 20 | public enum Gender { 21 | MAN, 22 | WOMAN 23 | } 24 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-server/src/main/proto/helloworld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | 14 | option java_package = "org.apache.dubbo.sample.hello"; 15 | 16 | package helloworld; 17 | 18 | // The request message containing the user's name. 19 | message HelloRequest { 20 | string name = 1; 21 | } 22 | 23 | // The response message containing the greetings 24 | message User { 25 | string name = 1; 26 | string id = 2; 27 | int32 age = 3; 28 | } 29 | -------------------------------------------------------------------------------- /compatibility/rpc/dubbo/java-server/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | ## Logger configure file for myproject 2 | log.dir=logs/ 3 | datestamp=yyyy-MM-dd/HH:mm:ss.SSS 4 | 5 | log4j.rootLogger=DEBUG, file, console 6 | 7 | log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 8 | log4j.appender.file.threshold=DEBUG 9 | log4j.appender.file.File=${log.dir}/log4j.log 10 | log4j.appender.file.DatePattern=-yyyyMMddHH 11 | log4j.appender.file.ImmediateFlush=true 12 | log4j.appender.file.Append=true 13 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 14 | log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 15 | 16 | log4j.appender.console=org.apache.log4j.ConsoleAppender 17 | log4j.appender.console.Threshold=DEBUG 18 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 19 | log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %l - %m%n 20 | 21 | -------------------------------------------------------------------------------- /compatibility/rpc/grpc/README_zh.md: -------------------------------------------------------------------------------- 1 | # gRPC 示例 2 | 3 | Dubbo 3.0 提供了 Triple(Dubbo3)、Dubbo2 协议,这两个是 Dubbo 框架的原生协议。 除此之外,Dubbo3 也对众多第三方协议进行了集成,并将它们纳入 Dubbo 的编程与服务治理体系, 包括 gRPC、Thrift、JSON-RPC、Hessian2、REST 等。 4 | 5 | **本示例将介绍 gRPC 协议的使用方法**。 6 | 7 | ## 运行示例: 8 | 9 | 启动zk,监听127.0.0.1:2181端口。 10 | 若未安装 zk , 也可以借助 docker,直接执行下面的命令来启动所有运行samples的依赖组件:zk(2181), nacos(8848), etcd(2379)。 11 | 12 | `docker-compose -f {PATH_TO_SAMPLES_PROJECT}/integrate_test/dockercompose/docker-compose.yml up -d` 13 | 14 | ### 通过命令行运行 15 | 16 | - 服务端 17 | 18 | `cd rpc/grpc/go-server/cmd` # 进入仓库目录 19 | 20 | `export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml"`# 设置配置文件环境变量 21 | 22 | `go run .` # 启动服务 23 | 24 | - 客户端 25 | 26 | `cd rpc/grpc/go-client/cmd` # 进入仓库目录 27 | 28 | `export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml"`# 设置配置文件环境变量 29 | 30 | `go run .` # 启动客户端发起调用 31 | 32 | ### 调用成功 33 | 34 | 客户端调用后,可看到客户端打印如下信息,调用成功: 35 | 36 | `[XXXX-XX-XX/XX:XX:XX main.main: client.go: 55] client response result: {this is message from reply {} [] 0}` 37 | -------------------------------------------------------------------------------- /compatibility/rpc/grpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | references: 11 | GreeterClientImpl: 12 | protocol: grpc 13 | interface: org.apache.dubbo.UserProvider 14 | logger: 15 | zap-config: 16 | level: info -------------------------------------------------------------------------------- /compatibility/rpc/grpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | grpcProtocol: 11 | name: grpc 12 | port: 20000 13 | provider: 14 | services: 15 | GreeterProvider: 16 | interface: org.apache.dubbo.UserProvider 17 | logger: 18 | zap-config: 19 | level: info -------------------------------------------------------------------------------- /compatibility/rpc/grpc/protobuf/protobuf.mk: -------------------------------------------------------------------------------- 1 | .PHONY: compile 2 | PROTOC_GEN_GO := $(GOPATH)/bin/protoc-gen-go 3 | PROTOC := $(shell which protoc) 4 | ifeq ($(PROTOC),) 5 | PROTOC = must-rebuild 6 | endif 7 | 8 | UNAME := $(shell uname) 9 | 10 | $(PROTOC): 11 | ifeq ($(UNAME), Darwin) 12 | brew install protobuf 13 | endif 14 | ifeq ($(UNAME), Linux) 15 | sudo apt-get install protobuf-compiler 16 | endif 17 | 18 | $(PROTOC_GEN_GO): 19 | go install github.com/dubbogo/tools/cmd/protoc-gen-dubbo3grpc@latest 20 | 21 | helloworld.pb.go: helloworld.proto | $(PROTOC_GEN_GO) $(PROTOC) 22 | protoc -I . helloworld.proto --dubbo3grpc_out=plugins=grpc+dubbo3grpc:. 23 | 24 | .PHONY: compile 25 | compile: helloworld.pb.go 26 | 27 | -------------------------------------------------------------------------------- /compatibility/rpc/jsonrpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | organization: dubbo.apache.org 4 | name: UserInfoServer 5 | module: dubbo-go-user-info-client 6 | version: 0.0.1 7 | environment: dev 8 | registries: 9 | hangzhouzk: 10 | protocol: zookeeper 11 | timeout: 3s 12 | address: 127.0.0.1:2181 13 | consumer: 14 | references: 15 | UserProvider: 16 | protocol: jsonrpc 17 | interface: org.apache.dubbo.samples.UserProvider 18 | UserProvider1: 19 | protocol: jsonrpc 20 | version: 2.0 21 | interface: org.apache.dubbo.samples.UserProvider1 22 | UserProvider2: 23 | protocol: jsonrpc 24 | version: 2.0 25 | group: as 26 | interface: org.apache.dubbo.samples.UserProvider2 27 | logger: 28 | zap-config: 29 | level: info -------------------------------------------------------------------------------- /compatibility/rpc/jsonrpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | organization: dubbo.apache.org 4 | name: UserInfoServer 5 | module: dubbo-go-user-info-server 6 | version: 0.0.1 7 | environment: dev 8 | registries: 9 | hangzhouzk: 10 | protocol: zookeeper 11 | timeout: 3s 12 | address: 127.0.0.1:2181 13 | protocols: 14 | jsonrpc: 15 | name: jsonrpc 16 | port: 20001 17 | provider: 18 | services: 19 | UserProvider: 20 | interface: org.apache.dubbo.samples.UserProvider 21 | UserProvider1: 22 | interface: org.apache.dubbo.samples.UserProvider1 23 | version: 2.0 24 | UserProvider2: 25 | interface: org.apache.dubbo.samples.UserProvider2 26 | version: 2.0 27 | group: as 28 | logger: 29 | zap-config: 30 | level: info -------------------------------------------------------------------------------- /compatibility/rpc/jsonrpc/go-server/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | hangzhouzk: 5 | container_name: hangzhouzk 6 | image: zookeeper 7 | ports: 8 | - 2181:2181 9 | restart: on-failure -------------------------------------------------------------------------------- /compatibility/rpc/triple/codec-extension/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | registryKey: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | consumer: 7 | references: 8 | UserProvider: 9 | protocol: tri 10 | serialization: json 11 | interface: com.apache.dubbogo.samples.rpc.extension.UserProvider # must be compatible with grpc or dubbo-java server -------------------------------------------------------------------------------- /compatibility/rpc/triple/codec-extension/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | registryKey: 4 | protocol: zookeeper 5 | address: 127.0.0.1:2181 6 | protocols: 7 | tripleKey: 8 | name: tri 9 | port: 20000 10 | provider: 11 | services: 12 | UserProvider: 13 | serialization: json 14 | interface: com.apache.dubbogo.samples.rpc.extension.UserProvider # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/README.md: -------------------------------------------------------------------------------- 1 | # Triple protocol Hessian2 (Hessian+PB) serialization scheme 2 | 3 | Triple-go supports Pb serialization and Hessian serialization. After Hessian serialization, api serialization is performed again by nesting the following api: 4 | https://github.com/dubbogo/triple/blob/master/internal/codec/proto/triple_wrapper.proto 5 | 6 | ## Serialization scheme selection 7 | 8 | PB serialization is used by default. To use Hessian2+PB, please specify the serialization protocol as Hessian2 in the configuration file 9 | 10 | ```yaml 11 | # service config 12 | services: 13 | "UserProvider": 14 | serialization: "hessian2" # hessian2 is serialization type 15 | interface: "org.apache.dubbo.UserProvider" 16 | ``` 17 | 18 | And define pojo, provider, and consumer in the same way as dubbo-go1.5.x, then you can initiate the call. 19 | 20 | ## Start service 21 | Run with goland 22 | 23 | triplego-hessian-client\ 24 | triplego-hessian-server -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/README_zh.md: -------------------------------------------------------------------------------- 1 | # Triple协议的Hessian2(Hessian+PB) 序列化方案 2 | 3 | Triple-go支持 Pb序列化和Hessian序列化,Hessian序列化后通过嵌套入如下pb,再次进行pb序列化: 4 | https://github.com/dubbogo/triple/blob/master/internal/codec/proto/triple_wrapper.proto 5 | 6 | ## 序列化方案选择 7 | 8 | 默认使用PB序列化,如需使用Hessian2+PB,请在配置文件中指定序列化协议为Hessian2 9 | 10 | ```yaml 11 | # service config 12 | services: 13 | "UserProvider": 14 | serialization: "hessian2" # hessian2 is serialization type 15 | interface: "org.apache.dubbo.UserProvider" 16 | ``` 17 | 18 | 并按照与dubbo-go1.5.x相同的方法定义pojo、provider、consumer,即可发起调用。 19 | 20 | ## 开启服务 21 | 使用 goland 运行 22 | 23 | triplego-hessian-client\ 24 | triplego-hessian-server -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | "demoZK": 4 | protocol: "zookeeper" 5 | timeout: "3s" 6 | address: "127.0.0.1:2181" 7 | consumer: 8 | registry-ids: 9 | - demoZK 10 | references: 11 | "ComplexProvider": 12 | protocol: "tri" 13 | serialization: "hessian2" 14 | interface: "com.apache.dubbo.sample.basic.ComplexProvider" # must be compatible with grpc or dubbo-java 15 | "UserProvider": 16 | protocol: "tri" 17 | serialization: "hessian2" 18 | interface: "com.apache.dubbo.sample.basic.IGreeter" # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | protocols: 8 | triple: 9 | name: tri 10 | port: 20000 11 | provider: 12 | services: 13 | UserProvider: 14 | serialization: hessian2 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java 16 | ComplexProvider: 17 | serialization: hessian2 18 | interface: com.apache.dubbo.sample.basic.ComplexProvider # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="com.apache.dubbo.sample.basic.ApiConsumer" -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-client/src/main/proto/helloworld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | 14 | option java_package = "org.apache.dubbo.sample.hello"; 15 | 16 | package helloworld; 17 | 18 | // The request message containing the user's name. 19 | message HelloRequest { 20 | string name = 1; 21 | } 22 | 23 | // The response message containing the greetings 24 | message User { 25 | string name = 1; 26 | string id = 2; 27 | int32 age = 3; 28 | } 29 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="com.apache.dubbo.sample.basic.ApiProvider" -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java: -------------------------------------------------------------------------------- 1 | package com.apache.dubbo.sample.basic; 2 | 3 | public interface ComplexProvider { 4 | void invokeWithEmptyReq(); 5 | void invokeWithSingleString(String req); 6 | void invokeWithStringList(String[] req); 7 | void invokeWithMultiString(String str1, String str2, String str3); 8 | String invokeWithEmptyReqStringRsp (); 9 | ComplexData invokeWithComplexReqComplexRspPtr(ComplexData complexData); 10 | int invokeWithMultiBasicData (String str, byte[]data, int num, boolean boolValue); 11 | } 12 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java: -------------------------------------------------------------------------------- 1 | package com.apache.dubbo.sample.basic; 2 | 3 | import java.io.Serializable; 4 | 5 | public class User implements Serializable { 6 | String name; 7 | String id; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/hessian2/java-server/src/main/proto/helloworld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | 14 | option java_package = "org.apache.dubbo.sample.hello"; 15 | 16 | package helloworld; 17 | 18 | // The request message containing the user's name. 19 | message HelloRequest { 20 | string name = 1; 21 | } 22 | 23 | // The response message containing the greetings 24 | message User { 25 | string name = 1; 26 | string id = 2; 27 | int32 age = 3; 28 | } 29 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/msgpack/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | "demoZK": 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | consumer: 8 | registry-ids: 9 | - demoZK 10 | references: 11 | UserProvider: 12 | protocol: tri 13 | serialization: msgpack 14 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/rpc/triple/msgpack/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | protocols: 8 | triple: 9 | name: tri 10 | port: 20000 11 | provider: 12 | services: 13 | UserProvider: 14 | serialization: msgpack 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-grpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | consumer: 6 | references: 7 | GreeterClientImpl: 8 | protocol: tri -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-grpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | protocols: 6 | triple: 7 | name: tri 8 | port: 20000 9 | provider: 10 | services: 11 | # you may refer to `Reference()` method defined in `protobuf/triple/helloworld.pb.go` 12 | GreeterProvider: 13 | # interface read from pb file 14 | interface: "" -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/README.md: -------------------------------------------------------------------------------- 1 | # dubbogo-java 2 | 3 | Most of the procedure are same with [dubbogo-grpc](../dubbogo-grpc), like compiling proto file. 4 | 5 | ## Getting Started 6 | 7 | 1. Start the java server: 8 | - Use goland to start triple/gojava-go-server 9 | - Execute `sh run.sh` in the java-server folder to start the java server 10 | 2. Start the client 11 | - Use goland to start triple/gojava-go-client 12 | - Execute `sh run.sh` under the java-client folder to start the java client 13 | 14 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/README_zh.md: -------------------------------------------------------------------------------- 1 | # dubbogo-java 2 | 3 | 大部分步骤与 [dubbogo-grpc](../dubbogo-grpc) 一样,如编译 proto 文件。 4 | 5 | ## 开始 6 | 7 | 1. 启动服务端 8 | - 使用 goland 启动 triple/gojava-go-server 9 | - 在 java-server 文件夹下执行 `sh run.sh` 启动 java server 10 | 2. 启动客户端 11 | - 使用 goland 启动 triple/gojava-go-client 12 | - 在 java-client 文件夹下执行 `sh run.sh` 启动 java client -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | consumer: 6 | references: 7 | GreeterClientImpl: 8 | protocol: tri 9 | interface: org.apache.dubbo.demo.IGreeter -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | protocols: 6 | triple: 7 | name: tri 8 | port: 20001 9 | provider: 10 | services: 11 | GreeterProvider: 12 | # interface is for registry 13 | interface: org.apache.dubbo.demo.IGreeter -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.demo.ApiConsumer" -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/java-client/src/main/proto/HelloWorld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | package org.apache.dubbo.demo; 14 | 15 | option java_package = "org.apache.dubbo.demo"; 16 | 17 | // The request message containing the user's name. 18 | message HelloRequest { 19 | string name = 1; 20 | } 21 | 22 | // The response message containing the greetings 23 | message User { 24 | string name = 1; 25 | string id = 2; 26 | int32 age = 3; 27 | } 28 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.demo.ApiProvider" -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb/dubbogo-java/java-server/src/main/proto/HelloWorld.proto: -------------------------------------------------------------------------------- 1 | // Licensed under the Apache License, Version 2.0 (the "License"); 2 | // you may not use this file except in compliance with the License. 3 | // You may obtain a copy of the License at 4 | // 5 | // http://www.apache.org/licenses/LICENSE-2.0 6 | // 7 | // Unless required by applicable law or agreed to in writing, software 8 | // distributed under the License is distributed on an "AS IS" BASIS, 9 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | syntax = "proto3"; 13 | package org.apache.dubbo.demo; 14 | 15 | option java_package = "org.apache.dubbo.demo"; 16 | 17 | // The request message containing the user's name. 18 | message HelloRequest { 19 | string name = 1; 20 | } 21 | 22 | // The response message containing the greetings 23 | message User { 24 | string name = 1; 25 | string id = 2; 26 | int32 age = 3; 27 | } 28 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb2/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | consumer: 6 | references: 7 | GreeterClientImpl: 8 | protocol: tri 9 | metrics: 10 | enable: false 11 | path: /custom-metrics-path 12 | port: 9092 13 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb2/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | zk: 4 | address: zookeeper://127.0.0.1:2181 5 | protocols: 6 | triple: 7 | name: tri 8 | port: 20000 9 | provider: 10 | services: 11 | GreeterProvider: 12 | # interface read from pb file 13 | interface: "" -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb2/hack/custom-boilerplate.go.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/rpc/triple/pb2/hack/custom-boilerplate.go.txt -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb2/hack/note.txt: -------------------------------------------------------------------------------- 1 | Please do not delete custom-boilerplate.go.txt which is used by go-to-protobuf, although its empty. 2 | -------------------------------------------------------------------------------- /compatibility/rpc/triple/pb2/models/generated.proto: -------------------------------------------------------------------------------- 1 | 2 | // This file was autogenerated by go-to-protobuf. Do not edit it manually! 3 | 4 | syntax = "proto2"; 5 | 6 | package github.com.apache.dubbo_go_samples.rpc.triple.pb2.models; 7 | 8 | // Package-wide variables from generator "generated". 9 | option go_package = "github.com/apache/dubbo-go-samples/rpc/triple/pb2/models"; 10 | 11 | message HelloRequest { 12 | optional string name = 1; 13 | } 14 | 15 | message User { 16 | optional string id = 1; 17 | 18 | optional string name = 2; 19 | 20 | optional int32 age = 3; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /compatibility/seata-go/README.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc example 2 | 3 | ## How to run? 4 | 5 | 1. Start the seata-server and zookeeper service with the docker file. 6 | 7 | ~~~shell 8 | cd seata-go/tcc 9 | docker-compose -f docker-compose.yml up -d seata-server zookeeper 10 | ~~~ 11 | 12 | 2. Just execute the main function under tcc/client/cmd and tcc/server/cmd directory. -------------------------------------------------------------------------------- /compatibility/seata-go/README_zh.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc 例子 2 | 3 | ## 如何运行? 4 | 5 | 1. 先执行以下命令,启动 seata-server和zookeeper。 6 | 7 | ~~~shell 8 | cd seata-go/tcc 9 | docker-compose -f docker-compose.yml up -d seata-server zookeeper 10 | ~~~ 11 | 12 | 2. 再执行 tcc/client/cmd 和 tcc/server/cmd 目录下的main()方法。 -------------------------------------------------------------------------------- /compatibility/seata-go/tcc/README.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc example 2 | 3 | ## How to run 4 | 5 | 1. Start the seata-server and zookeeper service with the docker file 6 | 7 | ~~~shell 8 | cd seata-go/tcc 9 | docker-compose -f docker-compose.yml up -d seata-server zookeeper 10 | ~~~ 11 | 12 | 2. Just execute the main function under tcc/client/cmd and tcc/server/cmd directory -------------------------------------------------------------------------------- /compatibility/skywalking/README.md: -------------------------------------------------------------------------------- 1 | # Skywalking with Dubbo-go 3.0 2 | 3 | For api definition and go client and server startup, please refer to [dubbo-go 3.0 quickstart](https://dubbo.apache.org/zh/docs/quick-start/) 4 | 5 | ## Instructions 6 | 1. Start nacos 7 | 8 | 2. Start the server 9 | 10 | Use goland to start skywalking/go-server/cmd/server. Note that you need to change `YOUR_SKYWALKING_DOMAIN_NAME_OR_IP` to your real environment's configuration in `server.go`, and modify the skywalking/go-server/conf/`dubbogo.yml`. 11 | 12 | 3. Start the client 13 | 14 | Use goland to start skywalking/go-client/cmd/client. Note that you need to change `YOUR_SKYWALKING_DOMAIN_NAME_OR_IP` to your real environment's configuration in `client.go`, and modify the skywalking/go-client/conf/`dubbogo.yml`. 15 | 16 | -------------------------------------------------------------------------------- /compatibility/skywalking/README_zh.md: -------------------------------------------------------------------------------- 1 | # Skywalking with Dubbo-go 3.0 2 | 3 | api 定义以及 go 客户端、服务端启动,可以参考 [dubbo-go 3.0 quickstart](https://dubbo.apache.org/zh/docs/quick-start/) 4 | 5 | ## 使用方法 6 | 1. 启动 nacos 7 | 8 | 2. 启动服务端 9 | 10 | 使用 goland 启动 skywalking/go-server/cmd/server. 注意需要将`server.go`中的 `YOUR_SKYWALKING_DOMAIN_NAME_OR_IP` 修改为你真实的环境配置,以及修改 skywalking/go-server/conf/`dubbogo.yml`中的内容。 11 | 12 | 3. 启动客户端 13 | 14 | 使用 goland 启动 skywalking/go-client/cmd/client. 注意需要将`client.go`中的 `YOUR_SKYWALKING_DOMAIN_NAME_OR_IP` 修改为你真实的环境配置,以及修改 skywalking/go-client/conf/`dubbogo.yml`中的内容。 15 | 16 | -------------------------------------------------------------------------------- /compatibility/skywalking/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: dubbo-go-client 4 | registries: 5 | nacos: 6 | address: nacos://YOUR_NACOS_DOMAIN_NAME_OR_IP:18848 7 | username: "" 8 | password: "" 9 | namespace: "" 10 | group: dubbo 11 | params: 12 | nacos.logLevel: warn 13 | consumer: 14 | references: 15 | GreeterClientImpl: 16 | protocol: tri 17 | interface: org.apache.dubbo.Greeter 18 | loadbalance: roundrobin 19 | version: v1.0.0 20 | filter: go2sky-tracing-client 21 | -------------------------------------------------------------------------------- /compatibility/skywalking/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: dubbo-go-server 4 | registries: 5 | nacos: 6 | address: nacos://YOUR_NACOS_DOMAIN_NAME_OR_IP:18848 7 | username: "" 8 | password: "" 9 | namespace: "" 10 | group: dubbo 11 | params: 12 | nacos.logLevel: warn 13 | protocols: 14 | triple: 15 | name: tri 16 | port: 20001 17 | provider: 18 | services: 19 | Greeter: 20 | interface: org.apache.dubbo.Greeter 21 | version: v1.0.0 22 | filter: go2sky-tracing-server -------------------------------------------------------------------------------- /compatibility/task/shop/.images/shop-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/task/shop/.images/shop-arc.png -------------------------------------------------------------------------------- /compatibility/task/shop/READEME_CN.md: -------------------------------------------------------------------------------- 1 | 此任务基于一个简单的线上商城微服务系统演示了 Dubbo 的流量管控能力。用于配合 [【Dubbo 官网】-【文档】-【任务】-【流量管控】](https://cn.dubbo.apache.org/zh-cn/overview/tasks/traffic-management/)部分文档。 2 | 3 | ## 架构 4 | 线上商城的架构图如下: 5 | 6 | ![shop-arc](./.images/shop-arc.png) 7 | 8 | 系统由 5 个微服务应用组成: 9 | * `Frontend 商城主页`,作为与用户交互的 web 界面,通过调用 `User`、`Detail`、`Order` 等提供用户登录、商品展示和订单管理等服务。 10 | * `User 用户服务`,负责用户数据管理、身份校验等。 11 | * `Order 订单服务`,提供订订单创建、订单查询等服务,依赖 `Detail` 服务校验商品库存等信息。 12 | * `Detail 商品详情服务`,展示商品详情信息,调用 `Comment` 服务展示用户对商品的评论记录。 13 | * `Comment 评论服务`,管理用户对商品的评论数据。 14 | 15 | ## 部署商场系统 16 | 配合官网的流量管控任务,有两种模式可以启动商城系统并进行流量管控 17 | 1. 本地运行任务,根据当前的流量管控动作按需要启动相关的应用进程 18 | 2. 通过部署 Kubernetes 资源一次性拉起所有应用进程 -------------------------------------------------------------------------------- /compatibility/task/shop/comment/server_v1/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20010 12 | provider: 13 | token: true 14 | services: 15 | CommentProvider: 16 | interface: org.apache.dubbogo.samples.shop.comment.api.Comment # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/comment/server_v2/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20020 12 | provider: 13 | token: true 14 | services: 15 | CommentProvider: 16 | interface: org.apache.dubbogo.samples.shop.comment.api.Comment # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/comment/test/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | # consumer: 8 | # references: 9 | # TestImpl: 10 | # protocol: tri 11 | # interface: org.apache.dubbogo.samples.shop.user.api.User 12 | -------------------------------------------------------------------------------- /compatibility/task/shop/detail/server_v1/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20011 12 | provider: 13 | token: true 14 | services: 15 | DetailProvider: 16 | interface: org.apache.dubbogo.samples.shop.detail.api.Detail # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/detail/server_v2/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20021 12 | provider: 13 | token: true 14 | services: 15 | DetailProvider: 16 | interface: org.apache.dubbogo.samples.shop.detail.api.Detail # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/detail/test/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | # consumer: 8 | # references: 9 | # TestImpl: 10 | # protocol: tri 11 | # interface: org.apache.dubbogo.samples.shop.user.api.User 12 | -------------------------------------------------------------------------------- /compatibility/task/shop/frontend/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | # consumer: 8 | # references: 9 | # TestImpl: 10 | # protocol: tri 11 | # interface: org.apache.dubbogo.samples.shop.user.api.User 12 | -------------------------------------------------------------------------------- /compatibility/task/shop/frontend/pages/static/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/task/shop/frontend/pages/static/architecture.png -------------------------------------------------------------------------------- /compatibility/task/shop/frontend/pages/static/goods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/compatibility/task/shop/frontend/pages/static/goods.png -------------------------------------------------------------------------------- /compatibility/task/shop/order/server_v1/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20012 12 | provider: 13 | token: true 14 | services: 15 | OrderProvider: 16 | interface: org.apache.dubbogo.samples.shop.order.api.Order # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/order/server_v2/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20022 12 | provider: 13 | token: true 14 | services: 15 | OrderProvider: 16 | interface: org.apache.dubbogo.samples.shop.order.api.Order # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/order/test/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | # consumer: 8 | # references: 9 | # TestImpl: 10 | # protocol: tri 11 | # interface: org.apache.dubbogo.samples.shop.user.api.User 12 | -------------------------------------------------------------------------------- /compatibility/task/shop/user/server/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: shop-comment 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20013 12 | provider: 13 | token: true 14 | services: 15 | UserProvider: 16 | interface: org.apache.dubbogo.samples.shop.user.api.UserService # read interface from pb -------------------------------------------------------------------------------- /compatibility/task/shop/user/test/conf/dubbogo.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | registries: 3 | demoZK: 4 | protocol: zookeeper 5 | timeout: 3s 6 | address: 127.0.0.1:2181 7 | # consumer: 8 | # references: 9 | # TestImpl: 10 | # protocol: tri 11 | # interface: org.apache.dubbogo.samples.shop.user.api.User 12 | -------------------------------------------------------------------------------- /compatibility/tls/dubbo/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | consumer: 5 | references: 6 | UserProvider: 7 | url: dubbo://localhost:20000 8 | protocol: dubbo 9 | interface: org.apache.dubbo.sample.UserProvider 10 | logger: 11 | zap-config: 12 | level: info 13 | tls_config: 14 | ca-cert-file: ../../../x509/server_ca_cert.pem 15 | tls-cert-file: ../../../x509/client1_cert.pem 16 | tls-key-file: ../../../x509/client1_key.pem 17 | tls-server-name: dubbogo.test.example.com -------------------------------------------------------------------------------- /compatibility/tls/dubbo/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | protocols: 5 | dubbo: 6 | name: dubbo 7 | port: 20000 8 | provider: 9 | services: 10 | UserProvider: 11 | interface: org.apache.dubbo.sample.UserProvider 12 | UserProvider1: 13 | interface: org.apache.dubbo.sample.UserProvider 14 | version: "2.0" 15 | UserProvider2: 16 | interface: org.apache.dubbo.sample.UserProvider 17 | version: "2.0" 18 | group: as 19 | ComplexProvider: 20 | interface: org.apache.dubbo.sample.ComplexProvider 21 | WrapperArrayClassProvider: 22 | interface: org.apache.dubbo.sample.WrapperArrayClassProvider 23 | logger: 24 | zap-config: 25 | level: info 26 | tls_config: 27 | ca-cert-file: ../../../x509/client_ca_cert.pem 28 | tls-cert-file: ../../../x509/server1_cert.pem 29 | tls-key-file: ../../../x509/server1_key.pem 30 | tls-server-name: dubbogo.test.example.com 31 | -------------------------------------------------------------------------------- /compatibility/tls/grpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | 2 | dubbo: 3 | consumer: 4 | references: 5 | GreeterClientImpl: 6 | url: grpc://localhost:20000 7 | protocol: grpc 8 | interface: org.apache.dubbo.UserProvider 9 | tls_config: 10 | ca-cert-file: ../../../x509/server_ca_cert.pem 11 | tls-cert-file: ../../../x509/client1_cert.pem 12 | tls-key-file: ../../../x509/client1_key.pem 13 | tls-server-name: dubbogo.test.example.com -------------------------------------------------------------------------------- /compatibility/tls/grpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | protocols: 5 | grpcProtocol: 6 | name: grpc 7 | port: 20000 8 | provider: 9 | services: 10 | GreeterProvider: 11 | interface: org.apache.dubbo.UserProvider 12 | tls_config: 13 | ca-cert-file: ../../../x509/client_ca_cert.pem 14 | tls-cert-file: ../../../x509/server1_cert.pem 15 | tls-key-file: ../../../x509/server1_key.pem 16 | tls-server-name: dubbogo.test.example.com -------------------------------------------------------------------------------- /compatibility/tls/grpc/protobuf/protobuf.mk: -------------------------------------------------------------------------------- 1 | .PHONY: compile 2 | PROTOC_GEN_GO := $(GOPATH)/bin/protoc-gen-go 3 | PROTOC := $(shell which protoc) 4 | ifeq ($(PROTOC),) 5 | PROTOC = must-rebuild 6 | endif 7 | 8 | UNAME := $(shell uname) 9 | 10 | $(PROTOC): 11 | ifeq ($(UNAME), Darwin) 12 | brew install protobuf 13 | endif 14 | ifeq ($(UNAME), Linux) 15 | sudo apt-get install protobuf-compiler 16 | endif 17 | 18 | $(PROTOC_GEN_GO): 19 | go get -u dubbo.apache.org/dubbo-go/v3/protocol/grpc/protoc-gen-dubbo 20 | 21 | helloworld.pb.go: helloworld.proto | $(PROTOC_GEN_GO) $(PROTOC) 22 | protoc -I . helloworld.proto --dubbo_out=plugins=grpc+dubbo:. 23 | 24 | .PHONY: compile 25 | compile: helloworld.pb.go 26 | 27 | -------------------------------------------------------------------------------- /compatibility/tls/triple/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | consumer: 3 | references: 4 | UserProvider: 5 | url: tri://localhost:20000 6 | protocol: tri 7 | serialization: json 8 | interface: com.apache.dubbogo.samples.rpc.extension.UserProvider # must be compatible with grpc or dubbo-java server 9 | tls_config: 10 | ca-cert-file: ../../../x509/server_ca_cert.pem 11 | tls-cert-file: ../../../x509/client2_cert.pem 12 | tls-key-file: ../../../x509/client2_key.pem 13 | tls-server-name: dubbogo.test.example.com -------------------------------------------------------------------------------- /compatibility/tls/triple/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | protocols: 3 | triple: 4 | name: tri 5 | port: 20000 6 | provider: 7 | services: 8 | UserProvider: 9 | serialization: json 10 | interface: com.apache.dubbogo.samples.rpc.extension.UserProvider 11 | tls_config: 12 | ca-cert-file: ../../../x509/client_ca_cert.pem 13 | tls-cert-file: ../../../x509/server2_cert.pem 14 | tls-key-file: ../../../x509/server2_key.pem 15 | tls-server-name: dubbogo.test.example.com -------------------------------------------------------------------------------- /compatibility/tls/x509/README.md: -------------------------------------------------------------------------------- 1 | This directory contains x509 certificates and associated private keys used in 2 | gRPC-Go tests. 3 | 4 | How were these test certs/keys generated ? 5 | ------------------------------------------ 6 | Run `./create.sh` 7 | -------------------------------------------------------------------------------- /compatibility/tls/x509/openssl.cnf: -------------------------------------------------------------------------------- 1 | [req] 2 | distinguished_name = req_distinguished_name 3 | attributes = req_attributes 4 | 5 | [req_distinguished_name] 6 | 7 | [req_attributes] 8 | 9 | [test_ca] 10 | basicConstraints = critical,CA:TRUE 11 | subjectKeyIdentifier = hash 12 | authorityKeyIdentifier = keyid:always,issuer:always 13 | keyUsage = critical,keyCertSign 14 | 15 | [test_server] 16 | basicConstraints = critical,CA:FALSE 17 | subjectKeyIdentifier = hash 18 | keyUsage = critical,digitalSignature,keyEncipherment,keyAgreement 19 | subjectAltName = @server_alt_names 20 | 21 | [server_alt_names] 22 | DNS.1 = *.test.example.com 23 | 24 | [test_client] 25 | basicConstraints = critical,CA:FALSE 26 | subjectKeyIdentifier = hash 27 | keyUsage = critical,nonRepudiation,digitalSignature,keyEncipherment 28 | extendedKeyUsage = critical,clientAuth 29 | -------------------------------------------------------------------------------- /compatibility/tracing/dubbo/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | filter: tracing 11 | registry-ids: 12 | - demoZK 13 | references: 14 | UserProvider: 15 | protocol: dubbo 16 | interface: org.apache.dubbo.UserProvider -------------------------------------------------------------------------------- /compatibility/tracing/dubbo/go-client/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | 42 | networks: 43 | jaeger-example: 44 | -------------------------------------------------------------------------------- /compatibility/tracing/dubbo/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | dubbo: 11 | name: dubbo 12 | port: 20000 13 | provider: 14 | filter: tracing 15 | services: 16 | UserProvider: 17 | interface: org.apache.dubbo.UserProvider 18 | loadbalance: random 19 | warmup: 100 20 | cluster: failover 21 | 22 | -------------------------------------------------------------------------------- /compatibility/tracing/dubbo/go-server/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | networks: 42 | jaeger-example: 43 | -------------------------------------------------------------------------------- /compatibility/tracing/grpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | consumer: 9 | filter: tracing 10 | references: 11 | GreeterClientImpl: 12 | protocol: grpc 13 | interface: org.apache.dubbo.UserProvider -------------------------------------------------------------------------------- /compatibility/tracing/grpc/go-client/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | 42 | networks: 43 | jaeger-example: 44 | -------------------------------------------------------------------------------- /compatibility/tracing/grpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | grpcProtocol: 11 | name: grpc 12 | port: 20000 13 | provider: 14 | filter: tracing 15 | services: 16 | GreeterProvider: 17 | interface: org.apache.dubbo.UserProvider 18 | loadbalance: random 19 | warmup: 100 20 | cluster: failover -------------------------------------------------------------------------------- /compatibility/tracing/grpc/go-server/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | 42 | networks: 43 | jaeger-example: 44 | -------------------------------------------------------------------------------- /compatibility/tracing/grpc/protobuf/protobuf.mk: -------------------------------------------------------------------------------- 1 | .PHONY: compile 2 | PROTOC_GEN_GO := $(GOPATH)/bin/protoc-gen-go 3 | PROTOC := $(shell which protoc) 4 | ifeq ($(PROTOC),) 5 | PROTOC = must-rebuild 6 | endif 7 | 8 | UNAME := $(shell uname) 9 | 10 | $(PROTOC): 11 | ifeq ($(UNAME), Darwin) 12 | brew install protobuf 13 | endif 14 | ifeq ($(UNAME), Linux) 15 | sudo apt-get install protobuf-compiler 16 | endif 17 | 18 | $(PROTOC_GEN_GO): 19 | go get -u dubbo.apache.org/dubbo-go/v3/protocol/grpc/protoc-gen-dubbo 20 | 21 | helloworld.pb.go: helloworld.proto | $(PROTOC_GEN_GO) $(PROTOC) 22 | protoc -I . helloworld.proto --dubbo_out=plugins=grpc+dubbo:. 23 | 24 | .PHONY: compile 25 | compile: helloworld.pb.go 26 | 27 | -------------------------------------------------------------------------------- /compatibility/tracing/jsonrpc/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | consumer: 10 | filter: tracing 11 | references: 12 | UserProvider: 13 | protocol: jsonrpc 14 | interface: org.apache.dubbo.UserProvider 15 | cluster: failover 16 | -------------------------------------------------------------------------------- /compatibility/tracing/jsonrpc/go-client/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | networks: 42 | jaeger-example: 43 | -------------------------------------------------------------------------------- /compatibility/tracing/jsonrpc/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | 3 | dubbo: 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | timeout: 3s 8 | address: 127.0.0.1:2181 9 | protocols: 10 | jsonrpc: 11 | name: jsonrpc 12 | ip: 127.0.0.1 13 | port: 20001 14 | provider: 15 | filter: tracing 16 | services: 17 | UserProvider: 18 | interface: org.apache.dubbo.UserProvider 19 | cluster: failover 20 | -------------------------------------------------------------------------------- /compatibility/tracing/jsonrpc/go-server/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | jaeger: 11 | image: jaegertracing/all-in-one 12 | ports: 13 | - "6831:6831/udp" 14 | - "16686:16686" 15 | networks: 16 | - jaeger-example 17 | 18 | zipkin: 19 | image: openzipkin/zipkin 20 | container_name: zipkin 21 | environment: 22 | - STORAGE_TYPE=mysql 23 | - MYSQL_HOST=mysql 24 | - MYSQL_TCP_PORT=3306 25 | - MYSQL_USER=zipkin 26 | - MYSQL_PASS=zipkin 27 | ports: 28 | # Listen port for the Scribe transport 29 | - 9410:9410 30 | # Port used for the Zipkin UI and HTTP Api 31 | - 9411:9411 32 | depends_on: 33 | - storage 34 | 35 | storage: 36 | image: openzipkin/zipkin-mysql 37 | container_name: mysql 38 | ports: 39 | - 3307:3306 40 | 41 | networks: 42 | jaeger-example: 43 | -------------------------------------------------------------------------------- /compatibility/tracing/triple/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: IGreeterClient 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | tracing: 9 | mytracingKey: 10 | address: "http://tracing-analysis-dc-hz.aliyuncs.com/XXXXXX/api/traces" 11 | consumer: 12 | references: 13 | GreeterClientImpl: 14 | protocol: tri 15 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /compatibility/tracing/triple/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: IGreeterServer 4 | registries: 5 | demoZK: 6 | protocol: zookeeper 7 | address: 127.0.0.1:2181 8 | protocols: 9 | triple: 10 | name: tri 11 | port: 20000 12 | tracing: 13 | mytracingKey: 14 | address: "http://tracing-analysis-dc-hz.aliyuncs.com/XXXXXXXX/api/traces" 15 | provider: 16 | services: 17 | GreeterProvider: 18 | interface: com.apache.dubbo.sample.basic.IGreeter # must be compatible with grpc or dubbo-java -------------------------------------------------------------------------------- /config_yaml/go-client/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo client yaml configure file 2 | dubbo: 3 | registries: 4 | demoZK: 5 | protocol: zookeeper 6 | timeout: 3s 7 | address: 127.0.0.1:2181 8 | consumer: 9 | references: 10 | GreetServiceImpl: 11 | protocol: tri 12 | interface: com.apache.dubbo.sample.Greeter 13 | registry: demoZK 14 | retries: 3 15 | timeout: 3000 16 | -------------------------------------------------------------------------------- /config_yaml/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | # dubbo server yaml configure file 2 | dubbo: 3 | registries: 4 | demoZK: 5 | protocol: zookeeper 6 | timeout: 10s 7 | address: 127.0.0.1:2181 8 | protocols: 9 | tripleProtocol: 10 | name: tri 11 | port: 20000 12 | provider: 13 | services: 14 | GreetTripleServer: 15 | interface: com.apache.dubbo.sample.Greeter 16 | -------------------------------------------------------------------------------- /integrate_test/compatibility/generic/default/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper: 5 | image: zookeeper 6 | ports: 7 | - 2181:2181 8 | restart: on-failure 9 | 10 | -------------------------------------------------------------------------------- /integrate_test/compatibility/generic/default/docker/docker-health-check.sh: -------------------------------------------------------------------------------- 1 | curl 127.0.0.1:2181 2 | res=$? 3 | passCode=52 4 | while [ "$res" != "$passCode" ];do 5 | sleep 5 6 | curl 127.0.0.1:2181 7 | res=$? 8 | done 9 | 10 | sleep 5 11 | -------------------------------------------------------------------------------- /integrate_test/compatibility/rpc/triple/pb/dubbogo-grpc/tests/integration/main_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package integration 19 | 20 | import ( 21 | "os" 22 | "testing" 23 | ) 24 | 25 | func TestMain(m *testing.M) { 26 | os.Exit(m.Run()) 27 | } 28 | -------------------------------------------------------------------------------- /integrate_test/dockercompose/docker-health-check.sh: -------------------------------------------------------------------------------- 1 | curl 127.0.0.1:2181 2 | res=$? 3 | passCode=52 4 | while [ "$res" != "$passCode" ]; do 5 | sleep 5 6 | curl 127.0.0.1:2181 7 | res=$? 8 | done 9 | 10 | sleep 5 11 | curl http://127.0.0.1:8848/nacos/v1/console/health/liveness 12 | sleep 10 13 | 14 | curl http://127.0.0.1:8090 15 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/README.md: -------------------------------------------------------------------------------- 1 | # Dubbo java and go interoperability, dubbo protocol 2 | 3 | Please refer to [Multiple Protocols](https://github.com/apache/dubbo-go-samples/tree/main/rpc/multi-protocols) for how to write non-protobuf style protocol. 4 | 5 | # Run 6 | 7 | ## Java 8 | 9 | client 10 | ```bash 11 | # in directory java-client 12 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.hessian2.client.Application" 13 | ``` 14 | 15 | server 16 | ```bash 17 | # in directory java-server 18 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.hessian2.provider.Application" 19 | ``` 20 | 21 | ## go 22 | 23 | client 24 | ```bash 25 | go run go-client/client.go 26 | ``` 27 | 28 | server 29 | ```bash 30 | go run go-server/server.go 31 | ``` 32 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/java-client/README.md: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.hessian2.client.Application" -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/java-client/src/main/java/org/apache/dubbo/hessian2/api/GreetingsService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.hessian2.api; 19 | 20 | public interface GreetingsService { 21 | GreetResponse greet(GreetRequest req); 22 | } 23 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/java-server/README.md: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.hessian2.provider.Application" -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/java-server/src/main/java/org/apache/dubbo/hessian2/api/GreetingsService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.hessian2.api; 19 | 20 | public interface GreetingsService { 21 | GreetResponse greet(GreetRequest req); 22 | } 23 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/proto/build.sh: -------------------------------------------------------------------------------- 1 | protoc -I ./ \ 2 | --go-hessian2_out=./ --go-hessian2_opt=paths=source_relative \ 3 | --go-dubbo_out=./ --go-dubbo_opt=paths=source_relative \ 4 | ./greet.proto 5 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/proto/java_math/java_math.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | syntax = "proto3"; 19 | 20 | package java_math; 21 | 22 | option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_math;java_math"; 23 | 24 | message Decimal {} 25 | 26 | message Integer {} 27 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/proto/java_sql_time/java_sql_time.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | syntax = "proto3"; 19 | 20 | package java_sql_time; 21 | 22 | option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_sql_time;java_sql_time"; 23 | 24 | message Time {} 25 | 26 | message Date {} -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/proto/java_util/java_util.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | syntax = "proto3"; 19 | 20 | package java_util; 21 | 22 | option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_util;java_util"; 23 | 24 | message Locale {} 25 | 26 | message UUID {} -------------------------------------------------------------------------------- /java_interop/non-protobuf-dubbo/proto/self_extension/self_extension.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package self_extension; 4 | 5 | option go_package = "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto/self_extension;self_extension"; 6 | 7 | import "google/protobuf/descriptor.proto"; 8 | import "hessian2_extend/hessian2_extend.proto"; 9 | 10 | message Time { 11 | option (hessian2_extend.message_extend) = { 12 | java_class_name: "java.sql.Time"; 13 | reference_path: "dubbo.apache.org/dubbo-go/v3/proto/java_sql_time"; 14 | }; 15 | } -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/java_interop/non-protobuf-triple.zip -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/README.md: -------------------------------------------------------------------------------- 1 | # Dubbo java and go interoperability, non-protobuf and triple protocol 2 | 3 | Please refer to [Multiple Protocols](https://github.com/apache/dubbo-go-samples/tree/main/rpc/multi-protocols) for how to write non-protobuf style protocol. 4 | 5 | # Run 6 | 7 | ## Java 8 | 9 | client 10 | ```bash 11 | # in directory java-client 12 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.client.Application" 13 | ``` 14 | 15 | server 16 | ```bash 17 | # in directory java-server 18 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.provider.Application" 19 | ``` 20 | 21 | ## go 22 | 23 | client 24 | ```bash 25 | go run go-client/client.go 26 | ``` 27 | 28 | server 29 | ```bash 30 | go run go-server/server.go 31 | ``` 32 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/java-client/README.md: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.client.Application" -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.tri.hessian2.api; 19 | 20 | public interface GreetingsService { 21 | GreetResponse greet(GreetRequest req); 22 | } 23 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/java-server/README.md: -------------------------------------------------------------------------------- 1 | `mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.provider.Application"` -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.apache.dubbo.tri.hessian2.api; 19 | 20 | public interface GreetingsService { 21 | GreetResponse greet(GreetRequest req); 22 | } 23 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/proto/build.sh: -------------------------------------------------------------------------------- 1 | protoc -I ./ \ 2 | --go-hessian2_out=./ --go-hessian2_opt=paths=source_relative \ 3 | --go-triple_out=./ --go-triple_opt=paths=source_relative \ 4 | ./greet.proto 5 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/proto/java_math/java_math.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | syntax = "proto3"; 19 | 20 | package java_math; 21 | 22 | option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_math;java_math"; 23 | 24 | message Decimal {} 25 | 26 | message Integer {} 27 | -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/proto/java_util/java_util.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | syntax = "proto3"; 19 | 20 | package java_util; 21 | 22 | option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_util;java_util"; 23 | 24 | message Locale {} 25 | 26 | message UUID {} -------------------------------------------------------------------------------- /java_interop/non-protobuf-triple/proto/self_extension/self_extension.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package self_extension; 4 | 5 | option go_package = "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto/self_extension;self_extension"; 6 | 7 | import "google/protobuf/descriptor.proto"; 8 | import "hessian2_extend/hessian2_extend.proto"; 9 | 10 | message Time { 11 | option (hessian2_extend.message_extend) = { 12 | java_class_name: "java.sql.Time"; 13 | reference_path: "dubbo.apache.org/dubbo-go/v3/proto/java_sql_time"; 14 | }; 15 | } -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.sample; 5 | 6 | public interface HelloReplyOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloReply) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string message = 1; 12 | * @return The message. 13 | */ 14 | java.lang.String getMessage(); 15 | /** 16 | * string message = 1; 17 | * @return The bytes for message. 18 | */ 19 | com.google.protobuf.ByteString 20 | getMessageBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.sample; 5 | 6 | public interface HelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.sample.Consumer" -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.sample; 5 | 6 | public interface HelloReplyOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloReply) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string message = 1; 12 | * @return The message. 13 | */ 14 | java.lang.String getMessage(); 15 | /** 16 | * string message = 1; 17 | * @return The bytes for message. 18 | */ 19 | com.google.protobuf.ByteString 20 | getMessageBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.sample; 5 | 6 | public interface HelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.sample.Provider" -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/java-server/src/main/java/org/apache/dubbo/sample/GreeterImpl.java: -------------------------------------------------------------------------------- 1 | package org.apache.dubbo.sample; 2 | 3 | public class GreeterImpl extends DubboGreeterTriple.GreeterImplBase { 4 | @Override 5 | public HelloReply sayHello(HelloRequest request) { 6 | return HelloReply.newBuilder() 7 | .setMessage("Hello," + request.getName() + "!") 8 | .build(); 9 | } 10 | } -------------------------------------------------------------------------------- /java_interop/protobuf-triple/java/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | java 9 | 1.0-SNAPSHOT 10 | pom 11 | 12 | 13 | java-client 14 | java-server 15 | 16 | 17 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/README.md: -------------------------------------------------------------------------------- 1 | # Dubbo java and go interoperability, with service discovery ands protocol 2 | 3 | This example shows dubbo-go's service discovery and java-go interoperation feature with Nacos as registry. 4 | 5 | > before run the code, you should Follow the instruction to install and start Nacos server. 6 | 7 | 本示例针对 Dubbo2 老版本用户(或者仍在使用 Dubbo3 老服务发现模型)接口级服务发现的用户。演示如何基于 Dubbo2 接口级服务发现实现 Java 与 Go 体系互调。 8 | 9 | ## dubbo java 调用 dubbo go 10 | 11 | 1. 启动 go server 12 | 13 | ```shell 14 | go run ./go-server/cmd/server.go 15 | ``` 16 | 17 | 2. 启动 java client 18 | 19 | ```shell 20 | ./java-client/run.sh 21 | ``` 22 | 23 | ## dubbo go 调用 dubbo java 24 | 25 | 1. 启动 java server 26 | 27 | ```shell 28 | ./java-server/run.sh 29 | ``` 30 | 31 | 2. 启动 go client 32 | 33 | ```shell 34 | go run ./go-client/cmd/client.go 35 | ``` -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.Main" -Dexec.cleanupDaemonThreads=false 2 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string greeting = 1; 12 | * @return The greeting. 13 | */ 14 | String getGreeting(); 15 | /** 16 | * string greeting = 1; 17 | * @return The bytes for greeting. 18 | */ 19 | com.google.protobuf.ByteString 20 | getGreetingBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string hello = 1; 12 | * @return The hello. 13 | */ 14 | String getHello(); 15 | /** 16 | * string hello = 1; 17 | * @return The bytes for hello. 18 | */ 19 | com.google.protobuf.ByteString 20 | getHelloBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.Main" -Dexec.cleanupDaemonThreads=false 2 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string greeting = 1; 12 | * @return The greeting. 13 | */ 14 | java.lang.String getGreeting(); 15 | /** 16 | * string greeting = 1; 17 | * @return The bytes for greeting. 18 | */ 19 | com.google.protobuf.ByteString 20 | getGreetingBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string hello = 1; 12 | * @return The hello. 13 | */ 14 | java.lang.String getHello(); 15 | /** 16 | * string hello = 1; 17 | * @return The bytes for hello. 18 | */ 19 | com.google.protobuf.ByteString 20 | getHelloBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/README.md: -------------------------------------------------------------------------------- 1 | # Dubbo java and go interoperability, with service discovery ands protocol 2 | 3 | This example shows dubbo-go's service discovery and java-go interoperation feature with Nacos as registry. 4 | 5 | > before run the code, you should Follow the instruction to install and start Nacos server. 6 | 7 | 本示例针对 Dubbo3 版本用户,演示如何基于 Dubbo3 应用级服务发现实现 Java 与 Go 体系互调。 8 | 9 | ## dubbo java 调用 dubbo go 10 | 11 | 1. 启动 go server 12 | 13 | ```shell 14 | go run ./go-server/cmd/server.go 15 | ``` 16 | 17 | 2. 启动 java client 18 | 19 | ```shell 20 | ./java-client/run.sh 21 | ``` 22 | 23 | ## dubbo go 调用 dubbo java 24 | 25 | > 本示例当前存在问题,请跟进排查:https://github.com/apache/dubbo-go/issues/2653 26 | 27 | 1. 启动 java server 28 | 29 | ```shell 30 | ./java-server/run.sh 31 | ``` 32 | 33 | 2. 启动 go client 34 | 35 | ```shell 36 | go run ./go-client/cmd/client.go 37 | ``` -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string greeting = 1; 12 | * @return The greeting. 13 | */ 14 | java.lang.String getGreeting(); 15 | /** 16 | * string greeting = 1; 17 | * @return The bytes for greeting. 18 | */ 19 | com.google.protobuf.ByteString 20 | getGreetingBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string hello = 1; 12 | * @return The hello. 13 | */ 14 | java.lang.String getHello(); 15 | /** 16 | * string hello = 1; 17 | * @return The bytes for hello. 18 | */ 19 | com.google.protobuf.ByteString 20 | getHelloBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.Main" -Dexec.cleanupDaemonThreads=false 2 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/src/main/proto/greet.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option java_package = "org.apache.dubbo.samples.proto"; 4 | option java_multiple_files = true; 5 | option java_outer_classname = "GreetProto"; 6 | option objc_class_prefix = "HLW"; 7 | 8 | package org.apache.dubbo.samples.proto; 9 | 10 | message GreetRequest { 11 | string name = 1; 12 | } 13 | 14 | message GreetResponse { 15 | string greeting = 1; 16 | } 17 | 18 | message SayHelloRequest{ 19 | string name = 1; 20 | } 21 | 22 | message SayHelloResponse{ 23 | string hello = 1; 24 | } 25 | 26 | service GreetService { 27 | rpc Greet(GreetRequest) returns (GreetResponse) {} 28 | rpc SayHello(SayHelloRequest) returns (SayHelloResponse) {} 29 | } 30 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | dubbo: 18 | application: 19 | name: greet-java-client 20 | logger: slf4j 21 | registry: 22 | address: nacos://127.0.0.1:8848 23 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-client/src/main/resources/dubbo.properties: -------------------------------------------------------------------------------- 1 | dubbo.application.service-discovery.migration=APPLICATION_FIRST -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface GreetResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string greeting = 1; 12 | * @return The greeting. 13 | */ 14 | java.lang.String getGreeting(); 15 | /** 16 | * string greeting = 1; 17 | * @return The bytes for greeting. 18 | */ 19 | com.google.protobuf.ByteString 20 | getGreetingBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloRequestOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string name = 1; 12 | * @return The name. 13 | */ 14 | java.lang.String getName(); 15 | /** 16 | * string name = 1; 17 | * @return The bytes for name. 18 | */ 19 | com.google.protobuf.ByteString 20 | getNameBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java: -------------------------------------------------------------------------------- 1 | // Generated by the protocol buffer compiler. DO NOT EDIT! 2 | // source: greet.proto 3 | 4 | package org.apache.dubbo.samples.proto; 5 | 6 | public interface SayHelloResponseOrBuilder extends 7 | // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse) 8 | com.google.protobuf.MessageOrBuilder { 9 | 10 | /** 11 | * string hello = 1; 12 | * @return The hello. 13 | */ 14 | java.lang.String getHello(); 15 | /** 16 | * string hello = 1; 17 | * @return The bytes for hello. 18 | */ 19 | com.google.protobuf.ByteString 20 | getHelloBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/run.sh: -------------------------------------------------------------------------------- 1 | mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.Main" -Dexec.cleanupDaemonThreads=false 2 | -------------------------------------------------------------------------------- /java_interop/service_discovery/service/java-server/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | dubbo: 18 | application: 19 | name: greet-java-server 20 | logger: slf4j 21 | protocol: 22 | name: tri 23 | port: 20055 24 | registry: 25 | address: nacos://127.0.0.1:8848 26 | -------------------------------------------------------------------------------- /llm/.env.example: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | OLLAMA_MODELS= qwen2.5:7b, llava:7b 20 | OLLAMA_URL = http://localhost:11434 21 | TIME_OUT_SECOND = 300 22 | 23 | NACOS_URL = localhost:8848 24 | MAX_CONTEXT_COUNT = 3 25 | MODEL_NAME = qwen2.5:7b 26 | SERVER_PORT = 20000 27 | -------------------------------------------------------------------------------- /logger/rolling/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | protocols: 3 | triple: 4 | name: tri 5 | port: 20000 6 | logger: 7 | file: 8 | name: logs.log 9 | max-size: 1 10 | max-age: 3 11 | max-backups: 5 12 | compress: false 13 | -------------------------------------------------------------------------------- /metrics/assert/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/dashboard.png -------------------------------------------------------------------------------- /metrics/assert/datasource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/datasource.png -------------------------------------------------------------------------------- /metrics/assert/import-datasource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/import-datasource.png -------------------------------------------------------------------------------- /metrics/assert/import-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/import-json.png -------------------------------------------------------------------------------- /metrics/assert/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/import.png -------------------------------------------------------------------------------- /metrics/assert/podmonitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/metrics/assert/podmonitor.png -------------------------------------------------------------------------------- /metrics/go-client/Dockerfile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | FROM ubuntu:latest 18 | 19 | WORKDIR /app 20 | 21 | COPY ./metricsClient . 22 | 23 | CMD ["./metricsClient"] -------------------------------------------------------------------------------- /metrics/go-client/build.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # if run on linux server use this 18 | #GOOS=linux GOARCH=amd64 19 | go build -o metricsClient cmd/main.go 20 | docker build . -t metrics-client:latest -------------------------------------------------------------------------------- /metrics/go-server/Dockerfile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | FROM ubuntu:latest 18 | 19 | WORKDIR /app 20 | 21 | COPY ./metricsApp . 22 | 23 | CMD ["./metricsApp"] -------------------------------------------------------------------------------- /metrics/go-server/build.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # if run on linux server use this 18 | #GOOS=linux GOARCH=arm64 19 | go build -o metricsApp cmd/main.go 20 | docker build . -t metrics-app:latest -------------------------------------------------------------------------------- /online_boutique/docs/cymbal-shops.md: -------------------------------------------------------------------------------- 1 | # Cymbal Shops Branding 2 | 3 | By default, when you deploy this sample app, the "Online Boutique" branding (logo and wording) will be used. 4 | But you may want to use Google Cloud's fictitious company, _Cymbal Shops_, instead. 5 | 6 | To use "Cymbal Shops" branding, set the `CYMBAL_BRANDING` environment variable to `"true"` in the the Kubernetes manifest (`.yaml`) for the `frontend` Deployment. 7 | 8 | ``` 9 | apiVersion: apps/v1 10 | kind: Deployment 11 | metadata: 12 | name: frontend 13 | spec: 14 | ... 15 | template: 16 | ... 17 | spec: 18 | ... 19 | containers: 20 | ... 21 | env: 22 | ... 23 | - name: CYMBAL_BRANDING 24 | value: "true" 25 | ``` 26 | -------------------------------------------------------------------------------- /online_boutique/docs/development-principles.md: -------------------------------------------------------------------------------- 1 | # Development Principles 2 | 3 | > **Note:** This document outlines guidances behind some development decisions 4 | > behind the Online Boutique demo application. 5 | 6 | ### Minimal configuration 7 | 8 | Running the demo locally or on GCP should require minimal to no 9 | configuration unless absolutely necessary to run critical parts of the demo. 10 | 11 | Configuration that takes multiple steps, especially such as creating service 12 | accounts should be avoided. 13 | 14 | ### Microservice implementations should not be complex 15 | 16 | Each service should provide a minimal implementation and try to avoid 17 | unnecessary code and logic that's not executed. 18 | 19 | Keep in mind that any service implementation is a decent example of “a GRPC 20 | application that runs on Kubernetes”. Keeping the source code short and 21 | navigable will serve this purpose. 22 | 23 | It is okay to have intentional inefficiencies in the code as they help 24 | illustrate the capabilities of profiling and diagnostics offerings. 25 | -------------------------------------------------------------------------------- /online_boutique/docs/img/architecture-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/docs/img/architecture-diagram.png -------------------------------------------------------------------------------- /online_boutique/docs/img/jaeger-dependencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/docs/img/jaeger-dependencies.png -------------------------------------------------------------------------------- /online_boutique/docs/img/memorystore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/docs/img/memorystore.png -------------------------------------------------------------------------------- /online_boutique/docs/img/online-boutique-frontend-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/docs/img/online-boutique-frontend-1.png -------------------------------------------------------------------------------- /online_boutique/docs/img/online-boutique-frontend-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/docs/img/online-boutique-frontend-2.png -------------------------------------------------------------------------------- /online_boutique/docs/network-policies/network-policy-adservice.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: networking.k8s.io/v1 16 | kind: NetworkPolicy 17 | metadata: 18 | name: adservice 19 | spec: 20 | podSelector: 21 | matchLabels: 22 | app: adservice 23 | policyTypes: 24 | - Ingress 25 | - Egress 26 | ingress: 27 | - from: 28 | - podSelector: 29 | matchLabels: 30 | app: frontend 31 | ports: 32 | - port: 9555 33 | protocol: TCP 34 | egress: 35 | - {} -------------------------------------------------------------------------------- /online_boutique/docs/network-policies/network-policy-deny-all.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: networking.k8s.io/v1 16 | kind: NetworkPolicy 17 | metadata: 18 | name: deny-all 19 | spec: 20 | podSelector: {} 21 | policyTypes: 22 | - Ingress 23 | - Egress 24 | -------------------------------------------------------------------------------- /online_boutique/docs/network-policies/network-policy-frontend.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: networking.k8s.io/v1 16 | kind: NetworkPolicy 17 | metadata: 18 | name: frontend 19 | spec: 20 | podSelector: 21 | matchLabels: 22 | app: frontend 23 | policyTypes: 24 | - Ingress 25 | - Egress 26 | ingress: 27 | - {} 28 | egress: 29 | - {} -------------------------------------------------------------------------------- /online_boutique/docs/network-policies/network-policy-loadgenerator.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: networking.k8s.io/v1 16 | kind: NetworkPolicy 17 | metadata: 18 | name: loadgenerator 19 | spec: 20 | podSelector: 21 | matchLabels: 22 | app: loadgenerator 23 | policyTypes: 24 | - Egress 25 | egress: 26 | - {} -------------------------------------------------------------------------------- /online_boutique/docs/network-policies/network-policy-redis.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: networking.k8s.io/v1 16 | kind: NetworkPolicy 17 | metadata: 18 | name: redis-cart 19 | spec: 20 | podSelector: 21 | matchLabels: 22 | app: redis-cart 23 | policyTypes: 24 | - Ingress 25 | - Egress 26 | ingress: 27 | - from: 28 | - podSelector: 29 | matchLabels: 30 | app: cartservice 31 | ports: 32 | - port: 6379 33 | protocol: TCP 34 | egress: 35 | - {} 36 | -------------------------------------------------------------------------------- /online_boutique/src/currencyservice/data/currency_conversion.json: -------------------------------------------------------------------------------- 1 | { 2 | "EUR": 1.0, 3 | "USD": 1.1305, 4 | "JPY": 126.40, 5 | "BGN": 1.9558, 6 | "CZK": 25.592, 7 | "DKK": 7.4609, 8 | "GBP": 0.85970, 9 | "HUF": 315.51, 10 | "PLN": 4.2996, 11 | "RON": 4.7463, 12 | "SEK": 10.5375, 13 | "CHF": 1.1360, 14 | "ISK": 136.80, 15 | "NOK": 9.8040, 16 | "HRK": 7.4210, 17 | "RUB": 74.4208, 18 | "TRY": 6.1247, 19 | "AUD": 1.6072, 20 | "BRL": 4.2682, 21 | "CAD": 1.5128, 22 | "CNY": 7.5857, 23 | "HKD": 8.8743, 24 | "IDR": 15999.40, 25 | "ILS": 4.0875, 26 | "INR": 79.4320, 27 | "KRW": 1275.05, 28 | "MXN": 21.7999, 29 | "MYR": 4.6289, 30 | "NZD": 1.6679, 31 | "PHP": 59.083, 32 | "SGD": 1.5349, 33 | "THB": 36.012, 34 | "ZAR": 16.0583 35 | } -------------------------------------------------------------------------------- /online_boutique/src/emailservice/proto/email.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package hipstershop; 4 | 5 | option go_package = "./proto;hipstershop"; 6 | 7 | service EmailService { 8 | rpc SendOrderConfirmation (SendOrderConfirmationRequest) returns (SendOrderConfirmationResponse){} 9 | } 10 | 11 | message SendOrderConfirmationRequest { 12 | string email = 1; 13 | string order = 2; 14 | } 15 | 16 | message SendOrderConfirmationResponse { 17 | string message = 1; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/favicon-cymbal.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/favicon-cymbal.ico -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/favicon.ico -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_CheckOutIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_CurrencyIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_FacebookIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_HelpIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_InstagramIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_PinterestIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_ProfileIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_SearchIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_TwitterIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_UpDownControl.svg: -------------------------------------------------------------------------------- 1 | 2 | Hipster 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/icons/Hipster_YoutubeIcon.svg: -------------------------------------------------------------------------------- 1 | Hipster -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/Advert2BannerImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/Advert2BannerImage.png -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/AdvertBannerImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/AdvertBannerImage.png -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/HeroBannerImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/HeroBannerImage.png -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/HeroBannerImage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/HeroBannerImage2.png -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/VRHeadsets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/VRHeadsets.png -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/credits.txt: -------------------------------------------------------------------------------- 1 | folded-clothes-on-white-chair.jpg,,https://unsplash.com/photos/fr0J5-GIVyg 2 | folded-clothes-on-white-chair-wide.jpg,,https://unsplash.com/photos/fr0J5-GIVyg 3 | -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/folded-clothes-on-white-chair-wide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/folded-clothes-on-white-chair-wide.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/images/folded-clothes-on-white-chair.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/images/folded-clothes-on-white-chair.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/bamboo-glass-jar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/bamboo-glass-jar.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/candle-holder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/candle-holder.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/hairdryer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/hairdryer.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/loafers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/loafers.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/mug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/mug.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/salt-and-pepper-shakers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/salt-and-pepper-shakers.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/sunglasses.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/sunglasses.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/tank-top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/tank-top.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/static/img/products/watch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/online_boutique/src/frontend/static/img/products/watch.jpg -------------------------------------------------------------------------------- /online_boutique/src/frontend/templates/ad.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {{ define "text_ad" }} 18 |
19 |
20 | Ad 21 | 22 | {{.Text}} 23 | 24 |
25 |
26 | {{ end }} -------------------------------------------------------------------------------- /online_boutique/src/loadgenerator/requirements.in: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | locust==1.6.0 19 | requests==2.28.0 20 | urllib3==1.26.9 -------------------------------------------------------------------------------- /online_boutique/src/paymentservice/proto/payment.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package hipstershop; 4 | 5 | option go_package = "./proto;hipstershop"; 6 | 7 | service PaymentService { 8 | rpc Charge(ChargeRequest) returns (ChargeResponse) {} 9 | } 10 | 11 | message CreditCardInfo { 12 | string credit_card_number = 1; 13 | int32 credit_card_cvv = 2; 14 | int32 credit_card_expiration_year = 3; 15 | int32 credit_card_expiration_month = 4; 16 | 17 | } 18 | 19 | message Money { 20 | string currency_code = 1; 21 | 22 | int64 units = 2; 23 | 24 | int32 nanos = 3; 25 | } 26 | 27 | message ChargeRequest { 28 | Money amount = 1; 29 | CreditCardInfo credit_card = 2; 30 | } 31 | 32 | message ChargeResponse { 33 | string transaction_id = 1; 34 | } -------------------------------------------------------------------------------- /registry/README.md: -------------------------------------------------------------------------------- 1 | # Registry 2 | 3 | This directory contains a series of examples showing dubbo-go's service discovery feature. Check [Service Discovery][] on our official website for detailed explanation. 4 | 5 | * [Zookeeper as registry](./zookeeper) 6 | * [Nacos as registry](./nacos) 7 | 8 | [Service Discovery]: https://dubbo-next.staged.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery -------------------------------------------------------------------------------- /registry/nacos/README.md: -------------------------------------------------------------------------------- 1 | # Nacos as registry 2 | 3 | This example shows dubbo-go's service discovery feature with Nacos as registry. 4 | 5 | ## How to run 6 | 7 | ### Start Nacos server 8 | Follow this instruction to [install and start Nacos server](https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/). 9 | 10 | ### Run server 11 | ```shell 12 | $ go run ./go-server/cmd/server.go 13 | ``` 14 | 15 | test rpc server work as expected: 16 | ```shell 17 | $ curl \ 18 | --header "Content-Type: application/json" \ 19 | --data '{"name": "Dubbo"}' \ 20 | http://localhost:20000/greet.GreetService/Greet 21 | ``` 22 | 23 | Open `https://localhost:8848/nacos/` with browser, check url address successfully registered into Nacos. 24 | 25 | ### Run client 26 | ```shell 27 | $ go run ./go-client/cmd/client.go 28 | hello world 29 | ``` -------------------------------------------------------------------------------- /rpc/triple/old_triple/go-server/conf/dubbogo.yml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | # registries: 3 | # zk: 4 | # address: zookeeper://127.0.0.1:2181 5 | protocols: 6 | triple: 7 | name: tri 8 | port: 20000 9 | provider: 10 | services: 11 | GreetDubbo3Server: 12 | # interface is for registry 13 | interface: greet.GreetService 14 | -------------------------------------------------------------------------------- /task/shop/.images/shop-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/task/shop/.images/shop-arc.png -------------------------------------------------------------------------------- /task/shop/READEME_CN.md: -------------------------------------------------------------------------------- 1 | 此任务基于一个简单的线上商城微服务系统演示了 Dubbo 的流量管控能力。用于配合 [【Dubbo 官网】-【文档】-【任务】-【流量管控】](https://cn.dubbo.apache.org/zh-cn/overview/tasks/traffic-management/)部分文档。 2 | 3 | ## 架构 4 | 线上商城的架构图如下: 5 | 6 | ![shop-arc](./.images/shop-arc.png) 7 | 8 | 系统由 5 个微服务应用组成: 9 | * `Frontend 商城主页`,作为与用户交互的 web 界面,通过调用 `User`、`Detail`、`Order` 等提供用户登录、商品展示和订单管理等服务。 10 | * `User 用户服务`,负责用户数据管理、身份校验等。 11 | * `Order 订单服务`,提供订订单创建、订单查询等服务,依赖 `Detail` 服务校验商品库存等信息。 12 | * `Detail 商品详情服务`,展示商品详情信息,调用 `Comment` 服务展示用户对商品的评论记录。 13 | * `Comment 评论服务`,管理用户对商品的评论数据。 14 | 15 | ## 部署商场系统 16 | 配合官网的流量管控任务,有两种模式可以启动商城系统并进行流量管控 17 | 1. 本地运行任务,根据当前的流量管控动作按需要启动相关的应用进程 18 | 2. 通过部署 Kubernetes 资源一次性拉起所有应用进程 -------------------------------------------------------------------------------- /task/shop/frontend/cmd/main.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package main 19 | 20 | import "github.com/apache/dubbo-go-samples/task/shop/frontend/pages" 21 | 22 | func main() { 23 | router := pages.InitRouter() 24 | _ = router.Run(":8080") 25 | } 26 | -------------------------------------------------------------------------------- /task/shop/frontend/pages/static/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/task/shop/frontend/pages/static/architecture.png -------------------------------------------------------------------------------- /task/shop/frontend/pages/static/goods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apache/dubbo-go-samples/9b9c679594c0e3e34696bd24e3ddd8d56c9188d9/task/shop/frontend/pages/static/goods.png -------------------------------------------------------------------------------- /transcation/seata-go/non-idl/README.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc example 2 | 3 | ## How to run? 4 | 5 | 1. Start the seata-server with the docker file. 6 | 7 | ```shell 8 | cd ../dockercompose 9 | docker-compose -f docker-compose.yml up -d seata-server 10 | ``` 11 | 12 | 2. Just execute the main function under non-idl/client/cmd and non-idl/server/cmd directory. 13 | -------------------------------------------------------------------------------- /transcation/seata-go/non-idl/README_zh.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc 例子 2 | 3 | ## 如何运行? 4 | 5 | 1. 先执行以下命令,启动 seata-server。 6 | 7 | ```shell 8 | cd ../dockercompose 9 | docker-compose -f docker-compose.yml up -d seata-server 10 | ``` 11 | 12 | 2. 再执行 non-idl/client/cmd 和 non-idl/server/cmd 目录下的 main()方法。 13 | -------------------------------------------------------------------------------- /transcation/seata-go/triple/README.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc example 2 | 3 | ## How to run? 4 | 5 | 1. Start the seata-server with the docker file. 6 | 7 | ```shell 8 | cd ../dockercompose 9 | docker-compose -f docker-compose.yml up -d seata-server 10 | ``` 11 | 12 | 2. Just execute the main function under triple/client/cmd and triple/server/cmd directory. 13 | -------------------------------------------------------------------------------- /transcation/seata-go/triple/README_zh.md: -------------------------------------------------------------------------------- 1 | # Seata-go tcc 例子 2 | 3 | ## 如何运行? 4 | 5 | 1. 先执行以下命令,启动 seata-server。 6 | 7 | ```shell 8 | cd ../dockercompose 9 | docker-compose -f docker-compose.yml up -d seata-server 10 | ``` 11 | 12 | 2. 再执行 triple/client/cmd 和 triple/server/cmd 目录下的 main()方法。 13 | -------------------------------------------------------------------------------- /waiting_launch.sh: -------------------------------------------------------------------------------- 1 | # !/bin/bash 2 | 3 | if [ -z "$1" ]; then 4 | echo "Provide log file please, like : ./waiting_launch.sh log.sh" 5 | exit 6 | fi 7 | 8 | PREV_MD5="" 9 | MD5="" 10 | 11 | # wait 150s at most 12 | for ((i=1; i<=15; i++)); 13 | do 14 | sleep 10s 15 | MD5=$(md5sum $1 | cut -d ' ' -f1) 16 | if [ "$PREV_MD5" = "$MD5" ]; then 17 | exit 18 | fi 19 | echo "waiting... log file md5: $MD5" 20 | PREV_MD5=$MD5 21 | done 22 | 23 | echo "java-server is not launched properly, the launching log will be outputted at below: " 24 | cat $1 --------------------------------------------------------------------------------