Popular Science Distributed Architecture

Esta série de artigos Github back-end Guia Avançado foi incluído, este item é perfeito estrela bem-vindas.

1. arquitetura distribuída para resolver quaisquer problemas

Os dois principais são:

  • Para lidar com grandes fluxos de

    Agrupando tecnologia para grande escala pedido concorrente balanceamento de carga em máquinas diferentes.

  • negócios críticos Protect

    Background melhorar a disponibilidade do serviço, isolamento de falhas para prevenir um efeito dominó, se a quantidade de tráfego, a necessidade de degradação do serviço. A chave tem sido garantir o fluxo de negócios.

Significa fazer duas coisas, uma é aumentar a taxa de transferência da arquitectura global, o segundo é para melhorar a maior estabilidade do sistema, a disponibilidade do sistema.

2. Como melhorar o desempenho de infra-estrutura

  • sistema de cache
  • chamada assíncrona
  • load Balancing
  • partição de dados
  • dados Mirroring

3. Como melhorar a estabilidade da arquitetura

  • serviço de Split
  • serviço de Redundância
  • limitando rebaixamento
  • arquitetura de alta disponibilidade
  • operação de alta disponibilidade e manutenção

4. O núcleo de sistemas distribuídos

img
img

O monitoramento pilha completa

img
img
  • camada de base: monitorização hospedeiro e os recursos subjacentes. Por exemplo: CPU, memória, throughput da rede, um O, utilização do disco rígido I / disco e assim por diante.
  • camada intermediária: é monitorar a camada de middleware. Por exemplo: Nginx, Reids, ActiveMQ, Kafka, MySQL, Tomcat e assim por diante.
  • Camada de Aplicação: monitorar a utilização da camada de aplicação. Por exemplo: HTTP de transferência de acesso, tempo de resposta, o código de retorno, análise de links chamada, gargalos de desempenho, que compreende ainda o monitoramento de terminais de usuário.

6. Gestão de Serviços

  • Classificar as dependências entre serviços (ZIPKIN)
  • Status do serviço e gerenciamento de ciclo de vida do serviço (serviço descoberta)
  • gerenciamento de versão do esquema geral (similar à versão da correspondência entre Springboot e clound Primavera)
  • Recursos / agendamento de serviços
  • Manutenção e montagem status do serviço (que não esperamos manter o status muda de serviços, tais como o serviço pendurado esperadas mudanças no serviço de estado vai caber, como início do serviço)
  • Elasticamente serviços elásticos e failover (estivador, Kubernetes)
  • fluxo de trabalho de serviços e orquestração

7. Resumo

7.1 questões de sistemas para construir distribuídos enfrentado por

  • Falha de hardware da alta incidência de sistemas distribuídos. O fracasso é a norma, operação e processos de manutenção precisa ser automatizado, tanto quanto possível.
  • A necessidade de bons serviços de design, para evitar um ponto único de falha causou grandes impactos serviços em outros serviços dependem dele.
  • Para escalabilidade capacidade, dividir, autogoverno e não-estatal serviços tornam-se mais importante, você pode precisar modificar a velha lógica software maior.
  • 老的服务可能是异构的,此时需要让他们使用标准的协议,以便可以被调度、编排、且互相之间可以通信。
  • 服务软件故障的处理也变得复杂,需要优化的流程,以加快故障的恢复。
  • 为了管理各个服务的容量,让分布式系统发挥出最佳性能,需要有流量调度技术。
  • 分布式存储会让事务处理变得复杂;在事务遇到故障无法被自动恢复的情况下,手动恢复流程也会变得复杂。
  • 测试和查错的复杂度增大。
  • 系统的吞吐量会变大,但响应时间会变长。

7.2 了解一些解决方案

  • 需要有完善的监控系统,以便对服务运行状态有全面的了解。
  • 设计服务时要分析其依赖链;当非关键服务故障时,其他服务要自动降级功能,避免调用该服务。
  • 重构老的软件,使其能被服务化;可以参考 SOA 和微服务的设计方式,目标是微服务化;使用 Docker 和 Kubernetes 来调度服务。
  • 为老的服务编写接口逻辑来使用标准协议,或在必要时重构老的服务以使得它们有这些功能。
  • 自动构建服务的依赖地图,并引入好的处理流程,让团队能以最快速度定位和恢复故障,详见《故障处理最佳实践:应对故障》一文。
  • 使用一个 API Gateway,它具备服务流向控制、流量控制和管理的功能。
  • 事务处理建议在存储层实现;根据业务需求,或者降级使用更简单、吞吐量更大的最终一致性方案,或者通过二阶段提交、Paxos、Raft、NWR 等方案之一,使用吞吐量小的强一致性方案。
  • 通过更真实地模拟生产环境,乃至在生产环境中做灰度发布,从而增加测试强度;同时做充分的单元测试和集成测试以发现和消除缺陷;最后,在服务故障发生时,相关的多个团队同时上线自查服务状态,以最快地定位故障原因。
  • 通过异步调用来减少对短响应时间的依赖;对关键服务提供专属硬件资源,并优化软件逻辑以缩短响应时间。

本系列文章Github 后端进阶指南 已收录,此项目正在完善中,欢迎star。

公众号内文章都是博主原创,并且会一直更新。如果你想见证或和博主一起成长,欢迎关注!

Acho que você gosta

Origin juejin.im/post/5dee6b976fb9a015ff64de78
Recomendado
Clasificación