荔枝架构实践与演进历程

  好的系统不是设计出来的,而是演进出来的。荔枝APP,致力于打造声音处理平台,帮助人们展现自己的声音才华。荔枝集录制、编辑、存储、收听、分享于一体,依托声音底层技术积淀,具有声音节目录制功能,可在手机内完成录音、剪辑、音频上传和语音直播。简单理解,荔枝APP上有很多主播,主播和用户之间可以通过声音互动。目前,荔枝APP月均活跃用户达到好几千万,月均活跃主播达到好几百万,全球注册用户和音频节目数量都已过亿。那么,对于有着大用户量的社交APP来说,荔枝APP的背后架构该如何设计?它的成功经历了什么演进历程?

  单体架构,主要特点是APP 直连服务器,服务端是单体架构。也就是说,一个服务,一个存储解决所有问题。这种架构看上去简单、粗暴,好处是快速上线、快速响应市场需求;但劣势也非常明显,APP直连服务器模式在扩展的时候非常不灵活。项目上线后3个月,用户数突破 100万,访问量上涨,服务器压力增大。

  垂直架构,虽然,这个时候已经能做到相对快速交互,但是依然存在很多问题。一个是,后端服务水平扩展时,不能动态化;另外,系统间采用 http 交互时,通讯效率较低,并且数据包较大;还有一个问题是,json 解析速度较慢、体积较大。所以使用 LVS 集群解决了分发请求,但是随着业务的快速发展,人力资源都投入在业务开发上,对第三方产品了解也不够深入,导致运维成了最大挑战。所以,后期考虑采用自己开发代理服务来取代 LVS。另外,还有一个挑战是,随着用户量、访问量的持续上涨,系统访问压力依然很大。接下来的目标是,app server 与后端服务需要按业务垂直拆分。演化到V5.0版架构的时候,所有服务已经能够按业务拆分,可支持水平扩展,整体架构能抗得住一定的访问压力。2014年10月,用户量曾突破 1千万。

  分布式架构,这时候的特点是app server、后端服务、代理层等,都实现了配置热更,能灵活水平扩展。到2015年9月,用户量曾突破 5千万。但是面临的问题依然很多。比如:mysql、redis 操作的重复代码太多;mysql、redis 慢操作不能及时报警;各个服务的数据源配置分散,难以管理等。另外,还涉及跨机房数据操作和数据同步问题。而分布式数据库中间件可以很好地解决这些问题。

  分布式数据库中间件,这时,开发团队自研了分布式数据库中间件data store服务。data store的特点是:简单易用,可减少重复代码。只需要在类上加上注解,就可以实现与数据库的交互、数据转换等功能,大大减少了开发的工作量。另外,data store具有自动维护缓存和数据库表的对应关系、自动维护缓存与数据库数据的一致性的功能。最重要的是,屏蔽了服务对数据源的管理,便于数据库的迁移和扩容等操作。

  监控体系,整个架构已趋于完善,重点引入第三方产品,建立监控体系,完善对服务器资源、业务、跟踪链路等的监控,同时也扩展了分布式服务框架功能。也是从这个时候开始,整个架构迎来了V8.0版。经过完善后,业务监控及基础监控功能已比较完整,分布式服务框架扩展了接口缓存、熔断、降级、过载保护等功能。

文章来源:

https://mp.weixin.qq.com/s?__biz=MzA5MDc1ODQxMw==&mid=2653325500&idx=1&sn=efa02d6e6010f6e1a942e949d13cd075&chksm=8bd4e4debca36dc82e8bf757f829747a128c428f4c62c87388d8f17887519075dd957d727045&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/news1997/p/10630620.html

云时代架构之荔枝架构实践与演进历程相关推荐

  1. 乾坤 微前端_拥抱云时代的前端开发架构——微前端

    微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员.团队的增加,从一个普通应用演变成一个巨石应用(Frontend Monolith),随之而来的应用不可维护的问题.这类问题在企业级 ...

  2. 微信强大后台架构从0到1的演进历程

    阶段一:从无到有 2011.1.21 微信正式发布.这一天距离微信项目启动日约为2个月.就在这2个月里,微信从无到有,大家可能会好奇这期间微信后台做的最重要的事情是什么? 我想应该是以下三件事: 1确 ...

  3. 荔枝架构实践与演进历程

    黄全,荔枝APP架构师.拥有10年的互联网开发经验,对分布式系统.高并发解决方案有着丰富的实践经验,在国内知名互联网企业担任过资深工程师.系统架构师等职.曾就职于UC浏览器.春笋新科技.现任荔枝资深工 ...

  4. 《荔枝架构实践与演进历程》读后感

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

  5. 荔枝架构实践与演进历程阅读心得

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

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

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

  7. 征战云时代,为什么安全是关键命题?

    从左到右:李亮(主持人).张美波.蒋涛.韦青 扫描上方二维码直达精彩回顾 整理 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 全球数字化转型浪潮不断推进下,企业上云步伐加快,在这个过程中不 ...

  8. APM,云时代的应用性能优化神器

    我们都知道,当今的时代是一个新技术蓬勃发展的时代:大数据.云计算.移动互联网.物联网--作为应用服务开发者的我们,有了很多很好的选择:我们的传统的应用基础架构也开始向云端迁移:我们看一下,现在企业应用 ...

  9. 云时代的应用性能管理(APM)

    我们都知道,当今的时代是一个新技术蓬勃发展的时代:大数据.云计算.移动互联网.物联网--作为应用服务开发者的我们,有了很多很好的选择:我们的传统的应用基础架构也开始向云端迁移:我们看一下,现在企业应用 ...

最新文章

  1. 代码即财富之我学Java对象序列化与反序列化(2)
  2. Linux下mysql5.1修改密码,Linux下MySQL忘记密码
  3. 顺序图中页面、窗口等为什么当做类处理?
  4. 简单php文件编写语法
  5. 《深度学习Python实践》第22章——文本分类实例
  6. Atitit datatype 数据类型 目录 第一章 三大基本类型 数字 字符串 bool 1 第二章 基本类型vs引用类型 1 字符串类型 2 第三章 符合类型vs 简单类型 2 特殊类型
  7. 连接程序,汇编程序,编译程序和解释程序
  8. Ubuntu20破解管理员root密码忘记密码找回
  9. 你为什么那么努力还是不开心!
  10. FPGA智能网卡功能剖析
  11. 【Tips】如何批量安装和导出Python项目的依赖库?
  12. 夜神模拟器安装激活面具magisk教程
  13. Android 8.0 手机亮灭屏
  14. 【UCIe】UCIe NOP 介绍
  15. 一九产业AI速写:工业篇
  16. 做设计这么久,UED/UXD、IXD、GUI到底是什么?你分清了吗
  17. DEFCON CTF 2017圆满收关,三支中国战队闯入全球前五
  18. Linux 下进程相关的常用命令汇总
  19. jmeter接口自动化,你敢想,我敢玩
  20. pychram 配置清华镜像源_教你如何给树莓派更换软件源

热门文章

  1. MySQL二进制日志(binlog)开启、查看、截取
  2. 【漏洞复现】Microsoft Office MSDT 远程代码执行漏洞 (CVE-2022-30190)
  3. excel 公式规则
  4. 浅析 SQL Server 的 CROSS APPLY 和 OUTER APPLY 查询 - 第一部分
  5. 高财商的Maze迷宫勒索病毒组织,才出道一年就赚的盆满钵满
  6. 使用XML封装数据库操作语句的实现
  7. 使用深度学习来识别 captcha 验证码
  8. 银行核心系统软件开发 转
  9. Linux配置JDK(非root用户没有JDK,需切换到root用户)
  10. 情人节送女朋友什么礼物最好?这四款数码好物不能错过