Hi, Of course, we can work together to finetune your design draft.
Regards, yukon On Thu, Mar 15, 2018 at 5:33 AM, sowmya s <sowmya9...@gmail.com> wrote: > Hello, yukon and Von, > > I've shared my GSOC - 18 draft of the project. I'm looking forward to > working with all of you to finetune the proposal. I will be allocating 20 > hours per week from now to the proposal acceptance phase to address > questions and dive deep into any suggestions that you provide. > I am really looking forward to work on this project. > > thanks, > Sowmya > > On Tue, Mar 13, 2018 at 11:47 PM, sowmya s <sowmya9...@gmail.com> wrote: > > > Hello yukon, > > > > Thank you for the inputs. I was able to look at the ~/store and kind of > > understand the storage structure. I also looked at the > > DefaultMQProducerImpl and DefaultMQPullConsumerImpl, used in the > examples. > > Now I understand why you proposed a merge sort like approach for > > performing global ordering. Since the proposals are open, I am finalizing > > my draft and will have it up for review very soon. > > > > thanks, > > Sowmya > > > > On Fri, Mar 9, 2018 at 7:03 AM, yukon <yu...@apache.org> wrote: > > > >> Hi Sowmya, > >> > >> ``` > >> Also, it would be great if you can at a high level, help me understand > >> how the messages in the message queues are stored before the consumer > reads > >> them. > >> ``` > >> > >> > >> > >> As shown in this figure, messages are sent to brokers by producer and > >> stored in commit log[1], then messages are dispatched to ConsumeQueue by > >> topic, the consumer pulls messages from the queue. > >> > >> I recommend you run a broker and send/consume some messages, then check > >> out the ~/store directory for details. > >> > >> Regards, > >> yukon > >> > >> On Thu, Mar 8, 2018 at 12:09 PM, sowmya s <sowmya9...@gmail.com> wrote: > >> > >>> Hello yukon, > >>> > >>> Currently FIFO can be achieved with a producer sending to one message > >>> queue, and when global ordering is required, multiple producers have to > >>> send to a single topic queue. > >>> > >>> We want to allow multiple producers to send messages on a topic to > >>> multiple message queues and still provide ordering guarantees to the > >>> consumer, so that all consumers see the same order of data and also the > >>> data is delivered in an ordered fashion. > >>> > >>> 1) Your idea of using a merge sort with the assumption that the first > >>> arriving message is treated as the first message to be delivered, > however, > >>> I want to propose an approach where when the producer sends a message > to a > >>> message queue, it must be done in a synchronous fashion and the > response > >>> will be that the message is accepted, which means that the message > follows > >>> the convention that all messages delivered prior by that producer have > been > >>> stored across groups and if not the producer will need to resend the > >>> message. > >>> > >>> We can use a variant of total causal ordering in the layer between the > >>> message queue and store. > >>> > >>> I have been busy with my class project so I couldn't make a lot of > >>> progress in detailing my approach. Also, it would be great if you can > at a > >>> high level, help me understand how the messages in the message queues > are > >>> stored before the consumer reads them. > >>> > >>> Does the consumer read directly from the message queue that the > producer > >>> sends data to? does the broker receive the queued producer messages, > store > >>> them and then pushes them to another queue for the consumer to read > from? > >>> > >>> For reference on total causal ordering: https://www.cl.cam.ac.uk/teach > >>> ing/0910/ConcDistS/10b-ProcGp-order.pdf > >>> > >>> thanks, > >>> Sowmya > >>> > >>> On Mon, Mar 5, 2018 at 4:26 AM, yukon <yu...@apache.org> wrote: > >>> > >>>> Hi Sowmya, > >>>> > >>>> Sorry for the late reply, do you have any update on this project? > >>>> > >>>> In RocketMQ, one message queue is a FIFO queue natively, so I proposed > >>>> a simple solution that performs merge sort on multiple queues to > improve > >>>> performance and scalability. > >>>> > >>>> While the order issue across producers is difficult, we could assume > >>>> that the message first arrives the broker should be consumed firstly. > >>>> > >>>> But it would be wonderful if you have a real design about the order > >>>> issue across producers based on the RocketMQ design and the storage > >>>> structure. > >>>> > >>>> Looking forward your design ~ > >>>> > >>>> Regards, > >>>> yukon > >>>> > >>>> On Fri, Mar 2, 2018 at 2:50 AM, sowmya s <sowmya9...@gmail.com> > wrote: > >>>> > >>>>> Hello all, > >>>>> > >>>>> Adding a few more thoughts on the problem of establishing an order of > >>>>> messages across producers. > >>>>> > >>>>> Consider the Scenario > >>>>> > >>>>> Producer-1 produces messages a1, b1 and c1 into a queue Queue1 > >>>>> Producer-2 produces messages a2, b2 and c2 into queue Queue2. > >>>>> > >>>>> If we assume that time(a1) < time(b1) < time(c1) and similarly > >>>>> time(a2) < time(b2) < time(c2) > >>>>> > >>>>> Are the following orders acceptable to the consumer? > >>>>> > >>>>> > a1, a2, b1, b2, c1, c2 > >>>>> > a1, b1, c1, a2, b2, c2 > >>>>> > a1 b1, b2, a2, a3, b3 > >>>>> > >>>>> and an order displayed at one consumer is consistent across all > >>>>> consumers. > >>>>> > >>>>> This can be achieved using Total Causal Ordering at the Producer or > >>>>> Queue level, using Leslie Lamport's clock and synchronization > approach. > >>>>> > >>>>> For reference is the paper attached, http://lamport.azurewebsites.n > >>>>> et/pubs/time-clocks.pdf > >>>>> > >>>>> > >>>>> -- > >>>>> Regards, > >>>>> > >>>>> Sowmya > >>>>> > >>>>> On Sun, Feb 25, 2018 at 7:37 PM, sowmya s <sowmya9...@gmail.com> > >>>>> wrote: > >>>>> > >>>>>> Hello, > >>>>>> > >>>>>> I'm trying to work on the issue ROCKETMQ-122 > >>>>>> <https://issues.apache.org/jira/browse/ROCKETMQ-122?filter=12343065> > as > >>>>>> a part of Google Summer of Code 2018. I've been spending some time > to > >>>>>> understand the system, architecture and the existing Messaging > Patterns. > >>>>>> I still have a few questions and would like to clarify my > assumptions. > >>>>>> > >>>>>> - Is the current FIFO order example limited to one message queue > >>>>>> per producer? Can the producer send the same message to multiple > queues? > >>>>>> Will the consumers of the queues be able to read messages in > Order? > >>>>>> - Can I assume that each producer will send messages to one > queue? > >>>>>> - Global Order is to be identified across all > >>>>>> GlobalOrderedProducer (a new producer that is to be used for > global order) > >>>>>> instances that are running. > >>>>>> - I think using a global clock can help establish the order > >>>>>> between 2 or more producers, however using some form of vector > >>>>>> clock might also help identify the global order of messages > between the > >>>>>> producers. > >>>>>> - A GlobalOrderedConsumer ( consumer that knows how to read > >>>>>> globally ordered messages) can then compare messages across all > message > >>>>>> queues from the corresponding producers and extract the > messages. [ this is > >>>>>> the approach recommended by yukon on the issue page ] > >>>>>> - We can also potentially have another layer in the Message Queue > >>>>>> which accumulates all messages sent from producers and provides > one ordered > >>>>>> message queue for consumers to read from. > >>>>>> > >>>>>> Thank you for your patience and please let me know if my > >>>>>> understanding of the problem and the assumptions are right. > >>>>>> > >>>>>> Best Regards, > >>>>>> Sowmya > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Regards, > >>>>> > >>>>> Sowmya > >>>>> > >>>>> > >>>> > >>> > >>> > >>> -- > >>> Regards, > >>> > >>> Sowmya > >>> > >>> > >> > > > > > > -- > > Regards, > > > > Sowmya > > > > > > > -- > Regards, > > Sowmya >