
7月14日晚间,周杰伦最新专辑《最伟大的作品》在QQ音乐正式上线,立即成为全网最大的热点事件。作为一张“六年等一回”的新专辑,《最伟大的作品》于7月8日开启预售,截止到7月18日,已在QQ音乐售出超500万张。
当全国人民沉浸在音乐的狂欢中,对于QQ音乐团队来却有着更多的涵义:海量的数据意味着更高标准的数据分析业务,底层的数据库,将迎来流量峰值期间的高并发和快速响应挑战。同时,如何通过用户行为以及音乐内容标签数据,深入洞察用户需求,为亿万用户带来更优质的音乐体验?是对QQ音乐大数据团队的挑战以及机遇。
作为一款国民级音乐应用,QQ音乐月活跃用户人数超过2.2亿,周杰伦又是其最具号召力的歌手。从流量数据来看,专辑同名先行曲MV《最伟大的作品》在QQ音乐发布15分钟,播放量超120万次,上线仅1小时47分,播放总量突破600万次,分享总次数突破20万,评论总次数突破12万,MV巅峰榜达成1000万等级认证,均打破QQ音乐MV单日数据历史纪录。
从这也可以看出,作为音乐类应用,QQ音乐坐拥海量数据,而且业务场景较多。大体来看,新音乐数字专辑上线,对于数据库来说可能面临如下挑战:
首先是高并发低延时的需求,活动开始的时候会有大量用户瞬间同时访问同一个歌手、同一首歌或者同一张专辑的信息,这就需要解决数据库热点更新、高并发低延迟的问题。
其次是数据库快速扩缩容的需求,因为活动时间紧,瞬间并发量高,需要数据库能够快速支持多倍性能。
最后是数据海量存储和数据安全性的需求,由于订单数据和日志流水非常多,且数据不能丢失,需要数据库既能保证数据安全又能支撑海量数据的存储。
QQ音乐数据库运维负责人赵新强说,此次周杰伦专辑发布活动涉及到的数据库主要是售卖专辑的订单库,在专辑预售和正售时会有大量订单同时写入和更新数据库,对数据库的性能和一致性要求都较高,数据不能丢失,还需要保证高性能查询、写入和更新。
此种背景下,QQ音乐的数据库整个架构需要更安全、更稳定的服务模式。而腾讯云企业级分布式数据库TDSQL正好满足了本次活动的需求。
TDSQL支持强同步、半同步、异步三种同步方式,且强同步的性能基本接近异步复制方式。在周杰伦新专辑上线这一场景下,TDSQL的强同步正好满足了该场景的需求。另外,TDSQL支持主备快速切换和快速增加分片和副本,在对业务透明的情况下快速扩容了多个分片和副本,即时满足了活动的要求。压测过程中也出现了多个副本和分片集中在少数几台设备的情况,通过主备切换和数据快速搬迁后,平稳和快速地解决了该问题。
QQ音乐打造了“听、看、玩”的立体泛音乐娱乐生态圈,为累计注册数在8亿以上的用户提供多元化音乐生活体验,优质服务的背后,是每天万亿级新增音乐内容和行为数据,PB数据量级的数据计算服务。经过QQ音乐和腾讯云数据库双方技术团队无数次技术架构升级和性能优化,逐步形成高可用、高性能、高安全的计算分析平台。
“音乐的业务场景较多,单一的数据库架构不能完全满足业务需求,所以针对不同的业务场景,我们选择了不同的数据库架构”,QQ音乐数据库运维负责人赵新强说, QQ音乐借助TDSQL的分布式能力部署了一主一从、一主多从的数据库集群;针对核心业务,采用腾讯云原生数据库TDSQL-C的全球数据库架构,实现了多地容灾节点部署,在性能、成本和数据安全上均衡使用,满足不同业务的需求。
如今,QQ音乐接入腾讯云数据库已有两年多的时间,整体数据规模已超过100T。就业务场景来说,QQ音乐主要的特点是离线分析场景较多,在日常的运维过程中会经常遇到一些数据库性能相关的疑难杂症或者组件管控的问题,腾讯云数据库团队能够及时地响应解决。
在数据库的管理中,QQ音乐主要面临以下几个问题:
一是随着日志、流水、订单类的业务数据不断增长,原生的MySQL集中架构需要不断的进行分库分表,DBA工作量大,且对业务逻辑需要适配,TDSQL 支持自动水平拆分,能很好地解决该类问题;
二是随着业务的增长,开发的DDL需求不断增多,通过腾讯云原生数据库TDSQL-C提供的Instant DDL内核能力,1秒内完成原先需要几十分钟甚至小时级别的变更,极大提升了DBA的运维效率;
三是DBA日常频繁应对各种慢查询、低性能的排查,TDSQL的扁鹊DBbrain平台通过对数据库实例各项指标进行综合分析和诊断,能够快速准确的找到数据库的性能瓶颈。
目前,QQ音乐业务在多种数据库架构的基础上,满足了实时动态、最新评论、置顶等多业务功能,跨城读取毫秒级延迟,且支持活动弹性扩缩容,轻松应对千万级别用户基数的高并发读写,管理更轻松,更专注业务。
当前,云端大数据基础设施产品以其技术开放性、全链路覆盖、灵活性获得了互联网企业数据IT团队的一致认可。借助于云端大数据基础设施推动业务创新、运营创新已成为互联网企业的共识。
赵新强表示,目前QQ音乐处于自研上云的阶段,未来的主要方向是借助腾讯云完善的基础设施和服务脱离底层繁琐、基础的运维工作,将更多精力深入业务,另外QQ音乐也会不断建设自动化运维系统和工具,逐步向数据库智能化运维努力。
在这方面,腾讯云原生数据库TDSQL-C基于计算存储分离的架构,提供HTAP、极致弹性扩缩、海量分布式存储等能力,同时具备智能运维平台、Severless版本等标准统一的产品服务方案,可全方位满足QQ音乐及业务的各类需求。
腾讯云数据库智能统一管控平台,可让数据在不同引擎之间自由流动,更好地支持业务快速发展。具体包括:以丰富的接口能力,支持系统实现不同应用场景灵活调用、一键运营;实现90%常见故障秒级诊断及SQL优化建议的智能运维体系,大幅降低系统运维复杂度;基于多源同步工具,实现多引擎数据秒级同步,对业务屏蔽引擎差异;实现插件式负载均衡管理,进一步提升可用性。
QQ音乐通过腾讯云数据库的全栈服务,满足了AP、TP全场景需求,支撑着千万用户的订单、评论等核心业务,从大数据基础设施、全链路数据工具链、领域数据价值应用在内的各个环节,互利共赢,释放多元数据价值。而这也正是周杰伦新专辑带来的启示,对于互联网企业来说,需要采用集数据安全、高性能、高弹性、易扩展等多种能力于一身的数据库,才能帮助更有效地应对未来发展。
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立