微博消息系统架构演进
online mq
➢
jar
offline mq
mq DB
➢ ➢
➢
msg + VSpre+VScurrent getset
redis
➢ ➢ + push ➢ ➢ ➢ ➢ ➢
version VC == VSpre?
Y
Update VC = VScurrent
➢ ➢ ➢ ➢
•
•
➢
➢ ➢
/s
➢ ➢
➢ ➢
起步阶段 用户:百万级 DAU:万级
快速发展阶段 用户:? DAU:?
稳定阶段 用户:? DAU:?
高可用阶段 用户:? DAU:?
业务驱动下持续演进的系统
-
•
➢
•
➢ ➢ ➢
-
➢ ➢
➢ ➢
•
➢ ➢
•
➢
•
Master
Slave
-
Cache ➢ Master-Slave Cache ➢ L1 Cache ➢ LocalCache
Local Cache Local Cache Local Cache
L1 Cache
L1 Cache
L1 Cache
Master
Slave
-
-
++C ++T
1 4
➢ ➢ http
http Redis
Memcached
Mysql
•
➢“ —— ➢“ —— ➢ —— ” ”
起步阶段 用户:百万级 DAU:万级
快速发展阶段 用户:千万级 DAU:百万级
稳定阶段 用户:? DAU:?
高可用阶段 用户:? DAU:?
业务驱动下持续演进的系统
➢ ➢
L1 Cache
L1 Cache
L1 Cache
Master
Slave
-
Cache ➢ Master-Slave Cache ➢ L1 Cache ➢ LocalCache
Local Cache Local Cache Local Cache
L1 Cache
L1 Cache
L1 Cache
——C ——T
2 3
C T C=0 T=0
C==0 T==0 C==0 T==1
-
MC Redis Redis Lua Transaction
-
Redis
—gincr ➢ ➢ ➢ gincr
redis API Facade
50W key/s
7 9
•
➢ ➢ ➢ ➢ ➢ Cache
起步阶段 用户:百万级 DAU:万级
➢ ➢
-
http
➢ ➢ ➢ ➢ eg. SAS->SSD)
Queue
jar
Cache
SSD
SSD
SSD
dm1
dm2
chat1
chat2
biz1
biz2
-
Cache ➢ Master-Slave Cache ➢ L1 Cache ➢ LocalCache
Local Cache Local Cache Local Cache
N
VC = VScurrent
•
➢ ➢ ➢ ➢
起步阶段 用户:百万级 DAU:万级
快速发展阶段 用户:千万级 DAU:百万级
稳定阶段 用户:亿级 DAU:千万级
高可用阶段 用户:数亿级 DAU:数千万级
业务驱动下持续演进的系统
➢
➢ ➢ ➢
design for failure)
API 1
offline mq
mq DB
-
➢ wesync —— —— —— —— ——gzip ➢ Http Tunnel ——wap ——tcp failover
http
tcp
http tunnel
User A User B Device A User B Device B
API Facade
API 2
API 1
API Facade
API 2
Network
Network
-
➢ ➢ ➢
& eg. or
➢
-
➢ ➢ ➢ ➢
Redis Lua
Kafka
-
➢ ➢
➢ ➢
➢ ➢ ➢
-
Docker ➢ ➢ 1000/10min -DCP
•
➢ ➢ ➢ ➢
快速发展阶段 用户:千万级 DAU:百万级
稳定阶段 用户:亿级 DAU:千万级
高可用阶段 用户:? DAU:?
业务驱动下持续演进的系统
➢ ➢ ➢
➢
User A User B Device A User B Device B
➢
➢ ➢
connector tcp http
online mq
jar
➢
connector tcp
➢
➢
http
online mq
jar
offline mq
mq DB
➢ —— IP ➢ —— —— ➢ —— motan
➢ ➢
User A User B Device A User B Device B
➢
➢
connector tcp http