荔枝架构演进历程读后感

荔枝,致力于打造声音处理平台,帮助人们展现自己的声音才华。荔枝集录制、编辑、存储、收听、分享于一体,依托声音底层技术积淀,具有声音节目录制功能,可在手机内完成录音、剪辑、音频上传和语音直播。简单理解,荔枝APP上有很多主播,主播和用户之间可以通过声音互动。目前,荔枝APP月均活跃用户达到好几千万,月均活跃主播达到好几百万,全球注册用户和音频节目数量都已过亿。

架构演进时间轴:

2013年:单体架构

2014年:垂直架构

2015年:分布式架构

2016年:分布式数据库中间件

‍‍2017-2018年:监控体系

近两年踩过的“坑”以及应对措施

  1. 1.  大主播开直播,访问量爆涨,影响了其他直播间的直播效果。
  2. 2.   在高并发环境下,Mysql 查询性能成为瓶颈。分布式数据库中间件作了扩展,在操作mysql时,在数据库上层加入缓存memcached后,大大提高了查询性能,并且自动维护缓存和数据库数据的一致性。
  3. 3.   访问量上涨,受日志文件的IO影响。
  4. 4.   随着业务的发展,系统的整体访问量越来越大。
  5. 系统间异步消息通知功能不完善。通过redis来做异步消息通知,好处是比较轻量化,但是随着数据量增加,大数据传输增多,出现多个消费方需要消费相同消息的时候,redis 就不是很适用了。这时,使用 kafka可以满足系统间消息通知、大数据量传输、多个消费者消费相同消息的场景。
  6. 6.   当服务框架中的各种功能都比较完善后,却发现缺少一个报警功能。
  7. 7.   随着服务的增多,每个服务都有很多实例,导致整个架构的调用链路不清晰。引入skywalking 实现调用链跟踪功能后,能快速定位到线上故障和整个架构的性能瓶颈。
  8. 8.   主要是更新服务的问题,上线/重启服务操作很原始。通过jenkins + gitlab,接入自动发布平台,实现自动打包、一键发布。
  9. 9.   服务发布流程不够规范。

10. 研发规范不够标准。一个技术团队从10几个人发展到几百人甚至上千人的时候,规范很重要。为了提高效率,公司制定了各种标准的开发/操作规范,包括客户端开发规范、服务端开发规范、测试规范、运维规范、mysql、redis、kafka、mongoDB 等的使用规范。

总结:

好的系统不是设计出来的,而是演进出来的。

 

posted @ 2019-05-06 15:22  Ayeah~夭夭  阅读(146)  评论(0编辑  收藏  举报