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