Sistemas Distribuídos - 2012\2 Prof. Vagner J. do Sacramento Rodrigues Cassandra Replicação Leandro, Michelle, Renan
Replicação Vantagens: maior disponibilidade: os dados permanecem acessíveis diante de falhas maior segurança: dados redundantes Desvantagens: controle de consistência: é preciso manter as réplicas atualizadas
Definições Básicas réplica: cópia de um Row não existe uma réplica principal fator de replicação: número de nós que devem armazenar uma réplica estratégia de replicação: maneira com que as réplicas serão distribuídas entre os nós data center: agrupamento lógico de nós em um cluster com finalidades de replicação rack: agrupamento lógico de nós em um data center endpoint: nó passível de receber uma réplica no processo de replicação
Replicação A estratégia de replicação é definida na criação do Keyspace, juntamente com o fator de replicação.
Replicação A alteração desses parametros pode ser feita via cli, porém exige a reparação dos nós update keyspace Keyspace1 with strategy_options = {replication_factor:3} Durante o período de atualização é preciso estar ciente de que nós podem não responder às consultas
Estratégias de Replicação Basicamente fazem o seguinte: 1. O Snitch retorna uma lista com os endpoints (nós que podem receber uma réplica) 2. Cria um iterador para uma lista formada à partir dos endpoints retornados e seus tokens 3. Insere nos endpoints retornados pelo iterador até que o fator de replicação seja satisfeito Duas estratégias fornecidas: SimpleStrategy NetworkTopologyStrategy
Simple Strategy Rack Unaware Usado em clusters de um único data center Funcionamento: 1. O particionador determina a posição da primeira réplica (primeiro nó que possui token maior que o token da entrada) 2. As N-1 réplicas são alocadas nos próximos nós do anel seguindo o sentido horário (ordem dos tokens)
Simple Strategy fator de replicação = 3
Simple Strategy (vnodes) fator de replicação = 3
Network Topology Strategy Rack aware Usada quando se tem (ou se planeja ter) um cluster com múltiplos data centers Um fator de replicação para cada data center CREATE KEYSPACE exemplo WITH REPLICATION = { 'CLASS' :'NetworkTopologyStrategy', 'dc1': 3, 'dc2':3 };
Network Topology Strategy É criado um anel virtual para cada data center A partir de então, em cada data center se faz o seguinte: 1. A primeira réplica é colocada em um nó determinado pelo particionador. 2. Se percorre o anel em sentido horário onde a próxima réplica é inserida em um nó pertencente a um rack diferente do nó da réplica anterior. Se não existe tal rack, as réplicas restantes são colocadas sem a restrição dos racks
Network Topology Strategy
Network Topology Strategy Nós devem alternar data centers no anel para evitar sobrecargas de réplicas em um único nó
Snitch Fornece informações para o Cassandra à respeito dos nós no cluster Além da replicação, é usado nas requisições para roteamento eficiente Através dele é possível fazer diversas consultas: qual o rack de um nó? qual o datacenter de um nó? quais são os nós mais próximos que eu posso inserir uma réplica? quais os nós de um datacenter?
Snitch Defini-se o tipo do snitch no arquivo de configuração do cassandra Todos os nós devem ter a mesma configuração
SimpleSnitch Não leva em conta organização de racks e data centers Retorna sempre uma lista de todos os nós do anel public String getrack(inetaddress endpoint){ return "rack1";} public String getdatacenter(inetaddress endpoint){ return "datacenter1";} public List<InetAddress> getsortedlistbyproximity(inetaddress address, Collection<InetAddress> unsortedaddress) { List<InetAddress> preferred = new ArrayList<InetAddress>(unsortedAddress); sortbyproximity(address, preferred); return preferred; }
RackInferringSnitch Leva em conta racks e data centers Infere o rack e data center de um nó à partir do seu indereço IP endereço:192.168.80.x data center:168 rack:80
PropertyFileSnitch Leva em conta racks e data centers Obtém o rack e data center de um nó à partir de um arquivo definido pelo usuário ( cassandra-topology.properties) # Data Center 1 192.168.80.1=DC1:RAC1 192.168.80.2=DC1:RAC2 # Data Center 1 192.168.80.3=DC2:RAC1 192.168.80.4=DC2:RAC2
GossipingPropertyFileSnitch Guarda o rack e o data center do nó atual Informações são propagadas para os outros nós através do gossip. Quando o arquivo cassandra-topology.properties o PropertyFileSnitch pode ser usado como Snitch reserva
DynamicSnitching Utilizado para auxiliar o Snitch em operações de leitura Mantém um nó como sendo o mais eficiente para se fazer leituras Utiliza um limiar que define quando esse nó preferencial deve ser substituido
Referências Advantages of replication in distributed systems http://www.indiastudychannel. com/resources/102074-advantages-replication-distributed-system.aspx Replication in Distributed File Systems http://crystal.uta. edu/~kumar/cse6306/papers/smita_repdfs.pdf Apache Cassandra Glossary http://io.typepad.com/glossary. html An Intro to Cassandra and NetworkTopologyStrategy http://www.onsip. com/blog/2011/07/15/intro-to-cassandra-and-networktopologystrategy Cassandra 1.2 create keyspace http://kwlum80.blogspot.com.br/2012/10/cassandra-12- create-keyspace.html Cassandra Wiki - Operations http://wiki.apache.org/cassandra/operations About Replication in Cassandra 1.1 http://www.datastax.com/docs/1. 1/cluster_architecture/replication About data distribution and replication in Cassandra 1.2 http://www.datastax.com/docs/1. 2/cluster_architecture/data_distribution#about-data-distribution-and-replication About Replica Placement Strategy in Cassandra 0.8 http://www.datastax.com/docs/0. 8/cluster_architecture/replication#replication-strategy Types of snitches in Cassandra 1.2 http://www.datastax.com/docs/1. 2/cluster_architecture/snitches http://svn.apache.org/repos/asf/cassandra/trunk/src/java/org/apache/cassandra/locator/