Re: How does cassandra achieve Linearizability?
On 02/09/2017 07:21 PM, Kant Kodali wrote:
> @Justin I read this article
> And it clearly says Linearizable consistency can be achieved with LWT's.
> so should I assume the Linearizability in the context of the above
> article is possible with LWT's and synchronization of clocks through
> ntpd ? because LWT's also follow Last Write Wins. isn't it? Also another
> question does most of the production clusters do setup ntpd? If so what
> is the time it takes to sync? any idea
I'll let the others talk more intimately about LWT, but as for NTP, the
client machines do take some time to incrementally settle time
adjustments to meet up with the upstreams - they don't just jump time.
> @Micheal Schuler Are you referring to something like true time as in
> Actually I never heard of setting up GPS modules and how that can be
> helpful. Let me research on that but good point.
Nah, I'm talking much simpler. For instance you could do this with a
> On Thu, Feb 9, 2017 at 5:09 PM, Michael Shuler <michael@xxxxxxxxxxxxxx
> <mailto:michael@xxxxxxxxxxxxxx>> wrote:
> If you require the best precision you can get, setting up a pair of
> stratum 1 ntpd masters in each data center location with a GPS modules
> is not terribly complex. Low latency and jitter on servers you manage.
> 140ms is a long way away network-wise, and I would suggest that was a
> poor choice of upstream (probably stratum 2 or 3) source.
> As Jonathan mentioned, there's no guarantee from Cassandra, but if you
> need as close as you can get, you'll probably need to do it yourself.
> (I run several stratum 2 ntpd servers for pool.ntp.org
> Kind regards,
> On 02/09/2017 06:47 PM, Kant Kodali wrote:
> > Hi Justin,
> > There are bunch of issues w.r.t to synchronization of clocks when we
> > used ntpd. Also the time it took to sync the clocks was approx 140ms
> > (don't quote me on it though because it is reported by our devops :)
> > we have multiple clients (for example bunch of micro services are
> > reading from Cassandra) I am not sure how one can achieve
> > Linearizability by setting timestamps on the clients ? since there is no
> > total ordering across multiple clients.
> > Thanks!
> > On Thu, Feb 9, 2017 at 4:16 PM, Justin Cameron <justin@xxxxxxxxxxxxxxx <mailto:justin@xxxxxxxxxxxxxxx>
> > <mailto:justin@xxxxxxxxxxxxxxx <mailto:justin@xxxxxxxxxxxxxxx>>> wrote:
> > Hi Kant,
> > Clock synchronization is important - you should ensure that ntpd is
> > properly configured on all nodes. If your particular use case is
> > especially sensitive to out-of-order mutations it is possible to set
> > timestamps on the client side using the
> > drivers. https://docs.datastax.com/en/developer/java-driver/3.1/manual/query_timestamps/
> > <https://docs.datastax.com/en/developer/java-driver/3.1/manual/query_timestamps/
> > We use our own NTP cluster to reduce clock drift as much as
> > possible, but public NTP servers are good enough for most
> > uses. https://www.instaclustr.com/blog/2015/11/05/apache-cassandra-synchronization/
> > <https://www.instaclustr.com/blog/2015/11/05/apache-cassandra-synchronization/
> > Cheers,
> > Justin
> > On Thu, 9 Feb 2017 at 16:09 Kant Kodali <kant@xxxxxxxxxxxx <mailto:kant@xxxxxxxxxxxx>
> > <mailto:kant@xxxxxxxxxxxx <mailto:kant@xxxxxxxxxxxx>>> wrote:
> > How does Cassandra achieve Linearizability with “Last write
> > wins” (conflict resolution methods based on time-of-day clocks) ?
> > Relying on synchronized clocks are almost certainly
> > non-linearizable, because clock timestamps cannot be guaranteed
> > to be consistent with actual event ordering due to clock skew.
> > isn't it?
> > Thanks!
> > --
> > Justin Cameron
> > Senior Software Engineer | Instaclustr
> > This email has been sent on behalf of Instaclustr Pty Ltd
> > (Australia) and Instaclustr Inc (USA).
> > This email and any attachments may contain confidential and
> > privileged information. If you are not the intended recipient, do
> > not copy or disclose its content, but please reply to this email
> > immediately and highlight the error to the sender and then
> > immediately delete the message.