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
O monitoramento pilha completa
- 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。
公众号内文章都是博主原创,并且会一直更新。如果你想见证或和博主一起成长,欢迎关注!