互联网分布式架构
2024-03-17 22:25:45 0 举报
AI智能生成
互联网分布式架构是一种设计方法,用于构建高可用性、可扩展性和容错性的互联网应用程序。它将单个应用程序拆分为多个独立的服务,每个服务都可以单独部署、扩展和维护。这种架构有助于提高系统的可伸缩性,降低故障风险,并能更好地适应快速变化的业务需求。
作者其他创作
大纲/内容
分布式架构基础
网络通信
netty
thirt
mina
网络安全
序列化/反序列化
jdk
不能跨语言
占用空间过大
protobuff
kylo
二进制序列化
json
xml
hessian
分布式三围
性能
吞吐量
系统在一定时间内可以处理的任务数
qps
即查询数每秒,用于衡量一个系统每秒处理的查询数
QPS: 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。
可以理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。
可以理解在server中有个counter,每处理一个请求加1,1秒后counter=QPS。
tps
,即事务数每秒,用于衡量一个系统每秒处理的事务数。这个指标通常对应于写操作,越高说明对写操作的支持越好
响应时间
完成时间
系统真正完成一个请求或处理需要花费的时间
可用性
某功能的失败次数与总的请求次数之比来衡量
允许部分组件失效的情况下,一个系统对外仍能正常提供服务的概率
可靠性
一个系统完全不出故障的概率,更多地用在硬件领域
可扩展性
特性
分布式系统通过扩展集群机器规模提高系统性能 (吞吐量、响应时间、 完成时间)、存储容量、计算能力的特性,是分布式系统的特有性质
横向扩展
增加机器的方式去水平 / 横向扩展系统规模
垂直扩展
垂直 / 纵向扩展指的是,增加单机的硬件能力,比如 CPU 增强、内存增大
分布式面临挑战
数据一致性
分布式事务
网络三态
成功
失败
超时
网络分区
分布式定理
cap
base
分布式一致性
强一致性
这种一致性级别是最符合用户直觉的,它要 求系统写入什么,读出来的也会是什么,用户体验好,但 实现起来往往对系统的性能影响大
弱一致性
这种一致性级别约束了系统在写入成功后, 不承诺立即可以读到写入的值,也不久承诺多久之后数据 能够达到一致,但会尽可能地保证到某个时间级别(比如 秒级别)后,数据能够达到一致状态
最终一致性
最终一致性是弱一致性的一个特例,系统 会保证在一定时间内,能够达到一个数据一致的状态。这 里之所以将最终一致性单独提出来,是因为它是弱一致性 中非常推崇的一种一致性模型,也是业界在大型分布式系 统的数据一致性上比较用的多的模型
顺序一致性
服务有无状态
无状态
服务的横向扩展
有状态
zookeeper
需要修改原有配置,才能加入到集群中
eureka
需要修改原有配置,才能加入到集群中
mysql
通信
单工
指数据信号始终沿一个方向传输,并且只能从发送方传输到接收方。发送者只能发送但不能接收,接收者只能接收但不能发送。
http1.1之前 短连接请求完后等待响应. 服务端不能主动推消息
半双工
半双工通信是指数据信号可以双向传输,但是不能同时在两个方向上发送数据,并且必须将它们交替。一个通道只能同时在一个方向上传输
全双工
数据信号可以同时在两个方向上通信
分布式架构挑战
高可用设计(避免单点故障)
分布式一致性
redis-sentinel (raft)
zookeeper(zab)
etcd(raft)
热备.冷备.冗余
多机房部署
同城。异地
cdn(内容分发网络)
应用可用性
fail-fast
监控
硬件
(系统资源)cpu.内存.网络.磁盘
应用层面
负载均衡--集群
负载均衡实现
软件负载均衡
Nginx
apache
硬件负载均衡
F5
Netscalar
负载均衡算法
轮询
iphash
最小连接数
随机
url_hash
权重
高并发设计
分布式事务
Tcc
seta
2pc
3pc
分布式id
leaf
snowflake
分布式锁
redis
zookeeper
数据库
服务幂等
服务无状态
服务负载均衡
ribbo
服务降级
服务限流熔断
hystrix
sentinel
服务灰度发布
分布式一致性算法
raft
redis
nacos
etcd
paxos
zab
zookeeper
分布式组件选型
应用网关
nginx
zuul2
spring cloud gateway
openrestry
kong
注册中心
consul
zookeeper
nacos
eureka
分布式定时任务
xxl-job
quartz
elastic-job
监控系统
zabbix
prometheus
elk
influxdata
分布式协调组件
zookeeper
etcd
数据同步
cannal
分库分表
sharding-jdbc
spring AbstractRoutingDatasource
mycat
消息队列
kafka
rocketmq
zeromq
activeMq
rabbitmq
pulsar
调用链
cat
pinpoint
sleuth+zipkin
skywalking
熔断组件
sentinel
hystrix
resilience4j
配置中心
zookeeper
apollo
nacos
spring cloud config
disconf
缓存
分布式缓存
redis
数据结构
list
string
sorted set
hash
set
bitmap
geo
持久化
aof
rdb
典型问题
缓存雪崩
大面积的热点key过期
缓存穿透
缓存.db均不存在
缓存击穿
单个热点key过期
memcache
缓存读写策略
旁路缓存
服务端需要同时维系 DB 和 cache,并且是以 DB 的结果为准。(读:读缓存,缓存不存在,由db置入缓存,写:先更新db,再删除缓存)
读写穿透
Read/Write Through Pattern 中服务端把 cache 视为主要数据存储,从中读取数据并将数据写入其中。cache 服务负责将此数据读取和写入 DB,从而减轻了应用程序的职责 (读: 先读缓存,缓存不存在,读取db;写:写缓存,由缓存服务去更新db同步)
mysql innodb redo log cache
binlog
异步缓存写入
Read/Write Through Pattern 中服务端把 cache 视为主要数据存储,从中读取数据并将数据写入其中。cache 服务负责将此数据读取和写入 DB,从而减轻了应用程序的职责(异步写入db)(读: 先读缓存,缓存不存在,读取db;写:写缓存,由缓存服务去更新db异步))
mysql buffer pool (dirty page)
jvm缓存
caffeine
google guava
限流算法
令牌桶
漏桶算法
固定窗口计数器算法
滑动窗口
spring-boot
spring-boot-start 组件
五大特性
springapplication
actuator
自动装配
内嵌servelet容器
外部化配置 enviroment
事件
Enviroment抽象
spring-cloud-netflix体系
服务注册发现
eureka
zookeeper
nacos
consul
服务负载均衡
ribbo
声明式服务调用
feign
服务限流.熔断
hystrix
微服务网关
spring-cloud-gateway
zuul
分布式配置管理
nacos
apollo
zookeeper
链路追踪
sletuh
pipoint
skywalking
分布式一致性算法
zab
raft
https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/selective-repeat-protocol/index.html
https://raft.github.io/raftscope/index.html
paxos
spring-cloud-alibaba
高并发
特点
瞬时并发访问量非常高
读多写少,而且读操作是简单的查询操作
示例
https://time.geekbang.org/column/article/307421
分布式id
特点
全局唯一,绝对不会出现重复的ID,且ID整体趋势递增。
高可用,服务完全基于分布式架构
单调递增(保证下一个ID一定大于上一个ID)
信息安全
组件
UUID(36位)
8-4-4-4-12
数据库
redis
开源组件
传统雪花算法
缺点
强依赖系统时钟
结构
最高位 1bit
41位时间戳
10 机器/机房id
每个时间戳的自增序列 12
seata改良版雪花算法
不依赖系统时钟
美团leaf算法
百度UidGenera
0 条评论
下一页