├── .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 | 
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 | 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 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_CurrencyIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_FacebookIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_HelpIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_InstagramIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_PinterestIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_ProfileIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_SearchIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_TwitterIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_UpDownControl.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/online_boutique/src/frontend/static/icons/Hipster_YoutubeIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |