IM 架构设计08

微信朋友圈千亿访问量背后的技术挑战和实践总结

IM 架构设计08

IM 架构设计08

IM 架构设计08

 

IM 架构设计08

但重试由于会造成请求的增加,所以是把双刃剑,节日高峰期间由于请求本身涨幅已经很高,重试更容易引发问题,需要进行调整:
 

  • 1)通过master路由下发,关闭重试。在元旦/春节这种请求有数倍增长的节日实行;
  • 2)值班人员严密监控,如果IDC失败率超过20%,则紧急手工关闭重试。这种在中秋/国庆这种增长并不高的节日实行。

IM 架构设计08

IM 架构设计08

业务侧春节要求的增长比例,是上传支持9倍增长,下载支持1倍增长,超过这个比例的请求可以拒绝掉,但根据预算扩容后,达到上图的效果,还是有部分模块无法支持这个涨幅,尤其是压缩compress模块,该模块每支持一倍增长就需要大量虚拟机扩容,预算内无法支持,这样就需要使用柔性策略来解决。

IM 架构设计08

IM 架构设计08

IM 架构设计08

 

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

 

IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

 

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

 

MQ技术选型相关指标

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

事务性消息:

事务本身是一个并不陌生的词汇,事务是由事务开始(Begin Transaction)和事务结束(End Transaction)之间执行的全体操作组成。支持事务的消息中间件并不在少数,Kafka 和 RabbitMQ 都支持,不过此两者的事务是指生产者发生消息的事务,要么发送成功,要么发送失败。消息中间件可以作为用来实现分布式事务的一种手段,但其本身并不提供全局分布式事务的功能。

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08

IM 架构设计08