分布式架构

背景

分布式架构理论的诞生互联网的高速发展,归纳要点如下:

  1. 高配置的服务器成本太高。
  2. 应用规模变大,变的复杂起来。
  3. 性能问题越来越迫切,严重影响了用户的体验,互联网平台是注重用户体验,用户至上。
  4. 单体应用软件维护成本太高。
  5. 部署效率低下。
  6. 代码复用程度低。

定义

分布式架构是指由多个能独立部署的子系统基于网络通讯协议,相互协同来完成业务流程的架构模式。

网络具有三种状态:成功、失败、超时。

分布式架构体系-架构原则

高可用

1.负载
2.限流
3.降级
4.熔断
5.隔离
6.重试
7.回滚
8.压测

高并发

1.缓存
2.队列
3.异步
4.池化
5.拆分

关键问题

业务场景需求:

  • 多份相同的数据,在一处修改,保证多份一致。

  • 一个业务变更多份不同的数据,要保持一致,要成功都成功,要失败都失败。

传统的单体架构中,应用之间不存在基于网络通讯的问题,集群是无状态的,除了会话状态,而分布式架构中,高并发的场景下,保证各节点数据的一致性比较复杂,复杂的原因:

  • 节点规模大
  • 节点之间相互通讯
  • 节点管理要求高
  • 一致性难度

针对此问题,提出了以下解决思路:

时钟

  • 原子钟

  • 向量时钟

  • 逻辑时钟

通过时钟解决时间的一致性,再通过时间的一致性来保证执行的顺序性。

网络模式

  • 同步网络

    • 节点同步执行
    • 消息延迟低
    • 全局锁
  • 半同步网络

    • 节点同步执行
    • 消息延迟中
    • 全局锁条件放宽
  • 异步网络

    • 节点独立执行

    • 无全局锁

    • 消息延迟高

理论与算法

理论

  • 分布式一致性:CAP理论

  • 弱一致性:BASE理论

  • 强一致性:ACID理论

  • 二阶段协议:2P理论

  • 三阶段协议:3P理论

算法

  • Paxos

  • Raft

核心技术

注册中心

  • eureka

  • consul

  • nacos

配置中心

  • config

  • nacos

网关中心

  • zuul

  • gate way

  • soul

负载均衡

  • ribbon
  • nginx

分布式跟踪

  • skywalking

熔断降级 限流

  • hystrix

  • turbine

  • ribbon

  • sentinel

监与控日志

  • Telegraf+InfluxDB+Grafana+SLS

调度

  • xxl-job

安全

  • SpringSecurity+Oauth2+Jwt

持续集成

  • maven+Git+teamcity+ansible+docker+k8s

全栈中间件

数据库

  • 关系数据库

    • MySQL
  • 时序数据库

    • Influxdb
    • Druid
  • 列数据库

    • hbase
  • 文档数据库

    • elasticsearch
    • mongodb

消息队列

  • rabbitmq
  • activemq
  • kafka
  • pulsar

缓存

  • redis
  • couchbase

计算

  • hadoop
  • spark
  • flink