当前位置:文档之家› 互联网架构设计理念漫谈

互联网架构设计理念漫谈


多维度可用(一)

冗余

分担负载 RoudRobin、Hash HA keepalived,heartbeat,zookeeper 读写分离 主从,异地多数据中心 leader选举
强一致 W+R>N PAXOS投票



容灾备份 全量与增量(Log)
弱一致
Gossip 向量时钟 Merkle tree
Nginx,haproxy
数据库Cache
设备
memcache
mysql
redis
Raid 卡
缓存的失效 抖动 冗余热备 缓冲Buffer 合并,减少写压力

空间换时间(二)

索引

哈希
结合数组和链表实现快速寻址和插入

倒排 搜索领域

B树
以查询为主导,避免多次IO Bitmap 使得存储空间和速度最优化,适合海量数据计算
热备与冷备

CDN
问题

一致性和可用性的衡量(CAP)
多维度可用(二)

依赖关系

模块低耦合
分清主副流程,能异步则异步
一致性要求 push
ACK应答确认事务机制(rabbitMQ)
重试,幂等 Pull LSN(kafka)

透明化

多种级别的监控 时效性要求 实时、分钟、小时统计、实时查询 和业务的隔离,切入点,日志

优化资源利用(一)
ห้องสมุดไป่ตู้
系统容量有限

水池效应,进出平衡
流控
请求排队 告警或者丢弃

连接控制

短连接 长连接 维护长连接是关键(KA) APP云推送(广告营销)

批量

效率优先 传输与确认
优化资源利用(二)

共享资源的访问

同步,一致性
可用性
乐观锁、向量时钟 CopyOnwrite,MVCC
CAS
AtomicInteger i++ 并发控制 Latch门栓、Mutex、信号量

优化资源利用(三)

基于逻辑的不同,采取不一样的策略

计算型和IO型
IO型
单线程减少线程的切换(redis,Nginx),多进程 多线程
自旋spin,减少切换开销
事件驱动异步非阻塞(NIO) 协程,消息传递(erlang)
漫谈互联网架构设计
汉升
易用的设计理念

空间换时间 数据与计算切分 多维度可用 伸缩 优化资源利用
空间换时间 多维度可用
易用
数据与计算 切分 伸缩
· 优化资源利用
空间换时间

多级Cache,静态化

客户端页面缓存
client
反向代理缓存
应用端的缓存(memcache) 内存数据库
伸缩

拆分

一竿子处理方式
体检排队,10个医生 每个医生负责所有的体检项目 每个医生负责一项,比较慢的项目增加医生数

业务逻辑分段、异步非阻塞 分库、分表,路由、TDDL 历史数据迁移(mysql,hbase) 增加节点即可提高吞吐量

无状态


尽量避免分布式事务
缓存
cache、buffer

计算型 多线程并行操作,CPU 核数 同一类型不同业务的资源消耗 合理对逻辑分配节点和线程数量 业务分流,优雅降低,优先执行级别高的任务


优化资源利用(四)

容错隔离

异常状态的请求
禁闭、黑名单

跨网,重试考虑

资源释放

资源始终是有限的 请求的最后,无论是正常还是异常,记得释放资源 超时的考虑

数据与计算切分

数据切分、分而治之(MR)

基于数据分解
无共享架构
本地化处理, 移动计算而不移动

多进程、多线程并行执行(MPP)

基于问题分解 典型代表:分布式搜索引擎,推荐
Coordinator Coordinator
合并
Exec Engine Exec Engine
Store
Store
相关主题