# hello-grpc **Repository Path**: matrix53/hello-grpc ## Basic Information - **Project Name**: hello-grpc - **Description**: Hello gRPC - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-11-04 - **Last Updated**: 2023-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hello gRPC build tools Simple server and client examples showcasing gRPC features(including proxy and propagate, running in containers and kubernetes) with: | No. | Lang | Lib | IDE | |:----|:-----------------------------------------------------------|:----------------|:----------------| | 1 | [C++](hello-grpc-cpp) | **grpc** | [CLion][15] | | 2 | [Rust](hello-grpc-rust) | **tonic** | [RustRover][31] | | 3 | [Java](hello-grpc-java) | **grpc-java** | [IDEA][4] | | 4 | [Go](hello-grpc-go) | **grpc-go** | [GoLand][6] | | 5 | [C#](hello-grpc-csharp) | **grpc-dotnet** | [Rider][20] | | 6 | [Python](hello-grpc-python) | **grpcio** | [PyCharm][12] | | 7 | [Node.js](hello-grpc-nodejs) / [TypeScript](hello-grpc-ts) | **grpc-js** | [WebStorm][10] | | 8 | [Dart](hello-grpc-dart) | **grpc-dart** | [PyCharm][12] | | 9 | [Kotlin](hello-grpc-kotlin) | **grpc-kotlin** | [IDEA][4] | | 10 | [Swift](hello-grpc-swift) | **grpc-swift** | [AppCode][32] | | 11 | [PHP](hello-grpc-php) | **grpc-php** | [PhpStorm][33] | ## :coffee: What is ... ![grpc_diagram](diagram/hello-grpc.svg) | | 4 MODELS | Collection | Sleep | Random | Timestamp | UUID | Env | |:-----------|:---------|:-----------|:------|:-------|:----------|:-----|:----| | java | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | go | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | nodejs | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | typescript | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | python | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | rust | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | c++ | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | c# | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | kotlin | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | swift | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | dart | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | php | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | | | Header | TLS | Proxy | Docker | Build | UT | LOG | |:-----------|:-------|:----|:------|:-------|:---------------------|:--------------|:----------------| | java | 🍎 | 🍎 | 🍎 | 🍎 | [maven][1] | [junit5][2] | [log4j2][3] | | go | 🍎 | 🍎 | 🍎 | 🍎 | (mod) | (testing) | [logrus][5] | | nodejs | 🍎 | 🥑 | 🍎 | 🍎 | [npm][7] | [mocha][8] | [winston][9] | | typescript | 🍎 | 🍏 | 🍏 | 🍎 | [yarn][28]&[tsc][29] | | [winston][9] | | python | 🍎 | 🍎 | 🍎 | 🍎 | [pip][11] | (unittest) | (logging) | | rust | 🍎 | 🍎 | 🍎 | 🍎 | [cargo][13] | (test) | [log4rs][14] | | c++ | 🍎 | 🍎 | 🍎 | 🍎 | [cmake][16] | [Catch2][24] | [glog][17] | | c# | 🍎 | 🍎 | 🍎 | 🍎 | [nuget][18] | [NUnit][30] | [log4net][19] | | kotlin | 🍎 | 🍎 | 🍎 | 🍎 | [gradle][21] | [junit5][2] | [log4j2][3] | | swift | 🍎 | 🍏 | 🍏 | 🍎 | [spm][22] | (XCTest) | [swift-log][23] | | dart | 🍎 | 🍏 | 🍏 | 🍎 | [pub][25] | [test][27] | [logger][26] | | php | 🍎 | 🍏 | 🍏 | 🍏 | [composer][34] | [phpunit][35] | [log4php][36] | > 🍎 `:apple:` done > 🍏 `:green_apple:` unimplemented > 🥑 `:avocado:` known issues **Docker-Mesh-Kube** - [build and publish docker image](docker/README.md) - [running on kube](k8s/kube) - [running above service mesh](k8s/mesh) - [support open tracing](k8s/tracing) - [transcoder(Http2gRPC)](k8s/transcoder) ## :coffee: How to use ... ### 1 Envs - `GRPC_SERVER`: grpc server host on client side. - `GRPC_SERVER_PORT`: grpc server port on client side. - `GRPC_HELLO_BACKEND`: next grpc server host on server side. - `GRPC_HELLO_BACKEND_PORT`:next grpc server port on server side. - `GRPC_HELLO_SECURE`: set it as `Y` when you want to use `TLS` on both sides. ### 2 Containers Running in containers `client(kotlin)` -`[tls]:8881`-> `server1(java)` -`[tls]:8882`-> `server2(golang)` -`[tls]:8883`-> `server3(rust)` ```bash # server3(golang):8883 docker run --rm --name grpc_server_go -d \ -p 8883:8883 \ -e GRPC_SERVER_PORT=8883 \ feuyeux/grpc_server_rust:1.0.0 # server2(rust):8882 docker run --rm --name grpc_server_rust -d \ -p 8882:8882 \ -e GRPC_SERVER_PORT=8882 \ -e GRPC_HELLO_BACKEND=$(ipconfig getifaddr en0) \ -e GRPC_HELLO_BACKEND_PORT=8883 \ feuyeux/grpc_server_go:1.0.0 # server1(java):8881 docker run --rm --name grpc_server_java -d \ -p 8881:8881 \ -e GRPC_SERVER_PORT=8881 \ -e GRPC_HELLO_BACKEND=$(ipconfig getifaddr en0) \ -e GRPC_HELLO_BACKEND_PORT=8882 \ feuyeux/grpc_server_java:1.0.0 # client(kotlin) docker run --rm --name grpc_client_kotlin \ -e GRPC_SERVER=$(ipconfig getifaddr en0) \ -e GRPC_SERVER_PORT=8881 \ feuyeux/grpc_client_kotlin:1.0.0 ``` ### 3 Logs Enable gRpc Debugging ```bash export GRPC_VERBOSITY=DEBUG export GRPC_TRACE=all ``` ## :coffee: Recommend - - - [1]: [2]: [3]: [4]: [5]: [6]: [7]: [8]: [9]: [10]: [11]: [12]: [13]: [14]: [15]: [16]: [17]: [18]: [19]: [20]: [21]: [22]: [23]: [24]: [25]: [26]: [27]: [28]: [29]: [30]: [31]: [32]: [33]: [34]: [35]: [36]: