{"repo":"jhump/grpctunnel","free":true,"listed":false,"github":"https://github.com/jhump/grpctunnel","clone":"git clone https://github.com/jhump/grpctunnel.git","description":"gRPC Tunneling","language":"Go","stars":123,"topics":["go","golang","grpc","tunneling"],"license":"Apache-2.0","category":"networking-infra","readme_excerpt":"gRPC Tunnels This library enables carrying gRPC over gRPC. There are a few niche use cases where this could be useful, but the most widely applicable one is likely for letting gRPC servers communicate in the reverse direction, sending requests to connected clients. The tunnel is itself a gRPC service, which provides bidirectional streaming methods for forward and reverse tunneling. Forward Tunnel : A forward tunnel is the same direction as normal gRPC connections. This means that the gRPC client that created the tunnel is also the client for requests that flow through the tunnel. For forward cases, the server must register service handlers for the gRPC services that can be accessed over the tunnel. A forward tunnel allows for all requests made on the tunnel to be directed to the same server. With a typical gRPC client, connecting to a replicated server, requests are typically load balanced across backends. For typical stateless applications, this is desirable for resource utilization and fault tolerance. But some applications that are not stateless may need affinity. The tunnel provides that affinity. Instead of the client making multiple requests, which could all be directed to different backends, the client makes one request to open a tunnel. The resulting tunnel can then be used to create other RPC stubs, so that all requests issued via those stubs are directed to the single backend to which the tunnel was opened. Reverse Tunnel : A reverse tunnel is the opposite: requests","default_branch":null,"files":null,"tree":[],"storefront":"/r/jhump","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/jhump/grpctunnel/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}