the Lyft's Envoy use the same thread model as Netty: a connection was bound 
to a single thread during its lifetime.

在 2016年12月3日星期六 UTC+8上午3:35:10,Louis Ryan写道:
>
> I would take a look at Lyft's Envoy to perform the same role here too if 
> you're not too married to Java for the proxy
>
> On Thu, Dec 1, 2016 at 6:18 PM, killjason <jasonso...@gmail.com 
> <javascript:>> wrote:
>
>> @Josh Humphries, your plan is nice, gRPC currently not support init 
>> stream in server side, so this limit can be ignored.
>>
>> 在 2016年12月2日星期五 UTC+8上午2:18:54,Josh Humphries写道:
>>>
>>> On Thu, Dec 1, 2016 at 12:26 PM, killjason <jasonso...@gmail.com> wrote:
>>>
>>>> In my case:
>>>> 1.The backend servers represent a same micro-service(may be contains 10 
>>>> machines) serving the same APIs.
>>>> 2.The proxy is based on pure Netty(no gRPC included). but clients and 
>>>> backend servers are developed on gRPC.
>>>> I am not sure if one Netty channel can represents multiple connections 
>>>> to multiple backends?
>>>>
>>>
>>> If you are using Netty as a layer-4 proxy, then it cannot. But if you 
>>> use it as a layer-7 proxy, using the HTTP/2 protocol handlers, you can. 
>>> When a client initiates a new stream, you pick a backend, find a channel to 
>>> that backend, and create a new stream on that backend channel. You will 
>>> effectively have a map of incoming channel & stream ID -> outgoing channel 
>>> & stream ID and use that to proxy frames. This works for gRPC, but would 
>>> probably be insufficient for general-purpose HTTP/2 where the servers 
>>> initiate streams (since the proxy won't be able to know which client the 
>>> server-initiated stream was intended). Admittedly, there will probably be 
>>> some implementation complexity in properly managing HTTP/2 flow control 
>>> windows on both sides while avoiding excessive resource usage/buffering.
>>>  
>>>
>>>>
>>>> 在 2016年12月2日星期五 UTC+8上午1:11:03,Carl Mastrangelo写道:
>>>>>
>>>>> This depends on how homogeneous your backends are.  For example, if 
>>>>> your proxy going to the same logical set of backends each time, (even if 
>>>>> they are distinct machines) then yes this is possible with gRPC.  In 
>>>>> gRPC, 
>>>>> a channel represent a higher level concept than a single client.  It 
>>>>> represents multiple connections to multiple backends (a.k.a. Servers).
>>>>>
>>>>> In your case, it seems like you should build a map of hostname (a.k.a. 
>>>>> "target") to Channel and pick the correct channel to serve requests to in 
>>>>> your proxy.   This works well if you are handling a small number 
>>>>> hostnames.  Each channel will have its own tcp connections, but there 
>>>>> will 
>>>>> be few total channels.
>>>>>
>>>>> You can do more advanced things too with your host name.  If the 
>>>>> backends that you send traffic to route requests based on the host name, 
>>>>> but each backend can handle the requests of other host names, then you 
>>>>> can 
>>>>> reduce the number of connections even further.  For example, if you know 
>>>>> that  foo.mydomain.com and bar.mydomain.com both physically point to 
>>>>> the same set of servers, then they can both share the same channel.  In 
>>>>> your channel, you can override the "authority" field but still reuse the 
>>>>> same connection.
>>>>>
>>>>>
>>>>> We can provide a better answer if you could share a little more detail 
>>>>> about what you want to do.
>>>>>
>>>>> On Thursday, December 1, 2016 at 8:59:45 AM UTC-8, killjason wrote:
>>>>>>
>>>>>> (moved from: https://github.com/grpc/grpc-java/issues/2470)
>>>>>>
>>>>>> Imagine there are 10k grpc-clients, they established 10k http2 
>>>>>> connections(TCP-connections) with the http2 reverse proxy; then http2 
>>>>>> reverse proxy create 10k http2 connections(TCP-connections) to the 
>>>>>> origin(backend) server.
>>>>>> Is it possible to reduce the 10k connections between proxy and 
>>>>>> origin(backend) server?
>>>>>> for example, can a connection pool be used in reverse proxy to reduce 
>>>>>> connections with backend server?
>>>>>> This picture can explain better:
>>>>>> [image: image]
>>>>>> this picture is in Nginx blog, Is it possible to do the same thing to 
>>>>>> reduce connections with backend serevrs using http2-reverse proxy?
>>>>>>
>>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "grpc.io" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to grpc-io+u...@googlegroups.com.
>>>> To post to this group, send email to grp...@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/grpc-io.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/grpc-io/dd155eb2-c351-49a0-8687-dffa035c3f2b%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/dd155eb2-c351-49a0-8687-dffa035c3f2b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "grpc.io" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to grpc-io+u...@googlegroups.com <javascript:>.
>> To post to this group, send email to grp...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/grpc-io.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/grpc-io/4234545b-e25f-4e0c-9994-667a8ab21fe1%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/4234545b-e25f-4e0c-9994-667a8ab21fe1%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To post to this group, send email to grpc-io@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/5c8c2712-908b-42b0-8762-ef58124a8f12%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to