We have drafted the new rocketmq protocol and APIs,  any feedback is
welcome.

Please refer https://github.com/apache/rocketmq-apis/pull/1/files for more
details.

Regards

On Fri, Oct 1, 2021 at 9:40 AM yukon <yu...@apache.org> wrote:

> Hello, community,
>
> Any further opinions about this RIP?  If not, we would like to propose a
> draft of the new protocol spec.
>
> Regards,
> yukon
>
> On Tue, Sep 28, 2021 at 8:14 AM vongosling <vongosl...@apache.org> wrote:
>
>> Subscribe to the dev mailing list before sending emails. Otherwise, emails
>> cannot be sent to the community.
>>
>>
>> i yangkun <yangku...@outlook.com> 于2021年9月28日周二 上午8:11写道:
>>
>> > Status
>> > ________________________________
>> >
>> >   *   Current Status: Draft
>> >   *   Authors: [aaron-ai](https://github.com/aaron-ai)
>> >
>> >   *   Shepherds: Zhanhui Li<mailto:lizhan...@apache.org>, Yukon<mailto:
>> > yu...@apache.org>, duhengforever<mailto:duhengfore...@gmail.com>
>> >   *   Mailing List discussion: <dev@rocketmq.apache.org<mailto:
>> > dev@rocketmq.apache.org>>
>> >
>> >   *   Pull Request: #PR_NUMBER
>> >   *   Released: <released_version>
>> >
>> > Background & Motivation
>> > ________________________________
>> > What do we need to do
>> >
>> >   *   will we add a new module? yes.
>> >   *   will we add new APIs? no.
>> >
>> >   *   will we add a new feature? yes.
>> >
>> > Why should we do that
>> >
>> >   *   Are there any problems with our current project?
>> > Currently, the RocketMQ kernel supports only one transport layer
>> protocol
>> > available, aka, Remoting. Despite its simplicity and high performance,
>> the
>> > remoting protocol has some disadvantages:
>> >
>> >
>> > 1. Lack of formal protocol specification. Remoting is loosely defined,
>> > lacking a necessary specification document to describe each protocol
>> > detail. This indicates much uncertainty, obstructing community
>> developers,
>> > from different backgrounds, from building uniformly-behaved SDKs and
>> > further raises the bar of participation because they have to read the
>> > existing source codebase before understanding the ins and outs.
>> >
>> > 2. Remoting is built on top of Netty, not every language has a
>> Netty-like
>> > library. Languages like C/C++ have to pave a lot of "preparation" to
>> stand
>> > at the same start-line. It would be awesome for RocketMQ to have gRPC,
>> > which provides a unified foundation and concepts. Based on this unified
>> > foundation, SDKs of different languages can be built with shared models
>> and
>> > designs.
>> >
>> > 3. Remoting builds virtually everything from the ground, including
>> > auto-retry, connection-multiplexing, coding/decoding, and more. Note
>> these
>> > all have been properly defined and implemented in gRPC-like libraries.
>> > Further, these common parts bring a significant portion of the SDK
>> > complexity, whereas they are already available in gRPC for all
>> mainstream
>> > programming languages in the field.
>> >
>> >   *   What can we benefit from the proposed changes?
>> > In the future, RocketMQ is supposed to have multi-protocol support, to
>> > embrace new technology trends, service mesh for example, and enhance
>> > interoperability among different communities, like gRPC, HTTP, MQTT,
>> etc.
>> > So we shall introduce a multi-protocol mechanism and add gRPC as a new
>> > supported protocol.
>> >
>> > As we all know, gRPC is widely adopted, and now is a CNCF incubation
>> > project. It has a great yet mature ecosystem, including a number of
>> > successful community projects. The gRPC-based protocol will bring us
>> more
>> > productive features:
>> >
>> > 1. Build RocketMQ Client SDK with a unified interface.
>> >
>> >        2. Focus on the logic of RocketMQ itself without much effort on
>> the
>> > transportation layer.
>> >
>> >        3. The HTTP2-based gRPC protocol makes RocketMQ more accessible
>> to
>> > cloud-native ecology.
>> >
>> > Goals
>> >
>> >   *   What problem is this proposal designed to solve?
>> > Introduce a multi-protocol mechanism and add gRPC as a new supported
>> > protocol
>> >   *   To what degree should we solve the problem?
>> >
>> > Support gRPC and Remoting protocol both
>> >
>> > Non-Goals
>> >
>> >   *   What problem is this proposal NOT designed to solve?
>> > Nothing specific.
>> >   *   Are there any limits of this proposal?
>> > Nothing specific.
>> >
>> > Changes
>> > ________________________________
>> > Architecture
>> >
>> > Nothing specific.
>> >
>> > Interface Design/Change
>> >
>> >   *   Method signature changes. No
>> >   *   Method behavior changes. No
>> >
>> >   *   CLI command changes. No
>> >   *   Log format or content changes. No
>> >
>> > Compatibility, Deprecation, and Migration Plan
>> >
>> >   *   Are backward and forward compatibility taken into consideration?
>> > Yes, new broker server will support both two protocols
>> >   *   Are there deprecated APIs?
>> > Nothing specific.
>> >
>> >   *   How do we do the migration?
>> > Nothing specific.
>> >
>> > Implementation Outline
>> >
>> > We will implement the proposed changes by two phases.
>> >
>> > Phase 1
>> >
>> >   1.  Define the new protocol based on gRPC and reach a consensus in the
>> > community.
>> >   2.  Implement the gRPC server in the rocketmq kernel
>> >
>> >   1.  Implement Java SDK based on gRPC protocol
>> >
>> > Phase 2
>> >
>> >   1.  Implement multilingual SDK, like CPP, Golang, python, C#, etc.
>> >
>> >
>>
>> --
>> Best Regards :-)
>>
>

Reply via email to