To Tsz Wo:

Thank you! If I find a way to optionally introduce it, I'll come back with
a patch.

To William:

Thanks for sharing the use case. It seems to resolve my requirements.
However, I remember that Tsz Wo commented here[1] that we may still need a
client to submit client requests properly. But it seems
`RaftServer.submitClientRequest'
is what I originally asked for.

Best,
tison.

[1] https://lists.apache.org/thread/1joh4vhy9ytf4lmpr437rggkyyftw0kb


William Song <[email protected]> 于2022年11月2日周三 20:22写道:

> Hi tison,
>
> We also have an optimization for in-process scenarios in IOTDB, see [1].
>
> We choose not to use a RaftClient, but to call
> RaftServer.submitClientRequest directly. submitClientRequest is the entry
> point for RaftClient requests.In this way we avoid
> serialization/deserialization and network connection overheads.It is more
> of a hack, and we loses some RaftClient features like retry / redirect.
>
> Hope it helps.
>
> Regards,
> William
>
> [1]
> https://github.com/apache/iotdb/blob/71c55e9abd35d4238b54bf232c17fb02e0ab66ca/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java#L207
>
> 2022年11月2日 13:38,Tsz Wo Sze <[email protected]> 写道:
>
> Hi tison,
>
> Just checked
> https://grpc.github.io/grpc-java/javadoc/io/grpc/inprocess/InProcessChannelBuilder.html
> , it is an ExperimentalApi.  We may make it configurable so that users can
> choose between NettyChannelBuilder or InProcessChannelBuilder.
>
> Tsz-Wo
>
>
> On Wed, Nov 2, 2022 at 1:00 AM tison <[email protected]> wrote:
>
>> Hi,
>>
>> I read that we're now always using:
>>
>> NettyChannelBuilder channelBuilder =
>>         NettyChannelBuilder.forTarget(target.getAddress());
>>
>> to build the gRPC channel. However, if the ratis client runs in the same
>> process, is it possible that we try to build an InProcessChannel first so
>> that gain better performance?
>>
>> The motivation is that I'm considering exporting more ports for the ratis
>> server (process) when writing downstream projects. In this case, when I'm
>> talking to the ratis cluster (the replicated state machines), I need to use
>> a ratis client so ratis can handle the consensus part. If I always
>> initialize a Netty channel for every client, it looks like a significant
>> performance concern.
>>
>> Best,
>> tison.
>>
>
>

Reply via email to