# hello-grpc
**Repository Path**: feuyeux/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**: 1
- **Forks**: 1
- **Created**: 2021-09-15
- **Last Updated**: 2024-03-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Grpc
## README
# Hello gRPC
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](https://github.com/grpc/grpc/releases)** | [CLion][15] |
| 2 | [Rust](hello-grpc-rust) | **[tonic](https://lib.rs/crates/tonic/versions)** | [RustRover][31] |
| 3 | [Java](hello-grpc-java) | **[grpc-java](https://github.com/grpc/grpc-java/releases)** | [IDEA][4] |
| 4 | [Go](hello-grpc-go) | **[grpc-go](https://github.com/grpc/grpc-go/releases)** | [GoLand][6] |
| 5 | [C#](hello-grpc-csharp) | **[grpc-dotnet](https://github.com/grpc/grpc-dotnet/releases)** | [Rider][20] |
| 6 | [Python](hello-grpc-python) | **[grpcio](https://pypi.org/project/grpcio-tools)** | [PyCharm][12] |
| 7 | [Node.js](hello-grpc-nodejs) | **[grpc-js](https://www.npmjs.com/package/@grpc/grpc-js)** | [WebStorm][10] |
| 8 | [TypeScript](hello-grpc-ts) | **[grpc-js](https://www.npmjs.com/package/@grpc/grpc-js)** | [WebStorm][10] |
| 9 | [Dart](hello-grpc-dart) | **[grpc-dart](https://pub.dev/packages/grpc)** | [PyCharm][12] |
| 10 | [Kotlin](hello-grpc-kotlin) | **[grpc-kotlin](https://github.com/grpc/grpc-kotlin/releases)** | [IDEA][4] |
| 11 | [Swift](hello-grpc-swift) | **[grpc-swift](https://github.com/grpc/grpc-swift/releases)** | [AppCode][32] |
| 12 | [PHP](hello-grpc-php) | **[grpc-php](https://packagist.org/packages/grpc/grpc)** | [PhpStorm][33] |
## :coffee: What is

| No. | Lang | 4 MODELS | Collection | Sleep | Random | Timestamp | UUID | Env |
|:----|:-----------|:---------|:-----------|:------|:-------|:----------|:-----|:----|
| 1 | java | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 2 | go | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 3 | nodejs | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 4 | typescript | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 5 | python | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 6 | rust | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 7 | c++ | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 8 | c# | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 9 | kotlin | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 10 | swift | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 11 | dart | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| 12 | php | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 | 🍎 |
| No. | Lang | Header | TLS | Proxy | Docker | Build | UT | LOG |
|:----|:-----------|:-------|:----|:------|:-------|:---------------------|:--------------|:----------------|
| 1 | java | 🍎 | 🍎 | 🍎 | 🍎 | [maven][1] | [junit5][2] | [log4j2][3] |
| 2 | go | 🍎 | 🍎 | 🍎 | 🍎 | (mod) | (testing) | [logrus][5] |
| 3 | nodejs | 🍎 | 🥑 | 🍎 | 🍎 | [npm][7] | [mocha][8] | [winston][9] |
| 4 | typescript | 🍎 | 🍏 | 🍏 | 🍎 | [yarn][28]&[tsc][29] | | [winston][9] |
| 5 | python | 🍎 | 🍎 | 🍎 | 🍎 | [pip][11] | (unittest) | (logging) |
| 6 | rust | 🍎 | 🍎 | 🍎 | 🍎 | [cargo][13] | (test) | [log4rs][14] |
| 7 | c++ | 🍎 | 🍎 | 🍎 | 🍎 | [cmake][16] | [Catch2][24] | [glog][17] |
| 8 | c# | 🍎 | 🍎 | 🍎 | 🍎 | [nuget][18] | [NUnit][30] | [log4net][19] |
| 9 | kotlin | 🍎 | 🍎 | 🍎 | 🍎 | [gradle][21] | [junit5][2] | [log4j2][3] |
| 10 | swift | 🍎 | 🍏 | 🍏 | 🍎 | [spm][22] | (XCTest) | [swift-log][23] |
| 11 | dart | 🍎 | 🍏 | 🍏 | 🍎 | [pub][25] | [test][27] | [logger][26] |
| 12 | php | 🍎 | 🍏 | 🍏 | 🍏 | [composer][34] | [phpunit][35] | [log4php][36] |
> 🍎 `:apple:` done
> 🍏 `:green_apple:` unimplemented
> 🥑 `:avocado:` known issues
## :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 sample:
**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
```
#### 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)
### 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]: