赛事对于直播平台来说,就像是一次次“双十一”的大考。虎牙海外服务的区域遍布全球,对于赛事直播可以说每时每刻都在发生,面对流量的突增,除了需要资源的自动扩容,数据库也要满足实时响应。
虎牙直播一直有一个理念,用不同的数据库来解决不同的业务问题,也就是我们常说的专库专用。
虎牙海外业务平台技术负责人马昭表示,现在数据库和数据库之间的耦合性已经越来越低,所以虎牙会根据不同的业务场景来选择不同的数据库。
目前虎牙海外在自建数据库的同时,还使用了亚马逊云科技的多款数据库来完善整个数据库体系,支撑虎牙海外业务的发展。
重新审视数据库体系
虎牙公司是一家以游戏直播为核心业务、致力于打造全球领先直播平台的技术驱动型内容公司,虎牙一直秉持着技术驱动娱乐的理念,积极将新技术应用于直播领域,实现行业首个虚实同台的AR互动直播。
虎牙旗下有两款旗舰产品,分别是面向国内的虎牙直播和面向海外的Nimo TV。Nimo TV是虎牙2018年进军国际市场推出的海外产品,其先后进入了东南亚和拉丁美洲等地区。
目前虎牙直播的MAU(月活跃用户人数)已经突破1.78亿,2020年Nimo TV的MAU也突破了3000万。
虎牙在全球化的快速发展过程中,也对数据库提出了三个要求,首先是成熟稳定,因为数据库的稳定性直接决定着云上业务的稳定性;其次是易于扩展,海外业务的扩展速度较快,需要快速进行数据库的扩展;最后是需要兼容已有的架构,国内虎牙基础平台和构件需要直接部署在海外与数据库实现无缝对接。
所以虎牙海外开始对整体数据库体系进行重新审视,设计一个满足需求的数据库体系。
虎牙海外数据库的变迁
发展海外业务,关系型数据库的改造可以说首当其冲,因为虎牙海外的业务数据正在成爆炸式增长,MySQL显然已经不能满足虎牙海外扩展的需求。
虎牙海外也做了一个大胆的决定,使用Amazon Aurora替换传统MySQL,将交易信息、主体信息、主播开播记录、用户信息等迁移到Amazon Aurora。
Amazon Aurora也为虎牙海外带来了四方面好处:
第一,性能提升,传统MySQL提升读写性能需要做分库分表,但这也对聚合查询造成挑战,Amazon Aurora可以节省大量分库分表工作,让研发人员可以聚焦在主营业务上;
第二,易于扩展,虎牙海外流量变化非常迅速,需要频繁的扩容与缩容,Amazon Aurora可以自动扩容缩容,使成本节约50%;
第三,全球化,虎牙海外用户分布在不同国家,用户的访问延迟较高,要提升用户体验就需要数据能够就近访问,Amazon Aurora的物理同步方式,很好地支撑了数据的全球化;
第四,维护与迁移,Amazon Aurora的维护相较MySQL更为简单,很多API可以方便的接入到公司的运维体系进行监控和规划,同时完全兼容MySQL无需代码更改。
虎牙海外业务有一个突出特点就是流量突增,遇到节日会有大量主播上线,对于业务也造成很大的压力。
“Amazon DynamoDB则可以很好的应对流量的突增。”虎牙海外业务平台技术负责人马昭说道,主播在开播时会向订阅用户推送开播信息,开播推送具有业务量变化快、低峰与高峰数值跃动大、难于预测与预留资源、订阅关系分布不均匀、实时性要求高的特点。
具体的推送过程是离线消息网关会接受主播的开播消息,消息会主动分发到集群,读取订阅关系的存储,组装成一条条推送,最终推送到用户手机上。
使用Amazon DynamoDB作为订阅关系的存储,可以做到自动扩容,轻松应对10倍以上推送流量突增,而且无服务器架构可以让我们不用关注底层基础架构。
全球化的业务对于虎牙而言,需要进行全球同步,提升用户体验、降低物理延时。所以虎牙海外开启了内存数据库全球化的进程,通过使用Amazon ElastiCache for Redis版本存储传统的数据缓存、用户和主播的状态等数据,提供低延迟的数据本地读取,实现内存数据的全球复制。
而且虎牙海外还是使用一个比较特殊的数据库Amazon Neptune来标定直播欺诈行为。马昭指出,Amazon Neptune是一款图数据库,主要存储搜索多度关系,可以让查找更加方便,可以快速对欺诈主播和欺诈用户进行标定,只要标定一个主播就可以把整个利益链条的主播和用户全部找出来,实现风险的防控。
未来,虎牙海外还会在云游戏领域不断进行探索,所以也会尝试不同的数据存储和同步方式对云游戏进行支持,同时将用户和游戏数据分离,通过全球化同步支撑全球同服。在数据库层面虎牙海外还要打造更加灵活和弹性的数据库应用应对流量的突增,像AI在数据库弹性中的应用,预测流量的变化,以及无服务器化数据库应用,在动扩缩容实现降本增效。
好文章,需要你的鼓励
临近年底,苹果公布了2024年App Store热门应用和游戏榜单,Temu再次成为美国下载量最多的免费应用。
云基础设施市场现在已经非常庞大,很难再有大的变化。但是,因为人们可以轻松地关闭服务器、存储和网络——就像开启它们那样,预测全球云基础设施开支可能非常困难。