背景

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

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

 

定义与术语

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

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

 

 

面临的技术挑战

业务场景需求:

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

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

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

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

时钟

  • 原子钟
  • 向量时钟
  • 逻辑时钟

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

网络模式

  • 同步网络
  • 节点同步执行
  • 消息延迟低
  • 全局锁
  • 半同步网络
  • 节点同步执行
  • 消息延迟中
  • 全局锁条件放宽
  • 异步网络
  • 节点独立执行
  • 无全局锁
  • 消息延迟高

 

 

理论与算法

理论

  • 分布式一致性: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

 

架构原则

高可用

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

高并发

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

 

常规的分布式架构 分布式架构是什么意思_高并发

 

 

 

 

https://github.com/loveseaone/docs.git