*objective*:get cassandra cross-datacenter latency in time

*existing ticket:*

there is a ticket [track cross-datacenter latency](
https://issues.apache.org/jira/browse/CASSANDRA-11569)
but it is a statistics value from node starting,i want to get the
instantaneous value in a certain time.

*thought*

want to write a message into **MESSAGE TABLE** in 1s timer task(the period
is similar to most of cross datacenter latency )
,and replicate to other datacenter,there will be a delay.and I capture
it,and write to **LATENCY TABLE**.i can query the latency value from this
table with the condition of certain time.

*schema*

message table for replicating data cross datacenter


    create keyspace heartbeat with replication=
    {'class':'NetworkTopologyStrategy','dc1':1, 'dc2':1...};



     CREATE TABLE HEARTBEAT.MESSAGE{
            CREATED TIMESTAMP,
            FROMDC VARCHAR,
            PRIMARY KEY(CREATED,FROMDC)
        }

latency Table for querying latency value

     CREATE TABLE SYSTEM.LATENCY{
         FROMDC VARCHAR,
         ARRIVED TIMESTAMP,
         CREATED TIMESTAMP,
         LANTENCY BIGINT
         PRIMARY KEY(FROMDC,ARRIVED)
        }WITH CLUSTERING ORDER BY(ARRIVED DESC);

problems

1.can this solution work to get the cross-datacenter latency?


2.create heartbeat keyspace in cassandra bootstrap process,i need to load
Heartbeat keyspace in Scheam.java.and save this keyspace into SystemSchema.
also need to check if this keyspace has exist after first node start.so i
think this is not a good solution.

3.compared to 1,try another solution.generate heartbeat message in a
standalone jar.but always i need to capture heartbeat message mutation in
cassandra.so i need to check if the mutation is about heartbeat message.and
it seems strange that check the heartbeat keyspace which is not defined in
cassandra,but third-party.

hope to see your thought on this.
thanks
stone

Reply via email to