Transcrições
1. Design de sistema: Durante os conceitos básicos de design do sistema. Você sabe que a quantidade média de vídeos assistidos na Netflix, mas para vk é cerca de 1 bilhão de horas. O número de tweets postados birdie é de cerca de 500 milhões. Isso é cerca de 6 mil. Os gregos comem frango e etiquetas, apenas o número de tweets postados. Nós nem estamos falando sobre os retiros sob cumprimentos gostados. Verifiquei estes números. Fascinante. Isso não faz você se perguntar, como é possível para empresas com um monte de engenheiros que lidam com volumes tão enormes de tráfego. Enquanto o usuário casual, como inconsciente da complexidade. Como um designer de sistema, você deve enfrentá-lo Manipulação. Você precisará estar ciente da arquitetura de alto nível do aplicativo no qual esses produtos são criados. Todos eles têm uma base muito sólida e nós vamos codificar. É muito importante para essas empresas seria funcional o tempo todo. No mundo de hoje, é difícil
imaginar um único minuto por dia sem esses serviços. O que torna essas ferramentas disponíveis para nós? 24 por sete? A resposta é a fuga. Estes sistemas são projetados. E isso está se tornando mais uma habilidade. Compreender como manter seus sistemas funcionais o tempo todo. Agora é considerado uma habilidade primária de ter. Quando você está se preparando para uma entrevista, estão tentando criar um sistema para sua organização ou para seu próprio produto. E aprender a projetar sistemas escaláveis ajudará você a se tornar um engenheiro melhor. O objetivo deste curso é ajudá-lo a aprender a projetar sistemas de
grande escala e prepará-lo para financiar as entrevistas de design do sistema, você será apresentado aos tópicos que você deve considerar ao projetar seus sistemas. Então, vamos começar.
2. Noções básicas: Ei, caras. Neste vídeo, vamos falar sobre o básico de design de sistema. Em primeiro lugar, vamos entender quais designers de sistemas. O design do sistema é. O processo de concepção da arquitetura competente e interfaces fotossistema para que ele atenda a exigência do usuário final. Na engenharia de software, o design
do sistema é um domínio no qual todos devem estar um pouco familiarizados com ele. Não importa qual seja o seu papel. Sistemas de design vil. Há três preocupações principais que devem ser abordadas. Confiabilidade, escalabilidade, manutenção. Então, agora vamos ver o que todos esses significam indicado. Aproximadamente. A responsabilidade significa continuar a funcionar corretamente, mesmo quando as coisas dão errado. No domínio de design do sistema. A responsabilidade significa a capacidade de um sistema
validar outros problemas, a fim de evitar falhas em desligamentos completos. Grandes sistemas são construídos usando empresas intolerantes a falhas. A beleza e o arco do design do sistema é construir um sistema
tolerante a falhas usando empresas intolerantes a falhas. - Não. As falhas podem ser categorizadas como formas híbridas, também vazios preenchidos. Formulários híbridos aconteceram muito em grandes data centers. Um grande conjunto de dados que a espessura da válvula, discos rígidos indo busto todos os dias. A memória será corrompida regularmente. metáforas do HIV podem ser abordadas adicionando redundância. Ou seja, os data centers podem ter vários backups ilimitados para evitar os pontos únicos de falha. Software Ford pode acontecer devido a uma variedade de razões. Abundante de um processo pode recursos
do sistema caseiros e causar um limiar sistemático em todos os nós. Ou os pressupostos operacionais de aplicativos de BI podem mudar e desertar em falhas. Portanto, ele pode ser tratado pela compreensão dos requisitos de negócios e resiliência
respiratória para lidar com exclusões do mesmo lance de amônia iniciado, para publicar avisos ou testes de mega unidade Leland. E, finalmente, projetando melhores abstrações e interfaces para isolar facilmente o problema. Escalabilidade é a capacidade do sistema fornecer desempenho razoável face ao aumento da carga. Por exemplo, para o social libertando a placa, o número esperado de direitos ou postagens ou para engrossar ou ler. Ou seja, na sua visão da linha do tempo. O que um espessado pode ser usado para descrever o desempenho, pode ser pensado como as
características de funcionamento do sistema que o pedômetro carregado do sistema é alterado. Por exemplo, você pode medir o desempenho em termos de tempo médio de resposta do sistema. É claro que existem muitas maneiras de medir o desempenho de um sistema que está atualmente fora do escopo de nossa discussão. Manutenção significa escrever código que pode ser facilmente compreendido, refatorado e atualizado por alguém que não é o autor original do código. Qualquer pedaço de código confuso de espaguete será finalmente entendido por máquinas. Um bom código deve ser legível e facilmente compreensível para que ele possa colaborar. Um bom código deve sempre ter o nível certo de abstrações, obtendo APIs e interfaces. Assim, novas funcionalidades escuras podem ser facilmente construídas sobre as bases de código existentes. Em seguida, veremos os diferentes componentes que
precisam ser combinados para construir sistemas escaláveis.
3. Balanço de carga: Ei pessoal, bem-vindos à primeira palestra nas cidades básicas de design do sistema. Hoje, vamos falar sobre balanceadores de carga. Um balanceador de carga é um componente muito importante de qualquer sistema distribuído. balanceadores de leitura distribuem as solicitações de clientes de entrada para recursos de computação, como um cluster de servidores de aplicativos e bancos de dados. Em cada caso, o balanceador de carga retorna a resposta desde que a computação deste OLS os servidores ou os bancos de dados para o cliente apropriado. O objetivo básico de um balanceador de carga é melhorar
a capacidade de resposta e a disponibilidade de um aplicativo, site ou banco de dados. Um balanceador de carga também mantém o controle do status de todas as forças britânicas enquanto distribui Nyquist. Vamos ver. Um servidor não está disponível para receber novas solicitações, ou não está respondendo, ou pode ter uma taxa de erro, o load balancer parará de enviar tráfego como null. Isto é conseguido através do Celtx. O balanceador de carga tenta regularmente se conectar
aos servidores back-end para garantir que os corpos das células estejam escutando. Se isso sentir um exame de saúde. Ele é removido automaticamente do pool e o tráfego não
será encaminhado para ele até que ele responda ao Healthix novamente. Agora vamos dar uma olhada na arquitetura básica. Horrível. Balanceador de carga. Normalmente, um balanceador de carga fica entre o cliente e os servidores,
exceto o tráfego de entrada de rede e aplicativos, e distribui o tráfego por vários servidores de back-end usando vários algoritmos, como round robin. Não, aqui faz alguma arquitetura básica. Você poderia usar um balanceador de carga. Agora, aqui temos um cliente. Uma vez que isso equivale através da internet, nosso balanceador de carga. Agora é responsabilidade do balanceador de carga
distribuir o tráfego entre nossos vários servidores web. Balanceando solicitações de aplicativos em vários servidores. Um balanceador de carga reduz essa carga de servidor individual e impede que qualquer aplicativo que se tornasse um único ponto de falha. Melhorando assim a aplicação geral, a disponibilidade e a capacidade de resposta. Sue para afirmar com precisão, balanceadores de
carga são eficazes em impedir que os linguistas vão para Sanders
profano teriam qualquer coisa sobrecarregando os recursos e ajudando e eliminando pontos únicos de falha. Sem atrasos, escalabilidade total e redundância. Podemos tentar equilibrar a carga em cada camada do sistema. Você pode adicionar saldos de carga em substituições entre o usuário e o observador. Entre os servidores web e uma camada de plataforma interna, como servidores de aplicativos, um servidor de cache. E entre todas as famílias negras internas e bancos de dados vai vê-lo através de diagrama. Então aqui está o nosso primeiro balanceador de carga. Sentado entre o cliente e eu vou chamar servidores. Agora, aqui está um segundo balanceador de carga entre nossos servidores web e servidores de aplicativos. Agora, este é um terceiro balanceador de carga. Vadias sendo utilizadas entre os servidores de aplicativos e os bancos de dados. Assim, o primeiro balanceador de carga distribui os linguistas de glândula de entrada acreditam epsilon_1 ou o servidor web para o balanceador de carga secundário, distribui
ainda mais o tráfego no servidor de aplicativos ou o servidor de aplicativos fazer. E o terceiro load balancer distribui o tráfego de entrada dos bancos de dados dos servidores de aplicativos. Isso é basicamente distribuir a carga em interfaces. Agora vamos rever as vantagens de usar um balanceador de carga. Em primeiro lugar usa conveniência ou mais rápido. E um serviço ininterrupto, os usuários não terão que esperar por uma única dificuldade para concluir suas tarefas anteriores. Em vez disso, seus pedidos, Eu imediatamente passarei para um recurso mais prontamente disponível. Em segundo lugar, provedores de serviços, conveniência, menos assustador e maior taxa de transferência. Mesmo um cofre de falha de servidor completo afeta a experiência do usuário final à medida que o balanceamento de carga é balanceado, eles simplesmente observarão em torno dele o servidor pesado. Rebocada. O balanceamento de carga torna mais fácil para os administradores de
sistema lidar com solicitações de entrada diminuindo usuários dolorosos de leitura. E em seguida, administradores de sistema, conveniência. Menos alimentação todos os componentes sincronizados. Em vez de um único dispositivo ou formando muito trabalho. O balanceamento de carga tem vários dispositivos estão formando um pouco de sorte. Agora vamos passar para algumas desvantagens de usar um balanceador de carga. O load balancer pode se tornar um gargalo de desempenho se não tiver recursos suficientes ou se não estiver configurado corretamente. Em segundo lugar, a introdução de um balanceador de carga para ajudar a eliminar pontos únicos de falha resulta em maior complexidade. Totalmente. Um único balanceador de carga é um único ponto de falha. A configuração de vários balanceadores de carga aumenta ainda mais a complexidade. Então, tendo em mente as vantagens e as desvantagens, pouco um balanceador de carga oferece. Benito incluem aconselhadamente como mas nossas necessidades no sistema que estamos projetando.
4. Cache: Se você tivesse na conexão lenta com a Internet e construir um site que é antes de qualquer imagem de alta qualidade. No entanto, em suas visitas subsequentes ao mesmo estado, modo que a página renderiza imagem estendida instantaneamente. Local visitar um novo site. Leva mais tempo para carregar. Em seguida, um visitou frequentemente o mesmo navegador. Agora vamos ver outro caso. Percebido ao assistir a um vídeo do YouTube que continua borbulhando simultaneamente. Então você tem uma conexão de internet mais lenta não é interrompida. O vídeo continua a ser reproduzido até que a quantidade armazenada no buffer seja atingida. No uso da rede budista, o mecanismo interno que está acontecendo é o cache. Então agora vamos discutir sobre cache. Livros de cache sobre o princípio da localidade também financiar, o corte atua como uma ferramenta para os dados para acelerar a pesquisa em. O. Também Ganesh é deduzir que cada agência e amplificar o rendimento. Agora vamos ver um verdadeiro ouro fora. E digamos que queiras fazer o jantar esta noite. Você precisa de ingredientes diferentes, vegetais, espaços, etc., para a preparação. Mas use no supermercado todos os dias. Sabe, isso seria muito pesado. Então você verificar o áudio da sua cozinha definitivamente dados para procurar os ingredientes necessários. Esta visão dos dados do supermercado. Agora aqui, sua geladeira está agindo como um convidado. E o supermercado é sua fonte de dados ou dados armazenados. Tudo. Então, o benefício de usar o cache e esta entrevista é
que ele poupa tempo para visitar o supermercado e soltar seus ingredientes. Então agora vamos ver como os aplicativos funcionam e como podemos usar o corte. De um modo geral, qualquer aplicativo de back-end armazena os dados em um banco de dados. Em seguida, um cliente tenta ensinar qualquer dado. É errado. O aplicativo, o aplicativo consulta o banco de dados, obtém os dados e o banco e o retorna para o usuário ou o cliente. O não precisa ser prata pode estar sendo executado para o servidor de aplicativos no mesmo sistema de um processo separado, ou para o servidor de banco de dados sendo executado em um computador completamente diferente. Agora, tirar os dados de um banco de dados é demorado vez que precisa de uma operação para obter os dados do sistema de arquivos. Se os dados forem armazenados no cache, a operação de leitura será agradável rapidamente, porque a leitura da memória é Vz. Em seguida, lendo a partir do sistema de arquivos. E os bancos de dados armazenados os dados no sistema de defesa por Lagash mantém os dados na memória. Então, quando um cliente solicita algumas informações, então não deixe um aplicativo, os aplicativos que foram apenas leva o local de dados para buscar os dados do cache. No caso de os dados serem encontrados no cache, ele será aplicativo. E o servidor de aplicativos poderia então retornar os dados para recusar. Agora, no caso de os dados não serem encontrados no cache, eles serão comprometidos com o banco de dados. O banco de dados estaria retornando o servidor de aplicativos com os dados. E o servidor de aplicativos poderia armazenar esses dados. Nb corte. A fim de evitar a consulta adicional do banco de dados ou as mesmas solicitações ou similares. Dobrou a glândula os mesmos dados repetitivamente. Faz mais sentido convenção a partir do cache,
em seguida, do banco de dados. E vamos olhar para um exemplo de um verbo para usar dinheiro. Digamos que se ele se torna Por que todos os usuários e buscar os dados do mesmo tweet? E como total não Melinda, usuários usando o cache,
em seguida, ver milhões de chamadas para o banco de dados e os usuários seriam visitados com informações a uma taxa muito mais rápida. Desta forma, um cache no banco de dados. Se os dados forem encontrados no gash, uma chamada de banco de dados será salva reduzindo a pressão sobre o banco de dados.
5. Políticas de despejo no cache: Ei caras. Neste vídeo, vamos falar sobre a política de despejo de cache. Como o cache tem uma capacidade limitada, ele pode ficar cheio em algum momento. E, em seguida, dependendo do Big Data está sendo acessado pelo aplicativo. Por isso, temos de chegar a uma estratégia. Outra política, Buddha mover os dados do cache e substituí-lo por aquele que tem mais probabilidade de ser acessado em um futuro próximo. Existem várias políticas de despejo de cache. Lru menos utilizado recentemente, EFP menos frequentemente utilizado. E usado mais recentemente. Estas são as políticas de despejo mais comumente usadas. Você vai ver? Não. Vamos falar sobre estes individualmente. Falando sobre a LRU. Essa diretiva remove o NPV do cache, que é o menos usado recentemente. Assim que o gás ficar cheio, auditoria está prestes a se tornar para eles os menos decentemente usos. A entrada é despejada dela. E a entrada recente é adicionada ao cache. Então você pode imaginar Facebook. É para celebridades, fotos em um esconderijo. O padrão de acesso aos dados dos seguidores tal que eles estão interessados nas fotos mais recentes. Então esse dinheiro de fotos de celebridades fica cheio. Ele vai chutar as fotos que foram adicionadas menos recentemente a ele. Então, digamos, por exemplo, foto b1, B2, B3, B4 são os trabalhos fotovoltaicos
que, que adicionados ao cache. E mas x e d, p mais um, p mais 23. Então isso representa o momento em que essas fotografias foram acessadas pela última vez pelo corte. E vamos ver, precisamos adicionar b5 ao cache e apenas suporta para fotografias terminadas I. Então precisamos remover uma fotografia e, em seguida, só
seremos capazes de adicionar se eu assim, neste caso, mesmo seria removido do cache porque esta fotografia foi usada menos recentemente antes, foi a mais recentemente usada. E assim b1 será removido do corte, e B5 tomará seu lugar. E o tempo de seu eixo será p mais quatro. L de u. Isso é o menos usado. Ele alguns mantém o controle da frequência são o número de vezes que um item de dados é acessado. Em caso de tamanho de cache cruzando um determinado limite, ele emitirá para a entrada com a menor frequência. Por exemplo, local digite qualquer palavra através de mensagens de texto em seu smartphone. Seu telefone começa a sugerir várias palavras que você pode selecionar. Em vez de digitar a palavra inteira. Internamente, você é formado software mantém um cache de todas as palavras que você tem tempo, juntamente com a sua frequência. As elites liberais, que a frequência mais baixa. Então, digamos que você assar Vasa mais. Assim que você começar a digitar W e um, seu telefone vai começar a sugerir que você wassup imediatamente. Porque tem o maior número de frequência e você tem dinheiro. Agora, no caso de um empate entre vários modos, então a lista usada essencialmente para gravar é despejada do cache. Mrd, ou o mais recentemente usado no MIT você, o N3 usado mais recentemente é removido e a
preferência é dada às entradas mais antigas no cache. Se o padrão de acesso a dados é tal que o usuário é menos provável para a entrada mais recente. Então esta estratégia é usada para despejo. Um exemplo para este tipo de dinheiro é namoro aplicativos como Tinder. Ele geralmente armazena em cache todas as correspondências potenciais de um usuário. Em seguida, o usuário quer esquerda ou direita estupra ou fornecer. O aplicativo não deve recomendar que seja fornecido ao usuário. Novamente, se isso acontecer, isso resultará em uma experiência ruim do usuário. Portanto, é necessário editar as entidades que absorveriam mais recentemente. O aplicativo deve remover a entrada de cache do perfil que seja esquerda ou direita.
6. Tipos de cache: Neste vídeo, vamos falar sobre diferentes tipos de caches. Adivinhar é fantástico. Isso requer alguma manutenção para manter o cache coerente com a fonte de delito. Ou seja, quando os bancos de dados, se os dados são modificados no banco de dados, ele deve ser invalidado no cache. Caso contrário, isso pode causar um comportamento inconsistente do aplicativo. Resolver esse problema é conhecido como invalidação de cache. Com base na invalidação do cache, existem três pranchas principais de caches. Primeiro, para cortar do que mau corte, e terceiro, anotar gash. Agora vamos ver o que tudo isso significa indegree, direto através do cache. À medida que o nome se move, os dados são gravados primeiro no cache e, em seguida, fazer o banco de dados. Este é um servidor de aplicativos. Assim que precisar ler alguns dados. Ele primeiro lê os dados do cache, e depois grava no banco de dados. Isso garante a consistência entre os dados no cache e os dados no banco de dados. Cada vantagem, então, no corte, segue a taxa mais recente. No entanto, a desvantagem dessa abordagem é que a latência da taxa do aplicativo aumenta porque os dados são
gravados primeiro no cache e, em seguida, persistem no banco de dados. Esta abordagem não é adequada para qualquer sistema de gravação pesada. É útil para aplicações que reduzem os dados com frequência. Buns, é persistente no banco de dados. latência de gravação pode levar um impacto, mas é compensada por latência e consistência mais baixas. Em seguida, temos cache write-back. Como vimos, os dois últimos em dinheiro não são adequados para sistemas pesados de gravação, pois a latência pode aumentar. Uma abordagem alternativa é gravar os dados
no cache primeiro e Marcar o líder como modificado, que pode ser atualizado no banco de dados posteriormente. Assim, um servidor de aplicativos grava os dados no cache. E, em seguida, um trabalho honesto poderia conduzir regularmente todas as entradas modificadas no cache e atualizar seus valores correspondentes no banco de dados. Essa abordagem precisaria dessa leitura impactada, não latência atrasada. A única desvantagem é que haverá um atraso devido ao pensamento de dados entre o cache e os vivos. Agora, uma vez que o banco de dados é a fonte do bruto, qualquer leitura obrigação de dB seria lido ainda incorpora. Os sites como o YouTube. Usa cache de write-back, vai para o bucal de qualquer vídeo. Atualizar o banco de dados para cada visualização de qualquer vídeo vital seria caro. Gravando dados no cache. E, em seguida, afundar no DB é uma solução melhor. Ele tinha. uso do cache de write-back garante latências de leitura e gravação. Próximo é gás radônio. Aplicações de combustível back-end não freqüentemente Realmente, os dados mais recentes, neste caso, o gás radônio é usado. E essa política, o banco de dados, é atualizada sem quebrar os dados para o cache. Assim, o servidor de aplicativos primeiro gravar os dados para o banco de dados. E, em seguida, para qualquer um de vocês comer o corte consulta o banco de dados. Se as entradas não são agradáveis no corte. Essa abordagem não carrega o cache, os dados que não serão atrasados. A desvantagem desta abordagem é que se o aplicativo começar a consultar os dados mais recentes, ele vai desertar e meu cache duplo perde. Então estes são os três tipos de caches, que têm alguns positivos e alguns negativos. Depende inteiramente do cenário em
que cache você deve considerar ao projetar seus sistemas?
7. Partição de dados: Ei caras. Neste vídeo, vamos falar sobre particionamento de dados. Também é conhecido como fragmentação de dados. fragmento de dados é um processo de dividir tabelas
grandes em várias tabelas menores ou lixo eletrônico, conhecido como jibes, e distribuir os dados em várias máquinas ou intercluster. Cada gráfico terá o mesmo esquema e colunas como a da tabela original. Mas os dados armazenados em cada criança são únicos e independentes de outros encargos. Existem duas formas de fragmentação de dados. Primeiro, fragmentação vertical ou particionamento vertical. E o segundo é chamado de particionamento horizontal. No particionamento vertical, a tabela principal é dividida em várias partições, separando o número de colunas. Aqui, como você pode ver, esta tabela principal tem informações específicas do usuário. Esse é um ID de usuário, nome de usuário e o e-mail do usuário. Esta informação é dividida em tabelas. O primeiro contendo o ID do usuário e o nome do usuário, e o segundo contendo o ID do usuário e o usuário emitido. No caso de precisarmos recuperar as informações de um determinado usuário. Podemos juntar ambas as tabelas com base no ID. Aqui. Nós dividimos a tabela verticalmente. Por isso, é conhecido como particionamento vertical. No particionamento horizontal, v dividir a tabela principal de acordo com o número de linhas. Isso está sem carga. Um, V manter algumas linhas. E no comando de V veio outro conjunto de linhas. Os dados em ambos os tiros combinados nos darão os dados originais. Aqui. Os dados poderiam ter sido divididos com base em alguns fatores, que veremos no próximo final. Banco de dados. Fragmento é muito semelhante à escala horizontal. Ou seja, adicionando mais máquinas, dimensionando automaticamente. Daí. Ele nos permite adicionar mais máquinas quando cluster existente, a fim de espalhar a carga, permitir mais tráfego e processamento mais rápido. Além disso, o chiding ajuda a tornar esse aplicativo distribuído, minimizando
assim um único ponto de falha. Sharding banco de dados precisa ser feito de tal forma que os dados de entrada devem ser inseridos no gráfico de coleta. Não deve haver perda de dados. E as consultas no deserto não devem ser lentas. Considerando estas coisas. Vamos ver, quais são as técnicas para fragmentar o banco de dados. Primeiro é o fragmento de Hashmi, ou também conhecido como Védico brilhante baseado em GIS. Um par chave-valor, como um ID de cliente no IB
planejado ou imolação das novas linhas são os dados. Em seguida, passá-lo para uma função hash e inserir os dados no não pensa shied. Do nosso exemplo anterior. Digamos que temos os seguintes dados a serem inseridos. ID de usuário, nome de usuário e usa e-mail. Vejamos, o primeiro valor é um. Nome de usuário é ABC. E algum e-mail. Abc em gmail.com. Aqui, redesenhado para fragmentar nossos dados com base nesse ID de usuário. Então o barramento, este ID de usuário fazer uma função de hash para o nosso exemplo, mas versa essa função de hash, apenas faz o módulo do id de usuário por três e atribui um bom filho resultante. Assim, o módulo 43 resultaria em 012. Então, sempre que o resultado for 0, é uma mesma corrida Bouchard. Sempre que o resultado é um, ele é atribuído ao SIO2, e sempre que o resultado é dois, ele é atribuído ao fragmento três. Então, neste caso, o ID de usuário um, ele seria atribuído ao nosso gráfico para. Então esta regra seria inserida na nossa foto também. No caso de precisarmos adicionar outra regra, esse ID de usuário dois e alguns outros atributos. Esta função hash iria então escolher do modulo três, o que resultará em dois, e atribuir os dados. Bouchard três. Este é o algoritmo de fragmentação mais simples e pode ser usado para distribuir uniformemente os dados entre tiros. E evitar o risco de ter um ponto de acesso de dados. Problema de hotspot de banco de dados surge quando um filho é acessado mais em comparação com os outros afiadores. E, portanto, neste caso, quaisquer benefícios do brilho estão cancelando. O principal problema com essa abordagem é que ele fica realmente desafiador adicionar ou remover dinamicamente um servidor de banco de dados. Toda vez que isso acontece, precisamos chegar ao banco de dados, o que significa que precisamos atualizar a função hash e reequilibrar os dados. Além disso, se isso acontecer com freqüência, isso pode causar perda de dados. Então vamos ver. Precisamos remover ou servidor, quais hosts são fragmento três. Neste caso, teremos que primeiro modificar nossa função de hash. E, em seguida, o hash, todos os dados que foram armazenados dentro de um, SIO2 e filho três respectivamente. Porque à medida que alteramos a função hash, a distribuição dos dados também mudará. Ventilação Mas esse problema é usar hash consistente. O cache consistente fornece escalabilidade mesmo quando temos muitos dados entre muitos servidores. E o número de servidores disponíveis muda continuamente. Vivi, aprenda sobre hash consistente e próximas palestras. Em seguida, temos os reitores a brilhar e a reentrada. O fragmento é escolhido com base no alcance de um Schottky. O intervalo de fragmentação é escolhido de tal forma que o Schottky é susceptível de cair em qualquer um dos valores possíveis. Então digamos que temos um sistema de recomendação que armazena todas as informações sobre o usuário e recomenda filmes baseados em usuários. - Ele. Assim, podemos criar alguns encargos diferentes e dividir cada informação do usuário com base em qual faixa etária se transforma em algo assim. Se o usuário cai na faixa etária de 0 a 18 anos, os dados serão armazenados no número filho, mas se ele cair na idade de 19 a 27 anos, a criança associada ficaria chocada. Da mesma forma, o fragmento da interface também é muito fácil de implementar. Nós só precisamos verificar o intervalo em que nossas falhas de dados atuais e inserir ou ler os dados do shied correspondente. Além disso, cada fragmento contém um conjunto diferente de dados. Mas o esquema de todos os fragmentos é visto. A principal desvantagem desta técnica é que se eu fiz isso é distribuído de forma desigual. Ele pode levar a hotspots de banco de dados. Então temos o fragmento e gráficos diretamente baseados. Temos uma mesa de pesquisa. É para o schottky manter o controle de qual arte armazena quais entradas, flúor ou ler os dados. Mecanismo recusado primeiro diz respeito à tabela de pesquisa para encontrar o número shied quatro, os dados correspondentes usando o Schottky e em seguida, visita um fragmento particular para executar operações diferentes. Então, um exemplo do literalmente ser
fragmentação seria armazenado os dados com base na geolocalização do usuário. Ou seja, se o usuário estiver localizado em nós, ele seria armazenado na infância. Se o usuário estiver localizado no Reino Unido. A informação dele seria armazenada no gráfico. Se ele está olhando para ele na Índia, então a informação seria encontrada no chat três. Este fragmento é muito semelhante ao brilho baseado em alcance, exceto em vez de determinar a vitória e os tiros ganhos dados cai em. Cada chave, é tingida com seu próprio shied específico. Ao contrário tem ser desligamento, que usa uma função de hash fixa e intervalo antes de decidir, o que nos exige para especificar um intervalo com antecedência. Dedicatory be sharding permite que você use qualquer sistema em algoritmo que você deseja que os EUA atribuam dados em apelos às lojas. E também é um relativamente fácil, bom adicionar gráficos dinamicamente usando essa abordagem. O principal problema medicamente baseado fragmentação é que precisamos conservar uma tabela de pesquisa antes de cada consulta de escritura e escritura. Assim, ele pode incorporar o desempenho do aplicativo. Além disso, a tabela de pesquisa é soprada através de um único ponto de falha. Uma solução. Mas esse problema é usar balanceadores de carga. Mas novamente, atualizar frequentemente a cópia
da tabela de pesquisa em cada servidor seria uma sobrecarga? Não. Vamos falar sobre alguns dos benefícios do fragmento. Banco de dados. Sharding nos ajuda a facilitar extremidades de escala horizontal. Podemos adicionar mais máquinas
ao cluster existente e distribuir a carga para aumentar os aplicativos. resposta de consulta mais rápido. Sem fragmento de banco de dados, o banco de dados precisa comparar um grisalho para cada linha. E pode ser um grande contratempo. Mas com chiding, em vez de viajar todas as linhas, precisamos pro entrega apenas algumas linhas presentes no lado particular. fragmento facilita a manutenção porque cada lado contém um pedaço de dados. fragmento de banco de dados elimina o problema de um único ponto de falha e torna nossa aplicação mais tolerante a falhas. Que fragmento. Reduzimos os custos. Porque se tentarmos adicionar mais RAM e armazenamento a uma máquina existente, a fim de dimensioná-la verticalmente. É um glosses caro por ter vários nós. Quanto menos poder computacional é mais barato. Obviamente, há algumas desvantagens do brilho. Banco de dados. O fragmento torna-se complexo. Ventilado vem para implementações práticas. Além disso, se incorretamente, isso pode levar à perda de dados e a tabelas corrompidas. Outro problema importante com fragmentação é que a carga pode tornar-se desequilibrada. Em caso de problemas de hotspot de banco de dados. Um grande pedaço de dados pode cair apenas em um determinado conjunto de cargas, e os disparos restantes podem permanecer vazios. O fragmento do almoço está feito. É muito difícil voltar para a versão original não mapeada do banco de dados. Então esta foi a sua breve introdução ao banco de dados, fragmentando
8. Redundância de dados: Então, o tópico de discussão para este vídeo é replicação de dados e redundância. Replicação significa duplicação de serviços de dados críticos com a intenção de aumentar a confiabilidade do sistema. Por exemplo, se houver apenas uma cópia de um arquivo armazenado em um único servidor, em
seguida, perder esse servidor significa perder o arquivo. Como perder dados nunca é uma coisa boa, podemos criar cópias duplicadas ou redundantes. Para resolver o problema. O mesmo princípio se aplica aos serviços para, se tivermos um serviço crítico em nosso sistema, garantindo que várias cópias, todas as versões dele estejam sendo executadas simultaneamente, possam nos proteger contra a falha de qualquer nó. Criar redundância no sistema pode remover pontos únicos de falha e fornecer backup, se necessário, em uma situação de crise. Por exemplo, digamos que temos duas instâncias de um serviço em execução em produção. Vamos supor que nosso campo de serviço primário ou degradar. Em seguida, o sistema pode falhar para o segundo desserviço. Em tais cenários. Estes veículos podem acontecer automaticamente ou podem ser controlados manualmente. Nós também pode se sentir bem para banco de dados sem medição no caso de nossos campos de banco de dados principal. Agora, outra parte importante da redundância de serviço é criar uma arquitetura compartilhada nada. Na arquitetura nada compartilhado, cada nó pode operar independentemente um do outro. Isso significa que não deve haver nenhum estado de gerenciamento de serviço mais simples ou nossos convidados lendo atividades para os outros nós. Isso ajuda muito com a escalabilidade, pois novos servidores podem ser adicionados sem condições especiais de conhecimento. E o mais importante, e o mais importante, esses sistemas são mais resistentes à falha. Como não há um único ponto de falha. Temos sempre um servidor secundário ou o banco de dados secundário no caso de precisarmos acionar um failover. Agora vamos analisar as vantagens da replicação de dados. A replicação do DNA geralmente é realizada para obter maior disponibilidade, latência
reduzida, escalabilidade e interrupções de rede? Não, vamos discutir cada um deles em breve. Disponibilidade contratada significa garantir a disponibilidade de um sistema distribuído. Isso significa que o sistema continua funcionando mesmo em dá metade de um ou poucos nós sendo preenchidos. Então podemos simplesmente afirmar que continua funcionando. Agora, a replicação de latência reduzida ajuda. Ao reduzir a latência das consultas de dados mantendo os dados geograficamente mais próximos do usuário, exemplo CDN, ele mantém uma cópia dos dados replicados mais próxima do usuário. Você já pensou em como as transmissões da Netflix reduzem? Isso disse latências de gráfico? Será que a replicação de dados é uma das razões para isso. Escalabilidade cara. Assim, as consultas podem ser atendidas a partir de cópias replicadas dos mesmos dados. Isso aumenta a taxa de transferência geral das consultas e interrupções de rede. Artista alguns livros, mesmo sob falha de rede. Também é importante entender as desvantagens da replicação de dados. Em primeiro lugar, a maioria dos alunos bases necessárias como armazenar a réplica dos mesmos dados em diferentes, digamos, consome mais espaço.. Em segundo lugar, replicação
não se torna cara, réplica
do fornecedor em um local diferente precisa ser atualizada. E terceiro, manter a consistência do Dia D em locais diferentes envolvem medidas complexas. Agora vamos olhar para uma técnica para replicação de dados. Essa técnica é chamada de replicação mestre-escrava. É uma das práticas mais comuns na replicação de dados. Na técnica de replicação mestre-escravo. O líder, ou você poderia dizer mestre, ou o nó primário. Aqui. Poderíamos dizer que tem líder. Ou um nó primário, replica dados para todos os seus seguidores, que poderiam ser denominados como escravos, são réplicas de leitura. Em alguns casos. Nossos nós secundários. Este é o modo de replicação mais comumente usado. Sempre que uma nova taxa vem para o mestre. Ele mantém seus produtos secos armazenamento local. E desde que os mesmos dados para todas as suas réplicas como um log de replicação de ordem de fluxo de cadeia. Come ao vivo e, em seguida, atualize sua própria cópia local dos dados como eles foram possuídos pelo nó líder. Muitos bancos de dados relacionais, como MySQL, PostgreSQL e seus bancos de dados SQL, como MongoDB, repensar BB e espresso, usam esse modo de replicação. Cartões azuis de mensagens como Kafka e dicas como Rabbit MQ também empregam replicação baseada em um único líder. Dados. Duas réplicas de um líder são copiadas de forma assíncrona ou síncrona. Iit método de configuração de replicação tem seu próprio conjunto de prós e contras, que estão atualmente além do escopo desta discussão. Então eu espero que você tenha alguma clareza ou replicação de dados e redundância, que é um princípio que precisa ser seguido ao projetar sistemas.
9. SQL Vs NoSQL NoSQL: E o mundo dos bancos de dados. Existem dois tipos principais de soluções. relacionais e bancos de dados não relacionais. Estamos mais familiarizados com eles como SQL e NoSQL. Ambos os indivi padrão, desenvolvendo o tipo de destruidor de informação e o V distorcido. Bancos de dados SQL e relacionais armazenam dados em uma linha e colunas. Cada linha contém todas as informações sobre uma entidade. Você poderia imaginar isso na forma de uma mesa. Tendo várias linhas e várias colunas. Cada linha contém todas as informações sobre uma entidade. E todas as colunas são os pontos de dados separados. Alguns dos bancos de dados relacionais mais populares incluem MySQL, Oracle, MS SQL server, SQLite para verde e MongoDB. Falando sobre bancos de dados não relacionais, bancos de dados
NoSQL, os seguintes são os tipos mais comuns. Primeiro, armazena chave-valor. Em armazenamentos de chave-valor, os dados são armazenados em um parasita de pares de chaves e valores. A chave é um nome de atributo, que é um bom valor. As lojas de chave-valor de vilão incluem Voldemort e DynamoDB. Em seguida, os bancos de dados de documentos. Nesses bancos de dados, os dados são armazenados em documentos em vez de linhas e colunas de uma tabela. E esses documentos são agrupados na forma de coleções. Assim, os dados são armazenados em documentos. E um grupo de documentos é chamado de coleção. Cada documento pode ter uma estrutura totalmente diferente. Os exemplos de bancos de dados de documentos incluem CouchDB, MongoDB ímpar. Agora vamos chegar ao terceiro tipo de banco de dados chamado bancos de dados de coluna ID. Em vez de mesas. Em bancos de dados colunares, temos famílias de colunas, que são contêineres para linhas. E como bancos de dados relacionais. Não precisamos saber todas as colunas viradas para cima. E ito não tem que ter o mesmo número de colunas. Você poderia imaginar isso como algo assim. Os bancos de dados luminares Go são mais adequados para analisar grandes conjuntos de dados. Agora, os exemplos incluem Cassandra, banco de dados HBase. Então temos bancos de dados gráficos. Esses bancos de dados são usados para armazenar dados. Quem é uma exclusões são melhor representados na forma de um gráfico. Como este. Os dados são salvos na estrutura do gráfico com nós chamados entidades. Propriedades. As informações sobre as entidades e linhas, as conexões entre as entidades. Os exemplos de bancos de dados gráficos incluem Neo4j em grafo finito e outros. Não, vejamos algumas diferenças de alto nível entre SQL e NoSQL. Sql basicamente vem sob os sistemas de gerenciamento de banco de dados relacional RDBMS. Líderes. O NoSQL vem sob sistemas digitais não relacionais ou distribuídos. Esses bancos de dados têm esquema fixo ou estático ou predefinido. Vedas. Bancos de dados NoSQL não têm esquema, são esquema muito dinâmico. Bancos de dados SQL não são adequados para história de dados hierárquicos. Vid, como os bancos de dados NoSQL são mais adequados para armazenamento hierárquico de dados, bancos de dados
SQL são mais adequados para consultas complexas. Visão, você precisa mesclar várias entidades para trazer algumas informações. Os bancos de dados Contra NoSQL não são tão bons para consultas complexas. Bancos de dados SQL são particularmente bons Ajuste Vertical Scaling. Vid como nenhum banco de dados sequela muito bem suporta escalabilidade horizontal. Agora vamos ver os motivos pelos quais você deve usar bancos de dados SQL. Primeiro de tudo, se você precisa garantir queixas ácidas, como ele reclama, reduz anomalias e protege a integridade do
seu banco de dados, prescrevendo exatamente como as transações interagem com o banco de dados. Geralmente, os bancos de dados NoSQL sacrificam a queixa ácida por escalabilidade e velocidade de processamento. Mas para muitos aplicativos de comércio eletrônico e financeiros, como se queixou, os bancos de dados continuam a ser a opção preferida. Em seguida, seus dados são estruturados e imutáveis. Se a sua empresa não estiver experimentando um crescimento maciço, isso exigiria mais servidores. apenas trabalhando com dados consistentes, talvez não haja uso para você usar um
banco de dados projetado pelo sistema para oferecer suporte a uma variedade de tipos de dados e alto volume de tráfego. Não quando você deve usar bancos de dados NoSQL. Em seguida, todos os outros componentes da sua aplicação são rápidos e contínuos. NoSQL. Dados de serem desviados. Big data está contribuindo para um grande sucesso sem bancos de dados SQL, principalmente porque ele lida com fez diferente do que bancos de dados relacionais tradicionais. Alguns exemplos de banco de dados NoSQL em MongoDB, CouchDB, Cassandra, HBase, como vimos anteriormente, null. As razões para usar banco de dados MySQL são as seguintes. Ao armazenar grandes volumes de dados que muitas vezes têm pouca ou nenhuma estrutura. E banco de dados NOSQL definir limites sobre os tipos de dados que podemos armazenar juntos e nos permite adicionar formas diferentes como os novos perigos. Vid, bases de dados baseadas em documentos. Você pode armazenar dados em um só lugar sem precisar definir muitos dados. Esses são os Países Baixos. Então você vai querer aproveitar ao máximo a computação em nuvem e o armazenamento. O armazenamento baseado em nuvem é uma excelente solução de peneiramento de curso, mas requer que os dados sejam facilmente distribuídos por vários servidores para aumentar a escala. uso de hardware de base, no local ou na nuvem, proporciona a você o incômodo de software adicional. bancos de dados NoSQL como o Cassandra são projetados para serem dimensionados em vários datacenters prontos para uso. Se você adicionar outra fase de pré-desenvolvimento. Não, SQL é extremamente útil para desenvolvimento
rápido, pois não precisa que você esteja preparado antes do tempo. Se você estiver trabalhando em iterações mais rápidas do seu sistema, que exigem atualizações frequentes para o
titular dos dados sem muito tempo de inatividade entre as versões, um banco de dados relacional irá atrasá-lo. Agora surge a pergunta, qual deles você usa? Sql ou no máximo igual? Quando se trata de tecnologia de banco de dados, não
há uma solução de tamanho único. É por isso que muitas empresas dependem bancos de dados relacionais e não relacionais para diferentes necessidades. Mesmo que nenhum banco de dados de sequela esteja ganhando popularidade por essa velocidade e escalabilidade. Ainda há situações em que o banco de dados SQL altamente estruturado pode ter um melhor desempenho. Escolher a tecnologia certa depende do seu caso de uso. A grande maioria dos bancos de dados relacionais são ácidos queixados. Ou seja, este aborto, atomicidade, consistência, isolamento e durabilidade. Vds, os bancos de dados NoSQL são base reclamados. Ou seja, eles estão basicamente disponíveis. Estado mole. Ou seja, você pode modificar o banco de dados sempre que
quiser e eles fornecem consistência eventual. Não fora da caixa, mas sim, eles fornecem consistência. Então, quando se trata de disponibilidade de dados, veja se obtendo D para executar transações bancos de dados SQL. Eu ainda tenho debatido com a maioria das soluções Nozick, sacrifícios quando ela reclama de desempenho e escalabilidade.
10. Teorema do CAP: Ei caras. Nesta palestra, vamos falar sobre princípios de ligação em conceitos básicos de design de sistemas. C significa consistência, disponibilidade, e B significa dominância na audição. Assim, a lacuna para eles afirma que é impossível para o sistema de software distribuído crescer simultaneamente em mais de três, disponibilidade
garantida, consistência e tolerância à partição. Em seguida, projetamos um sistema distribuído. Negociar entre lacunas é quase a primeira coisa que queremos considerar. Ao projetar um sistema distribuído. Podemos escolher qualquer dois dos três. O que tudo isso significa? Falando sobre consistência, um sistema é dito ser consistente se todos os nós vêem os mesmos dados ao mesmo tempo. Então vamos considerar um sistema distribuído. As três incógnitas estão interagindo. Então, simplesmente falando, se você executar uma operação de leitura em um sistema consistente, deve ser feito o valor da operação de gravação mais recente. E isso significa que o lead deve causar todos os nós nos mesmos dados. Esse é o valor do MOSFET e taxa. Então vamos entendê-lo com o, por exemplo. Então vamos C ser fornecido nosso sistema built-in entrada como x. Então vamos dizer que estes são os
nossos dados e relacionados esta entrada e esta é basicamente uma operação de leitura. Seja radônio, relacione-se com o nosso sistema. Então, se você está lendo os dados, não fez o nosso sistema a partir de qualquer um dos outros nós. Digamos que estamos lendo do C existente Então, a maioria está pronta. Concluído x foi mais recente. Dominação sozinha. Nem vamos assumir v, alguns novos dados para o nosso sistema B. Então vamos dizer que dados como
lacuna de aprendizagem desta operação de gravação é d mais um. Então, agora, se você executar um sistema de acordo legal, veja, deve ser feito lacuna de aprendizagem em vez de biônica. Porque neste momento, a lacuna de aprendizagem é a nossa população reivindicada mais recente. Agora vamos discutir sobre a disponibilidade. A disponibilidade em um sistema distribuído garante que o sistema permaneça operacional 100% do tempo. Isso significa que a endogamia recebe uma resposta independente do estado individual. Mas isso não garante que a resposta contenha a nota mais recente, nenhuma garantia do direito. Na resposta. Exemplo para este sistema, digamos V, eles foram a três em nosso sistema. V, x, y, z no tempo t mais um. Então, estamos tentando extrair do sistema por um sistema altamente disponível,
ter feito, ou foi para três XYZ. Dependendo da sincronização entre os sistemas. Isso não garante consistência, mas os sistemas são altamente disponíveis. Ou seja, o sistema está operacional. Está a dar alguma resposta. Qualquer um dos linguistas. Agora vamos ver o que significa tolerância. Esta é uma condição que afirma que o sistema não falha independentemente de as mensagens que eu estou caindo bastante bilhões entre os nós e o sistema, domínio de
partição tornou-se mais de uma necessidade do que uma opção em um sistema distribuído. É possível por suficientemente os registros iniciais em combinações de normas e redes. Então, em nosso sistema, temos três nós. Digamos que temos três nós. No nosso sistema. Temos três nós. Esses nós estão conectados
ao ao sistema. O sistema ainda está funcionando. Somente. Este nó em particular começa a funcionar mal. Mas não podemos ver que o sistema está feito. Ainda está funcionando. E esta edição em particular é afetada. Se algum dado, ele seria determinado por alguma outra norma que tem duplicado. Este nó. Agora, B não pode ser um gênero nos levar a que está convenientemente disponível. A, consistente. E qualquer falha de partição só
pode criar um sistema que tenha três propriedades. Porque para ser consistente, todos os nós devem ver o mesmo conjunto de atualizações na mesma ordem. Mas se o suporte de rede é atualizado, edição pode não fazê-lo para as petições antes uma glândula fora de partição de data depois de ter atualizado. A única coisa que pode ser aprendida. Esta possibilidade é parar de resolver linguistas a partir da variação fora do jogo,
mas, em seguida, o serviço não seria mais um 100% disponível. Assim, os exemplos de sistemas
altamente disponíveis e consistentes podem não cair. Tolerante à partição. Bancos de dados como MySQL, SQLite, bancos de dados relacionais. Por outro lado, os exemplos de sistemas de domínio altamente disponíveis e por pacientes não são armazéns de dados de condomínio como Cassandra e consistência e tolerância à partição. E não nos importaremos com a disponibilidade. Então exemplo seria MongoDB. Assim, para concluir, podemos ver que podemos esperar apenas dois dos três discutidos. Obtendo qualquer sistema distribuído.
11. hashing consistente: Bem-vindo ao vídeo sobre cache consistente. Antes de avançar com hash consistente, primeiro
precisamos entender tabelas de hash distribuídas. Tabela de hash distribuído é um
dos componentes fundamentais utilizados em sistemas escaláveis distribuídos. Como sabemos, hashtables precisam de um ganho. Nosso valor, e a função hash. A função hash, mapeia a chave para um local onde o valor é armazenado. Então, quando passamos a chave para a função hash, ele retorna o índice no valor de dados da tabela de hash seria armazenado. Agora suponha que estamos projetando um sistema de cache distribuído. Dado n servidores de cache. E na função hash butano seria d modulo m. Ou seja, para encontrar qual servidor de cache AGI está presente, nós simplesmente precisamos fazer isso modular. E o valor resultante nos fornecerá o índice do servidor de cache onde nosso valor está armazenado. É uma função hash simples e comumente usado. Mas tem duas grandes desvantagens. Primeiro, não é escalável horizontalmente. Sempre que um novo host de cache é adicionado ao cluster, todos os mapeamentos existentes são quebrados. Porque à medida que nosso número de servidores de cache muda, nossa função de hash muda. E todos os mapeamentos já feitos no sistema existente vão ganhar. Então, será um bin diminuiu na manutenção se o sistema de cache e em muitos
dados que normalmente se torna
difícil de dados que normalmente se torna agendar estão para baixo dinamarquês que atualizam nossos mapeamentos de bagagem. Em segundo lugar, ele pode não ser balanceado de carga, especialmente para dados distribuídos não uniformemente. Na prática, pode-se facilmente supor que os dados não serão distribuídos uniformemente. Para o sistema de cache, ele se traduz em alguns caches sendo quente e saturado, enquanto os outros ociosos e quase vazios. Então, se tivermos três servidores de cache, C1, C2 e C3, pode
acontecer que a maioria das leituras de cache estejam sendo feitas a partir de C1 e C2 e C3 não sejam classificadas muito DAG. Isso deserta em um dados não uniformemente distribuídos. Então, nesses cenários, paixão
consistente é uma boa maneira de melhorar o sistema de cache. Hash consistente é uma estratégia muito útil para sistemas de cache
distribuídos e tabelas de hash distribuídas. Ele permite a distribuição de dados
em um cluster de forma a minimizar a reorganização. Os nós Ven são adicionados ou removidos. Assim, tornando o sistema de cache mais fácil. Essa escala para cima ou para baixo. Hashing inconsistente. Em seguida, a tabela de hash é recita. Exemplo. Um novo corte de prata é adicionado ao cluster. Nesse caso, apenas chaves k por n precisam ser mapeadas. Se você se lembra. No sistema de cache, usamos o modo como a função hash. Então era d modulo N. Então só estes teriam que ser remapeados. Mas neste caso, apenas k por n olhar precisa realmente mapear. Aqui. K é o número total de chaves, e N é o número total de sílabas. Então vamos ver como funciona. Como um sistema de função hash típico, paixão mapeia um B para um inteiro. Suponha que a saída da função hash esteja no intervalo de 056. Imagine que os inteiros no intervalo estão satisfeitos honrando de tal forma que os valores são enrolados. Ou seja, e b para o 0 é armazenado em algum lugar aqui. E o dígito um é armazenado um pouco aqui. Integer fazer é armazenado em algum lugar aqui, e assim por diante. E estes são 255, que provavelmente está armazenado aqui. Agora, dada uma lista de servidores de cache, primeiro
precisamos hash para os indivíduos em nosso alcance. Então, digamos que tínhamos três servidores de cache e hash para inteiros desertos nos números a seguir. A0 é mapeado para cinco, B é mapeado para um 100 e C é mapeado para relativo e NP. Zoom soviético que é colocado no índice cinco. B está satisfeito com o índice 100, e C está satisfeito com o fundo de índice MP em nosso link. Agora, então precisamos mapear qualquer chave para um servidor específico. O primeiro perigo. Então digamos que precisamos mapear o VN. Então nós passá-lo para a nossa função de hash. Digamos que se ele sai para, Vamos verificar o nosso índice. Então B vai se mover no sentido horário no link até encontrarmos nosso primeiro dinheiro. Então o índice para Watson bateu. Então. Isto devia ter sido mapeado para este local, mas temos a sílaba de dinheiro mais próxima no índice cinco. Assim, esta chave seria mapeada para o nosso servidor a. Da mesma forma, digamos que temos DK2 e a função hash para k2 retorna 115, que provavelmente está aqui em nosso anel. Então este gueto deve ser mapeado para aqui. Mas como não há dinheiro comemorar aqui, nós nos movemos no sentido horário. E o primeiro servidor de cache Vn contador está na vaidade de índice, que é um servidor de cache c. Então o mapa, este esquema no servidor de cache c. Então é assim que mapeamos nossos p que são servidores de cache. Agora vamos ver o que acontece quando adicionamos um novo ajuste. Neste caso, digamos que adicionamos dinheiro que estaria no local de índice 125. Então este é em 500, este é em 80. Agora, ele deu que ainda resulta em um grupo de entidades que é mapeado aqui. E o nosso servidor de gás mais próximo é um escravo do Atlântico. Isto já estava guardado aqui. Mas para isso, o gueto para o qual a função hash retornou 115 mapa tablet aqui e ficou satisfeito em nosso servidor de cache c. Então, o que precisamos fazer é
mapear a pele para fazer nossos clientes sempre precisam. Então nós só precisamos mover as chaves antes do índice 125 como o olhar restante seria armazenado no cache, ver apenas as chaves que está apontando para dinheiro ver que se acredita ser dividido. Alguns deles serão deslocados pelos outros gays, não serão tocados. Da mesma forma, se por acaso nosso servidor convidado E vai para baixo e ele é removido de um cluster, só
terá que mover dado D daqui para aqui. Como B seria o primeiro servidor de cache neste anel. Então este gás é removido. Todas as chaves que foram originalmente mapeadas para ele cairão em B. E somente essas chaves precisariam ser movidas para serem outras chaves não serão afetadas. Então o único viveu para mover d por n chaves. Em ambos os casos, se adicionarmos ou removermos um determinado servidor de gash. Não para balanceamento de carga. Como foi discutido no início, o líder real é essencialmente distribuído aleatoriamente e, portanto, pode não ser uniforme. Pode significar que os gansos nos cortes desequilibrados. Para lidar com esse problema, adicionamos réplicas virtuais, traços de financiamento. Em vez de mapear cada cache para um único diminuiu durante o mapeá-lo para os vários pontos no anel. Isso são réplicas. Desta forma. Cada cache está associado a várias partes de contar. Podemos fazer isso por ter vários hashes para os próprios servidores de cache. Como o número de réplicas na Grécia, os gansos seriam mais equilibrados. Para isso, podemos ter várias funções de hash para nossos servidores de gash e da mesma forma para b e da mesma forma para C. Mas fazendo isso, podemos conseguir um corte equilibrado.
12. Quo de mensagem em fila de mensagens: Neste vídeo, vamos discutir sobre filas de mensagens. E fez vantagem ao projetar um sistema. É uma fila de mensagens. On MessageQueue é um componente do middleware de mensagens que permite que os aplicativos e
serviços independentes troquem informações. Filas de mensagens. As mensagens armazenadas são pacotes de dados que o aplicativo cria para outro aplicativo consumir na ordem em que são transmitidos até que o aplicativo consumidor possa processá-los. Isso permite que as mensagens esperem com segurança até que o aplicativo de recebimento seja Eddy? Portanto, se houver um problema com a rede ou o aplicativo de recebimento, as mensagens na fila de mensagens ou não perdidas. Essa fila de mensagens é usada para comunicação
assíncrona de aplicativo para aplicativo? - Não. O que significa comunicação assíncrona entre aplicativos? Comunicação assíncrona significa aplicativo quando ele quer enviar uma mensagem m aplicativo. Mas não requer uma resposta imediata para continuar seu processamento. Isso significa que o aplicativo um continuaria a funcionar independentemente da mensagem M que está sendo recebida pelo aplicativo para. aplicativo dois pode estar ocupado ou pode estar desconectado. Na rede. O aplicativo está disponível. E de volta uma resposta à aplicação quando
no aplicativo de manutenção pode-se executar algum outro sessile crepúsculo. Então, onde guardamos essas mensagens? Obviamente, não queremos que a nossa mensagem se perca. Agora, aqui vem a mensagem vai para um resgate. As filas de mensagens fornecem armazenamento temporário. O programa de destino do fornecedor está ocupado, o que não está conectado. Agora, o melhor exemplo para mensagens assíncronas é então um e-mail é enviado. O remetente pode continuar processando outras coisas sem uma resposta imediata do receptor. Então, uma ferramenta de mensagem não é nada além da agregação de mensagens e fila do Gautama. A fila contém uma sequência de mensagens enviadas entre os aplicativos estão aguardando sua vez para ser processado. Mensagem está satisfeito em um Q. Eu armazenei até que o consumidor acredita neles. Enviar que o aplicativo é chamado de produtor. E o aplicativo receptor é Goldie consumidor. Que todo o produtor deve produzir as mensagens. E o papel do consumidor é consumir as mensagens. Mensagens que os dados a serem enviados do produtor para o consumidor. Pode ser uma resposta de solicitação. Mensagem. As filas não processam mensagens. Simplesmente os armazena. Esta forma de lidar com mensagens dissocia o produtor do consumidor. O produtor e o consumidor
da mensagem não precisam interagir com a fila de mensagens na mesma coisa. Agora vamos falar sobre as vantagens de Massachusetts. As filas de mensagens são importantes porque ajudam a desacoplar os aplicativos. Ou os aplicativos são dissociados. Se eles podem se comunicar uns com os outros sem estar conectados. Além disso, executar o aplicativo é completamente desciente da implementação do outro aplicativo. Em outras palavras, não há dependência entre eles. Agora, o aplicativo dissociado, qualquer alteração feita em um aplicativo não afeta o outro aplicativo. Desde que o contrato de comunicação não seja violado. Beacon facilmente quebra ven aplicação monolítica em aplicações menores. Vetado reduz a complexidade geral. Torna-se mais fácil de manter e aplicações
depurador pode ter aplicação multi-plataforma é menor. Os aplicativos podem ser desenvolvidos de forma independente em qualquer linguagem de programação e dimensionados de acordo. Isso significa que os aplicativos podem ser agnósticos de linguagem de programação. Ajustar filas de mensagens. Dido é um aumento na responsabilidade e no desempenho de um sistema. Os produtores não têm de esperar que os consumidores se tornem disponíveis. Mais uma vez, basta adicionar solicitações na fila. Os consumidores podem processar as mensagens sempre que estiverem disponíveis. E isso simplesmente não é sobrecarga na leitura. A mensagem vai. Mensagens de fotossistema. Mesmo que diferentes empresas de aplicativos que viram seus dados sejam perdidas e o sistema se torne mais tolerante a falhas.
13. CDN: Olá e bem-vindo ao vídeo na rede de entrega de conteúdo, ou popularmente conhecido como redes CDN. Uma rede de distribuição de conteúdo ou CDN é uma rede distribuída globalmente de servidores web. Pontos de presença ímpares cujo objetivo é fornecer uma entrega de conteúdo mais rápida. Agora primeiro, vamos falar sobre os benefícios de Simeon. O conteúdo é replicado e armazenado durante toda a temporada. Assim, o usuário pode acessar os dados que são armazenados no local que é geograficamente mais próximo a ele. Isso é diferente e mais eficiente do que o método tradicional de armazenar conteúdo em apenas um servidor central. Como ele evita o gargalo nesse servidor e fornece uma alta velocidade de carregamento de conteúdo. Então agora vamos ver como a Internet funciona com e sem CDN. No caso de denotar ter uma rede CPM. Todas as solicitações de nossos usuários estão sendo atendidas pelo conteúdo fornecido. Mas no caso em que temos uma rede cd entre o ContentProvider e nossos usuários. O conteúdo é servido pela CDN em vez do fornecido. Isso evita possíveis gargalos. Por exemplo, o conteúdo fornecido. Uma vez que a rede de CD é distribuída globalmente, recusado acessa uma cópia dos dados perto de si
mesmo, ao contrário de todos recusaram acessar o mesmo servidor central. Isso está em alta velocidade de carregamento de conteúdo, melhorando
assim a experiência do usuário. Se todos os dados estiverem localizados no servidor central, a experiência do usuário será afetada negativamente pela velocidade de carregamento limitada. Quanto maior a distância entre o usuário e o servidor, mais tempo levará para que o conteúdo leia qualquer uma das plantas. Para colocá-lo de forma mais simples. O objetivo de uma CDN é melhorar a experiência
do usuário e fornecer uma utilização de rede mais eficiente. Um exemplo perfeito de semeadura é a Netflix. Fonte Netflix, todos os seus dados nesta rede. Então, sempre que você começar a reproduzir um vídeo, Vamos ver, Netflix tem Silvers baseado nos EUA. E vamos ver, se você está decidindo na Índia, sem coelom, Netflix teria que trazer todos os dados dele, nós servidores para você aqui na Índia. Isso teria resultado em exclusões numéricas para armazenar o vídeo em buffer. Mas você nunca percebe uma falta vital assistindo seu vídeo porque o conteúdo é armazenado em redes CDMA. Você como um usuário na Índia, está acessando o conteúdo desta rede em vez disso, vítreo, geograficamente muito mais perto de você. Por isso, resulta em uma melhor experiência de usuário e também aguardam para acelerar os servidores Netflix. Nos EUA. Provedores de conteúdo, como empresas de mídia e fornecedores de comércio eletrônico, BCB e operadores para entregar fez ponto final. Quem fez Audience? E fez ISPs,
operadoras e operadores de rede de um CBGB para hospedar centros em seus data centers. Existem dois mecanismos principais que explicam como a CDN funciona. Primeiro, mantenha o conteúdo importante distribuído para vários datacenters distribuídos globalmente. Por isso, está mais perto do usuário final e, portanto, mais rápido para baixar. E em segundo lugar, você configura otimizações com base
no tipo de conteúdo para obter o conteúdo para o usuário de forma mais eficiente. Isso significa que, se você estiver armazenando em buffer os vídeos em seu smartphone, é responsabilidade da CDN fornecer apenas a versão SD do vídeo. Se você estiver colocando o vídeo em seu laptop, áudio, mesmo ele iria fornecer-lhe com resolução de vídeo HD. Isso deserta em uma melhor otimização de rede. Como você não precisa de um vídeo iterativo, haverá buffer no seu smartphone. Então este v, um CDN descarrega o auto gráfico diretamente do ContentProvider, resultando em possíveis rolamentos. A localização é fundamental para a velocidade de entrega de conteúdo. Quanto mais longe o usuário estiver do programa em que os dados são armazenados, mais tempo levará para o conteúdo chegar ao usuário. E esse intenso afeta negativamente a experiência do usuário. E deduzir o CB1 resolve esse problema e fornece ao usuário uma experiência de usuário muito melhor.