:) On Tue, Nov 8, 2016 at 1:37 AM, AmirHossein Roozbahany <band...@outlook.com> wrote:
> Excuse me this part was non-sense: if the latest update to a document in > es always win in Cassandra's LWW, they will "eventually" "converge". > ________________________________ > From: AmirHossein Roozbahany<mailto:band...@outlook.com> > Sent: 11/8/2016 8:16 AM > To: users@kafka.apache.org<mailto:users@kafka.apache.org> > Subject: RE: is there a way to make sure two consumers receive the same > message from the broker? > > Generally Cassandra itself is not consistent enough, even with quorum > read-writes, say one of the writes fail, the nodes who received the data > won't roll back and it might lead to dirty reads which in turn makes roll > back logic tricky (if not impossible). You can use linearizable writes but > if you want to use them all the time, why bother using Cassandra!? > > The important thing about Cassandra is that all of the nodes will > eventually have the same data(after anti-entropy or read-repair). they are > "convergent", they will "eventually" converge, and practically they > converge pretty fast. > > I think what you might actually need is to make two databases > convergent(not necessarily fully consistent at any given time) if the > latest update to a document in es leads always win when Cassandra is doing > es they will "eventually" "converge". > > Doing so is easy, as fast as I know es assigns a _version number to a > document and increases it on every update, now if your use of in Cassandra > insert statement as the "writetime". Now when Cassandra is doing read > repair the record with higher writetime will win. > > Using es's document _version field is just one option, you can use > something from you domain or kafka's offset or machine timestamp (not > recommended at all). > > I hope it could help > ________________________________ > From: kant kodali<mailto:kanth...@gmail.com> > Sent: 11/7/2016 8:18 PM > To: users@kafka.apache.org<mailto:users@kafka.apache.org> > Subject: Re: is there a way to make sure two consumers receive the same > message from the broker? > > Hi AmitHossein, > > I still don't see how that guarantees consistency at any given time. other > words how do I know at time X the data in Cassandra and ES are the same. > > Thanks > > > On Mon, Nov 7, 2016 at 3:26 AM, AmirHossein Roozbahany < > diver...@outlook.com > > wrote: > > > Hi > > > > Can you use elasticsearch _version field as cassandra's > > writetime?(_version is strictly increasing, cassandra uses writetime for > > applying LWW, so last write in elasticsearch will always win) > > > > It needs no transaction and makes databases convergent. > > > > > > ________________________________ > > From: kant kodali <kanth...@gmail.com> > > Sent: Monday, November 7, 2016 3:08 AM > > To: users@kafka.apache.org > > Subject: Re: is there a way to make sure two consumers receive the same > > message from the broker? > > > > Hi Hans, > > > > The two storages we use are Cassandra and Elastic search and they are on > > the same datacenter for now. > > The Programming Language we use is Java and OS would be Ubuntu or CentOS. > > We get messages in JSON format so we insert into Elastic Search directly > > and for Cassandra we transform JSON message into appropriate model so we > > could insert into a Cassandra table. > > The rate we currently get is about 100K/sec which is awesome but I am > > pretty sure this will go down once when we implement 2PC or transactional > > writes. > > > > Thanks, > > kant > > >