zoukankan      html  css  js  c++  java
  • 荔枝架构演进历程读后感

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

    总结:

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

  • 相关阅读:
    convirt2.5在虚拟机上安装笔记
    myeclipse 自动提示JS
    Hadoop学习之HBase基础知识、操作和原理
    Hadoop学习之HBase的集群环境搭建
    学习面向对象之异常之三
    java学习面向对象之异常之二
    java学习面向对象之异常之一
    java学习面向对象之匿名内部类
    java学习面向对象之内部类
    java学习面向对象之多态
  • 原文地址:https://www.cnblogs.com/lovema1210/p/11045343.html
Copyright © 2011-2022 走看看