背景
分布式架构理论的诞生互联网的高速发展,归纳要点如下:
- 高配置的服务器成本太高。
- 应用规模变大,变的复杂起来。
- 性能问题越来越迫切,严重影响了用户的体验,互联网平台是注重用户体验,用户至上。
- 单体应用软件维护成本太高。
- 部署效率低下。
- 代码复用程度低。
定义
分布式架构是指由多个能独立部署的子系统基于网络通讯协议,相互协同来完成业务流程的架构模式。
网络具有三种状态:成功、失败、超时。
分布式架构体系-架构原则
高可用
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