感悟:荔枝架构实践与演进历程

荔枝,致力于打造声音处理平台,帮助人们展现自己的声音才华。荔枝集录制、编辑、存储、收听、分享于一体,依托声音底层技术积淀,具有声音节目录制功能,可在手机内完成录音、剪辑、音频上传和语音直播。

简单理解,荔枝APP上有很多主播,主播和用户之间可以通过声音互动。目前,荔枝APP月均活跃用户达到好几千万,月均活跃主播达到好几百万,全球注册用户和音频节目数量都已过亿。

那么,对于有着大用户量的社交APP来说,荔枝APP的背后架构该如何设计?一个时间轴可以概括整个架构的演进过程。

大主播开直播,访问量爆涨,影响了其他直播间的直播效果,比如出现卡顿、进入不了直播间、接口超时。举个例子:李易峰晚上8点在荔枝APP上做直播,那么从8点前开始,整个系统的访问量就会比平时要高出很多。有用户就会出现进入直播间慢、评论出现慢以及其他体验不好的情况出现。像这样的问题,应该如何解决呢?

第一个方案,也是最简单的方法,是“隔离”。在 data store 中,针对 redis 存储开发,按前缀分片的功能,对大主播的直播数据进行隔离,避免影响其他主播的直播效果。

 

第二个方案是,在高访问量期间,结合分布式服务框架中开发的熔断、降级、过载保护等功能,采取对部分非关键服务做降级措施,避免服务器因访问量过高发生雪崩。

在高并发环境下,Mysql 查询性能成为瓶颈。当数据量呈现爆发式增长,Mysql 查询速度变慢。我们对分布式数据库中间件作了扩展,在操作mysql时,在数据库上层加入缓存memcached后,大大提高了查询性能,并且自动维护缓存和数据库数据的一致性。

随着服务的增多,每个服务都有很多实例,导致整个架构的调用链路不清晰,也不能预知整体架构存在的瓶颈。引入skywalking 实现调用链跟踪功能后,能快速定位到线上故障和整个架构的性能瓶颈。

好的系统不是设计出来的,而是演进出来的。未来,荔枝的系统架构会更加完善,在不断探索中更加精进。

 

 

 

原文地址:https://www.cnblogs.com/xiaohaigege666/p/10581094.html