网易云音乐技术团队

其他

云音乐贵州机房迁移总体方案回顾

一、背景2023年确定要将云音乐整体服务搬迁至贵州机房,项目需要在各种限制条件下,保障2000+应用、100w+QPS的服务稳定迁移,是云音乐历史上规模最大、人员最多、难度最高的技术项目。在此过程中,解决了大量历史技术债务,同时化解了大量新增系统性风险。以下为总体方案回顾。二、项目难点迁移规模大此次需要云音乐以及旗下独立App的服务均整体迁移至贵州。涉及2000+应用、100w+QPS的稳定迁移,同时涉及中间件、存储、机房、三方依赖服务等整体的搬迁,搬迁规模大。业务复杂度高场景复杂。迁移规模大,带来更广的业务场景覆盖。而不同的场景对数据一致性要求不同、延迟敏感度不同。迁移方案需要考虑各种场景带来的问题,并提供标准化的解决方案。服务间依赖复杂。此次带来约2000+应用的搬迁,各服务间的调用和依赖情况复杂,在分批迁移方案中需要协调,以及解决迁移期间跨机房30msRT上升带来的问题。历史积弊多贵州迁移前,存在诸多历史技术积弊,影响着全站整体的稳定性。新增风险大贵州迁移带来诸多新增风险,且风险大、解决难度高。部分场景无法做到真实环境全流程预演。在基础技术建设上,也有一些不足的情况,影响整体搬迁执行效率、迁移准确性。限制条件严苛云音乐有着大量的用户基数,此次搬迁要求:不停机迁移、不产生P2及以上事故。除此之外还有机器、网络带宽、网络稳定性、网络RT、迁移方案等限制条件。事项推进&协调难度大此次搬迁规模大,同样,参与人员规模大,整体协调难度大此外带来较多的人因风险。可能因极小的细节未执行到位,就会造成全局事故。三、重点限制&要求尽可能少采购或不采购额外的机器,贵州和杭州无法完全对等部署。杭州与贵州的长传带宽控制在200Gbps以内,且存在闪断的可能性,各迁移方案需要重点考虑闪断带来的影响。贵州机房与杭州机房之间网络延迟约30ms,各方迁移方案需重点考虑机房延迟带来的影响。业务可用性要求:不影响核心重点业务场景的可用性,不出现P2及以上事故。控制迁移方案对业务代码的侵入。四、分批方案1.
7月11日 下午 6:01
其他

​Android 居然还能这样抓捕和利用主线程碎片时间

}}到这里,可执行的子任务集就准备好了。子任务智能调度空闲时间切片和子任务集生成后,就可以通知任务调度系统进行子任务的执行调度,在空闲时间切片中插入适合当前时间切片执行的任务,如当前空闲时间切片只有
1月29日 下午 6:00
其他

​云音乐D2C设计稿转代码建设实践

D2C」对于自适应布局识别与还原的支持。对应的解决方案,其实在本文也已经做过介绍,已在内测中,不久就可以和大家见面。我们也会考虑借助大模型技术在例如层级调整、组件识别、逻辑意图识别等方面让「海豹
2023年12月30日
其他

网易云音乐 RN 新架构升级实践

个月的时间,适配同时还需要兼顾各业务线的迭代排期,可能进一步拉长项目时间,并且已有页面还在不断的迭代中,时间越长适配成本就会越高,后期项目可能会失去掌控。针对以上问题,我们经过分析发现除了少量
2023年12月14日
其他

云音乐如何「搭」出新首页

基于GraphQL的云音乐BFF建设实践。我们决定使用其能力,在搭建端可以选择BFF生产的对应数据源,并且在用户访问时自动完成对应的数据组装。同时在搭建端我们也提供了可视化的数据字段选择、mock
2023年10月17日
其他

网易云音乐 Tango 低代码引擎实现揭秘

个核心组成部分,分别是:引擎内核:扶额建立文件,节点模型,提供输入输出能力。拖拽引擎和可视化面板:提供可视化开发能力渲染沙箱:提供源码在浏览器上的编译执行能力。引擎构成借助于
2023年10月8日
其他

网易云音乐 Tango 低代码引擎正式开源!

仓库:https://github.com/NetEase/tango文档站点:https://netease.github.io/tango/欢迎大家加入到我们的社区中来,一起参与到
2023年8月31日
其他

网易云音乐大前端监控体系(Corona)建设实践-开篇

是将能异步实现的功能都通过定时任务来实现,比如告警检测、日志的错误类型分析、反混淆等等,使得同步处理链路最精简,同时及时这些异步任务挂了,也不会影响监控主流程的服务,只是部分功能缺失。⑥
其他

通过 SIL 看 Swift 的方法派发

https://github.com/apple/swift/blob/master/docs/SIL.rstswift-c-llvm-compiler-optimization:
其他

云音乐低代码 + ChatGPT 实践方案与思考

的能力来加速前端应用的开发流程和体验,开发者可以借助于简单的自然语言描述的方式快速生成表单、表格、详情、仪表盘等页面,而无需记忆大量的组件配置和功能点,有效地提升了低代码平台的使用效率。例如,在
其他

iOS云音乐APM性能监控实践

堆栈堆栈格式参考自苹果ips文件,它将多组堆栈聚合到一起展示,通过缩进来表示堆栈的深度,这样即节省了堆栈的存储空间,也便于直观展示多组堆栈信息,还能根据堆栈的命中次数提取出命中率最高的关键堆栈,这对
其他

当我们说插件系统的时候,我们在说什么

从一个吸尘器说起说起插件系统,大家或许会对这个概念感到陌生,但其实不然,这个看似很抽象的概念其实在我们日常生活中有着很多很直观体现。最近我准备购置一台吸尘器,我发现现在的吸尘器已经越来越高端了,一个吸尘器能实现拖地,除螨等众多功能,而这一切,都只需要你通过更换不同的吸头,就能实现。从计算机的视角来看,这个吸尘器其实就是一个功能完备的插件系统,这些吸头,就是他的插件生态。那这样做的好处是什么呢?对于用户来说:使用更为便利,原本需要同时购买很多产品才能实现的功能,现在只购买这一个吸尘器就拥有了。对于厂家来说,那好处就更多了:一方面,降低了实现复杂度,更利于分工协作,核心部门可以专心研发吸尘器的基础功能,可以做到更大吸力,更小噪音,增加自己产品的竞争力,至于吸头可以交给其他部门负责。另一方面还能利用生态,让其他厂家也参与其中帮自己生产各种能力的吸头(这方面戴森就做的特别不错,网上戴森相关的三方吸头特别多),进一步扩大自己的品牌影响力。正是因为有着这么多好处,所以现在大到汽车,无人机,小到吸尘器,或多或少都会有一些功能选装配件,这无一不是插件系统在生活中的体现,那回到我们的计算机世界,插件系统更是被广泛应用在各种工具中,例如:Umi,Egg,JQuery,WordPress,Babel,Webpack……当我们翻开
其他

网易云音乐基于 C2D2C 的「无损」设计协同

套组件库;其次,协作效率低。因为信息损耗的存在,所以,设计和开发需要通过反复沟通来消除不确定性;最后,局部的效率比较低。具体表现在,设计师在做稿时,仍然需要较为频繁的手改文案,调整布局;而开发在还原
自由知乎 自由微博
其他

正则表达式是如何运作的?

题图写在前面在日常的开发工作当中,我们必不可免的会碰到需要使用正则的情况。正则在很多时候通过不同的组合方式最后都可以达到既定的目标结果。比如我们有一个需要匹配的字符串:hello,我们可以通过
其他

Electron 的 GUI 和 Ruby 的 CLI 的一种交互实践

https://developer.oracle.com/zh/learn/technical-articles/1481879245861-56-what-is-ruby[7]Electron:
其他

云音乐 iOS 跨端缓存库 - NEMichelinCache

缓存模块是非常重要的组成部分,对页面的稳定性,页面性能等都有非常大影响,目前云音乐使用的缓存库已经“历史悠久”,没法在现有的基础上来支撑日益庞大的跨端需求,面临着当前架构没法修复的问题:后台
其他

如何实现 iOS 16 带来的 Depth Effect 图片效果

就可以实现,但最后发现没有。如果给的图片是已经分好层的多张图,那么实现就是简单的将时钟控件像夹心饼干一样夹在中间即可。然而实践中发现,网上随便下载的单张图片设置为锁屏背景它也可以达到这种效果。联想到
其他

基于 GraphQL 的云音乐 BFF 建设实践

语句的描述找到需要的节点,调度涉及的接口,最后返回符合查询语句的数据。比如:在上图展示的案例中,我们在(图左)编写了查询语句,(图右)则是引擎执行该查询语句后,在数据图上命中的节点。可以看出,落地
其他

React Native工程Monorepo改造实践

题图图片来自:https://unsplash.com背景目前云音乐内有多个RN收银台场景分布在不同的工程,比如页面收银台,浮层收银台,个性收银台等,后续可能还会有别的收银台场景。那在开发过程中存在的问题就是每个收银台的核心逻辑如商品展示、支付方式展示、下单购买等逻辑都大致相同,而每次有修改或者新增需求的时候都需要开发多次,重复代码较多效率低下。虽然可以通过发npm包的形式复用代码,但是有些组件和代码块不太好抽成包,还会带来调试麻烦,发版等问题。所以为了提高代码复用,提高开发效率,我们希望能够在一个仓库内包含多个工程,也就是Monorepo形式。Monorepo什么是MonorepoMonorepo是一种将多个项目的代码集中在同一个仓库中的软件开发策略,与之对立的是传统的MultiRepo策略,即每个项目在一个单独的仓库进行管理。目前像社区内一些著名的开源项目Babel、React和Vue等都是用这种策略来管理代码。Monorepo解决的问题要想知道Monorepo解决了哪些问题与其优势,我们先来看下MultiRepo存在的问题。当我们在MultiRepo下两个工程之前需要复用一些代码时,往往会采用抽成npm包的形式。但当npm包有改动时我们需要做以下事情:修改npm包代码,通过npm
其他

基于自建 VTree 的全链路埋点方案

但是这个方案的问题是只能处理一些简单事件场景,并且数据平台做xpath关联是一件噩梦,工作量大,最主要的是不稳定,对于埋点数据高精度场景,这个方案不可行(没有哪个客户端开发人员天天花费大量时间查找
其他

React 组件库 CSS 样式方案分析

题图图片来源:https://unsplash.com背景随着业务的发展,一些代码逻辑可能同时在多个项目中使用,为了避免每次使用和更新都要复制粘贴代码,构造一个组件库就十分有必要了。构建组件库有很多需要考虑的方面,本文主要讨论在
其他

Chrome插件:云音乐听歌识曲

商店上存在的听歌识曲插件,大都是国外出品,国内产品寥寥,对于国内音乐支持较差。既然云音乐有这个能力,我们希望将这样的功能覆盖每一个角落,传递音乐美好力量。与此同时市面上的插件大多还是基于
其他

Chrome DevTools Inspector 扩展实践

"/devtools/inspector.html?ws=localhost:9222/devtools/page/ADC97007929236D82B4613E4E6B36C4B",
其他

网易云音乐低代码体系建设思考与实践

项目,探戈是一种优雅的双人舞蹈,隐喻我们致力于为业务研发交付带来的全新体验。云音乐探戈低代码项目的核心优势包括三个方面:基于源代码的可视化搭建能力:它提供了从源码到源码的可视化搭建体验,不依赖特定的
其他

实时增量学习在云音乐直播推荐系统中的实践

的参数估计的置信度相关,出现次数越低置信度越低。如果在纯频率统计基础上加入一个先验分布(正则项),当频率统计置信度越低的时候,越倾向于先验分布,相应的正则系数要更大。以下是经验公式:L_1(w_i)
其他

React Native原理之跨端通信机制

https://github.com/sucese/react-native/tree/master/doc/ReactNative%E6%BA%90%E7%A0%81%E7%AF%87[6]How
其他

Android 隐私合规静态检查

IDEA源码里面的相关模块自己打一个jar。扫描工具的工作流程如图:多APP配置云音乐目前旗下APP比较多,不同的APP也有可能会有不同的扫描类型和不同的关键字规则。配置如下:每个
其他

AGP 升级之旅

toolchains/aarch64-linux-android-4.9/prebuilt/$HOST_TAG/aarch64-linux-android/bin/nm,HOST_TAG
其他

Android 开发,如何写出符合规范的异常处理代码?

抛出的,用来表明不打算由应用处理的严重错误。OutOfMemoryError和StackOverflowError就是典型的例子,这两种情况都是由一些超出应用控制范围的情况导致的,无法处理。
其他

Wakeup in XNU

本文作者:段家顺[1]苹果在iOS13的时候,在内核中加入了一个新的性能衡量指标wakeup,同时由于这个指标而被系统杀死的应用数不胜数,其中也包括我们常用的微信淘宝等。而这个指标完全是由
其他

前端单元测试技术方案总结

断言风格如下expect(foo).to.be.a('string');expect(foo).to.equal('bar');expect(foo).to.have.lengthOf(3);BDD
其他

WKWebView 请求拦截探索与实践

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#body[6]网易云音乐大前端团队:
其他

Android 音频可视化

https://developer.android.google.cn/reference/kotlin/android/media/audiofx/Visualizer[2]傅里叶变换: