文章插图
1解决移动互联网开发常见问题:
通道:数据交互、大数据上传、push
网络连接:大量长链接管理、链接不上、慢、多地分布
运营支撑:海量监控、简化问题定位
登录&安全:登录鉴权、频率控制
移动互联网特点:
1、高延时: 信道建立耗时( 高RTT)
2、低宽带、高丢包
3、多运营商(电信 , 移动 , 联通等)
4、复杂网络
-2G , 3G , 4G , wifi 。cmwap , cmnet 。。
-网关限制:协议 , 端口
5、用户流动性大 , 上网环境复杂
WNS 性能指标:
文章插图
文章插图
1、开发时间:历史一年半
2、链接成功率-99.9%
3、极端网络环境下成功率-由于常见app
4、crash率 -0.02%(crash次数/登录用户数)
微信后台系统架构
背景:
A、分布式问题收敛
后台逻辑模块专注逻辑 , 快速开发
可能读取到过时的数据是个痛点
需要看到一致的数据
B、内部定义
【微信、陌陌IM软件设计架构详解】数据拥有两个以上的副本
如果成功提交了变更 , 那么不会再返回旧数据
推演:
1增加一个数据
2 序列号发生器 , 偏序
约束:只能有一个client操作
client有解决冲突的能力
问题转移:client如何分布?
3 修改集群中一个制定的key的value
1)覆盖他
2)根据value的内容做修改
if value = 1 then value :=2
通用解法:
1)paxos算法
工程难度
一切可控
分布式算法设计:
2)quorum算法(2011)
再单个key上面运算
真是系统约束
类paxos方案 , 简化
为每次变更选举(by key)
算法过程
提议/变更/同步/广播
系统架构
文章插图
写流程
Replication & Sharding
权衡点
自治 , 负载均衡 , 扩散控制
replication->relation
容灾抵消
同城(上海)多数派存活
三园区(独立供电 , 独立)
Sharding
一组KV6 为一个单位
1、人工阶段
局部扩容 , 影响收敛9
2均匀分布 制定分段hash32 (string)
翻倍扩容
3一致性哈希
具体实现?
1、业务侧快速开发
存储需要提供强一致性
丰富的数据模型支持(结构化、类SQL/KV)
条件读 , 条件写
2 业务增长迅速 , 系统要能够方便的横向扩容
3设备故障/短时节点实效便成为常态 , 容灾自动化 , 主碑可写无需人工介入
4小数据
存储模型
纯内存
Bitcask
小表系统
LSM-tree
文章插图
小表系统
1、解决放大问题
2、数据按变更聚集存储
3、Affected1
ChangeTable
(1+2+ 。。。。+n-1+total)/n
4、分裂与合并
数据流动
1、自动化迁移
2、节点同时做代理
3、合并磁盘io
同步流量
1、数据vs 操作
2、幂等
3、保底策略
通信包量
1、动态合并
100K qps
200% -10%
3、权衡与估算
设计要点
1、吞吐量
2、异步化
3、复杂度
4、libco
自动修复系统
1、不要让错误累计
2、全量扫描
bitcask 的一些变化
1、内存限制
2、全内存
推荐阅读
- 华为交换机软件调测时注意事项
- IPv4和IPv6基本知识点专题分享,带你一分钟全部掌握
- 蝶泳的动作要领
- Java|剖析类内的五类成员:属性、方法、构造器、代码块、内部类
- 利用python微信库itchat实现微信自动回复功能
- 图文教程详解 Windows7系统封装教程
- 安利一款免费、开源、实时的服务器监控工具:Netdata
- 十一8天长假去哪旅游?国内近400家景区免费玩!还有1元、5折……
- 2022修订版 公司微信工作群管理规定
- 普通人不得不知的10个法律常识