Is here have any way to custom c-core , I want to build c-core for myself , 
and want to realize balancing and nameresolve in Python .

在2020年10月29日星期四 UTC+8 上午7:01:53<Mark D. Roth> 写道:

> If I understand the scenario here correctly, each client has many 
> different server names, and those server names change over time.  What 
> determines this list of server names for a given client to use, and how 
> does the client get the list of server names to use?  Can you just publish 
> all of the addresses under a single server name via your name service 
> (whether it be DNS or zookeeper or whatever)?  That would probably be the 
> easiest way to deal with this, because then you could just have a single 
> channel with a single name, and you'd automatically get a separate 
> subchannel for every address, which you could use with the round_robin LB 
> policy.
>
> If for some reason you can't do that, then architecturally, you would need 
> to create a custom resolver that would get the list of names to resolve, 
> resolve each one, and return the combined list of addresses to the 
> channel.  But I'd recommend against this approach, for the following 
> reasons:
>
>    - It's a much hackier solution than simply providing the addresses 
>    under one name in your name service.  This is exactly the problem that a 
>    name service was designed to solve, so trying to solve it in a different 
>    way seems very odd to me.
>    - C-core does not currently provide a public API for implementing 
>    resolvers in wrapped languages like C#; this is something that we want to 
>    do, but it hasn't bubbled up to the top of our priority list.  You could 
>    probably do it by writing some code against our internal C++ API, but that 
>    API is not supported for external use and may change from version to 
>    version, so it's not a great option right now.
>
> I don't think there's any reason to need a custom LB policy for this 
> scenario.  But even if there was, C-core does not provide a public API for 
> implementing LB policies in wrapped languages.  And unlike resolvers, this 
> is probably not an API that we will ever provide, because the LB policy is 
> in the performance-critical path, and hopping out of core and into the 
> wrapped language from the LB policy would kill performance.
>
> I hope this information is helpful.
>
> On Fri, Oct 23, 2020 at 10:34 AM Dapeng (Penn) Zhang <[email protected]> 
> wrote:
>
>> I believe customizing LB logic (for instance, server names grabbed from 
>> Zookeeper)  for c#, you will need to use c-core load balancing APIs. 
>>  
>> [email protected] who can provide more guidance.
>>
>> On Wednesday, October 21, 2020 at 11:03:37 PM UTC-7 [email protected] 
>> wrote:
>>
>>> Thanks for the replies! the language I'm looking at right now is c#. I 
>>> understand retry might not fully supported yet, while still hope I can 
>>> understand the design correctly as the implementation will be there sooner 
>>> or later which follows the design idea.
>>>
>>> Thanks for explanation of how subchannels work with LB and name 
>>> resolver. However, since the doc mentioned "Thick client" load balancing 
>>> <https://grpc.io/blog/grpc-load-balancing/#thick-client> with gRpc is 
>>> supported, any recommendation how can I have a client customized LB logic 
>>> (for instance, server names grabbed from Zookeeper) work with gRpc client 
>>> LB? I guess there is something Application code can notify LB about backend 
>>> changes as well? like how name resolver does. If I plan to use something 
>>> other than name resolver to manage backend servers list?
>>>
>>> thanks a lot!
>>> 在2020年10月22日星期四 UTC+8 上午1:44:24<[email protected] 
>>> <https://groups.google.com/>> 写道:
>>>
>>>> On Wednesday, October 21, 2020 at 1:27:27 AM UTC-7 [email protected]
>>>>  wrote:
>>>>
>>>>> To ask my question in another word. If to build a "Thick client" load 
>>>>> balancing <https://grpc.io/blog/grpc-load-balancing/#thick-client> with 
>>>>> gRpc, the client is responsible to keep track of available servers. While 
>>>>> when client detected available servers changed, how does it manages 
>>>>> corresponding SubChannels under existing Channels? I searched around docs 
>>>>> today again, didn't find APIs for that. I'm looking into csharp. Sorry if 
>>>>> I 
>>>>> overlooked something.
>>>>>
>>>>> The client's load balancer manages subchannels and shuts down old and 
>>>> creates new subchannels if the backend servers changed (The name resolver 
>>>> notifies the loadbalancer about the backend changes). The client RPC will 
>>>> choose one of the current list of subchannels based on the load balancing 
>>>> policy. You could use the grpc library built-in round-robin load balancer 
>>>> if you don't have special requirement.
>>>>
>>>>
>>>> thanks a lot
>>>>>
>>>>> 在2020年10月19日星期一 UTC+8 下午8:07:33<li yabo> 写道:
>>>>>
>>>>>> While considering moving a http client/service call to using gRpc, 
>>>>>> I'm looking at load balancing solutions. We currently have each client 
>>>>>> manages a list of server names (for one service VIP) and connection 
>>>>>> pools. 
>>>>>> The server names changes from time to time, so each client has it's 
>>>>>> logic 
>>>>>> to maintain the server names list and http connection pools.
>>>>>>
>>>>>> If move to using gRpc, I think the easiest change regarding LB might 
>>>>>> be to let client fill the server names list to gRpc as Subchannels of a 
>>>>>> Channel to the service VIP. So that client sends request to one Channel 
>>>>>> and 
>>>>>> get requests well load balanced. Once there is changes in the client 
>>>>>> server 
>>>>>> names list, the client Application layer code goes to update Subchannels 
>>>>>> in 
>>>>>> gRpc again. 
>>>>>> While I'm not sure if that's a do-able or ok approach that doesn't 
>>>>>> violate gRpc design?
>>>>>>
>>>>>> managing one Channel for each server name might be a solution, but 
>>>>>> that possibly won't work well with gRpc retries-policy, because we hope 
>>>>>> the 
>>>>>> retry request issued by retries-policy hit another server name of the 
>>>>>> server-names list.
>>>>>>
>>>>>> Since current client self-managed server names idea works in existing 
>>>>>> env, we hope we don't have to setup new roll like lookaside load 
>>>>>> balancer 
>>>>>> in the cluster only for the purpose to using gRpc. Does this idea make 
>>>>>> sense?
>>>>>>
>>>>>> Thanks a lot!
>>>>>>
>>>>>
>
> -- 
> Mark D. Roth <[email protected]>
> Software Engineer
> Google, Inc.
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/82068559-9494-48e3-adcb-65eb0ae294c1n%40googlegroups.com.

Reply via email to