文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

2023-06-04 11:52

关注

内容来源:DevOps案例深度研究第4期 – B站 DevOps实践研究战队(本文只展示部分PPT及研究成果,全程视频请移步文末)转载请注明出处。

本案例内容贡献者:曹坤良,董沙莎,过佳昱,廖定,李晶晶,李思源,欧美玲,任广印,Ruth,姚丹,张楠

IDCF指导老师:徐磊、姚冬、王立杰、许舟平

原文首发于「老广的印记」

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

Bilibili简称B站,是中国年轻人聚集的文化社区
月活跃用户量 1.28亿人
18-35岁用户占总用户数78%
(数据来源:2019年Q3财报)

一、文化和历史


B站,被粉丝昵称为“小破站”,为中国年轻一代高度聚集的文化社区和视频平台,深受年轻用户的喜爱。经过十年多的发展,围绕用户、创作者和内容,构建了一个源源不断产生优质内容的生态系统 ,B站已经成长为一个涵盖7000多个兴趣圈层的多元文化社区。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
B站原名叫:Mikufans弹幕网。最早的雏形是“初音未来”的粉丝交流社区。于2010年1月改为提供视频资源的网站,并正式改名为Bilibili。
哔哩哔哩的名字来源于《某科学的超电磁炮》,创始人徐逸是这部动漫的狂热粉丝,女主角御坂美琴用硬币打出电气系技能超电磁炮发出的声音像Bilibili,徐逸觉得这个名字好听又好记,所以将Mikufans改名为Bilibili。而御坂美琴发射电磁炮的硬币,也成为B站现在的通用货币。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
B站企业文化关键词:社区优先,正直诚信,合作共赢,极致执行
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
我们可以看到,B站企业文化关键词第一位的是社区优先,董事长陈睿曾经说过,B站在社区文化建设中的两个初心:

二、社区运营生态

B站2019年的跨年晚会非常成功,收获了非常多的赞誉,在豆瓣的评分高达9.2,截止二月底累计播放量9075万次,弹幕总数294万,最高在线人数8000万,被称为最懂年轻人的晚会。
B站跨年晚会成功的背后 - “B站对于不同年龄的用户画像的深刻理解和把握”。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
B站的用户群体大部分是年轻人,可以看这张统计图,24岁以下的使用人群超过B站用户的的38%。
B站还是中国最大的音乐创作平台之一,中国增长最快的 vlog 社区,中国最大的在线自学平台等等。
这背后最大的原因,就在于B站对于不同年龄段用户的用户画像的深刻理解和把握。
B站最典型用户画像-Z世代。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
报告显示,目前,全球Z世代有24亿人,占全球人口的32%,而在中国,Z世代的用户约占20%。
针对这样的一群金主,B站是如何做的呢?
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
形成了以 " 原创内容 + 用户 + 弹幕 " 的交互方式所构筑的强粘性社区生态环境, 以及由 “UP 主 - 内容 - 社区用户”所组成的循环生态。
这个生态是一个不断自增长的闭环。随着UP主群体的不断扩大,社区内容也向多元化发展,同时又吸引了更多的用户。
B站的这种以内容即社交的“打开方式”,正是B站在年轻人中受到欢迎的主要原因。

三、用户价值为导向的需求管理


下面我们来介绍B站以用户价值为导向的需求管理,前面已经介绍了B站以用户价值为核心的企业文化和运营生态,如何通过产品研发和系统实现呢?首先介绍用户价值为导向的需求管理。
B站的用户价值以业务需求为载体,通过需求分析的筛选,快速地流入到研发并投产上线,并通过上线后的运营和用户来持续优化产品,实现整个业务价值的闭环。遵循DevOps的核心思想,持续快速的迭代反馈,特别是在用户需求的收集分析管理和用户反馈上,凸显出对用户价值的关注。接下来我们重点分析。
首先是用户分析,我们看看B站核心用户画像。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
有了清晰的用户画像,可以分析出B站的需求主要分为视频内容、用户体验、社区文化和氛围环境四类。
需求的收集主要从两个方面:
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
对于需求的优先级排序,B站有自己管理方法。

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

B站采用多种方式来收集用户的反馈,不仅包括了线下渠道的主动收集,而且还通过日志采集、设置埋点等多种手段,线上自动采集运营数据。对于线上的采集,采取了收集用户行为和用户数据的方式,首先与业务方一起绘制需采集业务场景涉及的系统链路,然后系统分布分别在客户端和服务端设置埋点,采集用户行为数据,记录日志。通过新功能灰度上线后目标用户数据采集和分析,形成对需求的快速反馈,持续打磨完善产品。

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
通过以线上与线下相结合的用户反馈收集机制,从用户画像分析、需求筛选排序到持续迭代反馈,用户的价值在DevOps循环中快速流动持续交付,B站实现了以用户价值为导向的需求管理的闭环。

四、高性能微服务实践

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
一开始B站的技术以PHP为主,那时的代码大家喜欢称之为“KFC全家桶”,一套代码包含了所有的东西,包括CDN的管理、转码、多媒体视频的处理等等,都是通过PHP来完成的,当时就是这样一套系统支撑着B站的业务运行。
这么大的一个系统面临着很多问题:
1)代码维护难度大
2)基础架构难以扩展
3)运维复杂
B站成立的基础是一个天才型选手,以前在那套系统加入了一些黑科技的东西,但同时也就限制了公司团队的发展,基于这样的一些重点问题,随着业务的发展和团队的不停增长,解决B站目前面临的这些问题势在必行。

4.1 服务化/微服务化

1)优势
2)挑战
针对业务逻辑进行垂直划分切割,将一个巨大的服务体系,按业务逻辑切割成单元相对独立的服务,如:评论、硬币、稿件、收藏、feed等,服务间依赖标准采用RPC调用。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
(微服务架构)

4.2 RPC框架

B站一开始是以PHP为主流开发语言,后来为了快速支撑业务的发展,Node、Java、Python等开发语言也相继出现,导致B站的核心技术栈无法统一,对于微服务的落地,是兼容所有的语言基于现有架构改造,还是选择统一的技术栈进行重写?B站选择了后者。
归根结底,重写后台工程(主要是账号相关的业务)是哔哩哔哩统一技术栈的一次尝试,至于最后为啥选择了用Go来实现RPC,在2017全球架构师峰会上,毛剑解释很简单:“主要就是我比较喜欢Go”,看似简单的一句回答,其实支撑其选择的原因还在于Go的诸多优势:
又或者说,选择Go非要有个原因么?为什么不能是Go呢?
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
1)B站的RPC框架
2)服务注册与发现Discovery
3)配置中心

4.3 高性能

微服务化以后,曾经的本地调用变成了远程调用,曾经的多节点对等变成了分布式的多节点,部署越来越复杂,调用链条越来越长,跨机房、跨网络、跨机架等都可能造成性能损失。
1)链路加速(客户端&服务端)
2)网关优化(go自研,灵活可控)
3)优化服务部署架构
多个组,小集群方式部署,每个组依赖更少的节点,这样依赖资源有多套,相互之间也达到了隔离的作用。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
(一旦某个服务出现问题,全体受影响)
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
(小集群,多个组,相互隔离,互不影响)

4.4 可用性

1)隔离
2)超时
3)限流
4)容错
5)降级
每个服务自身拥有比较健壮的服务能力,基本每个对外服务在代码层都能兼顾到降级、限流、容错、熔断、安全、健康检测。
通过链路追踪保证,对错误能快速定位和精准定位,降低感知时间和修复时间。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
6)Playbook 运维操作手册
7)运维层面,定期故障演练,确保流程可被正确可靠执行。

4.5 一致性

1)存储一致性
2)服务一致性

4.6 微服务部署发布

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
1)灰度发布 - 染色
RPC meta info & context
serviceA(Red) -> serviceB -> serviceC(Red)
2)灰度发布 - feature flag

4.7 代码管理

青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
通过比对分散式管理方式和集中式管理方式,显而易见,大仓库的优势在于统一版本依赖、增强协作、最大化复用代码以及减少版本不一致所引发的各种线上运营风险。
1)大仓库管理代码带来的好处:
(引自:Google为什么要把数十亿行代码放到一个库中?)
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
同时,大仓库所带来的的挑战也很明显,如何保证安全性,如何防止误操作,如何减少每次checkout代码的时间和编译的时间,B站进行了如下的应对。
1)目录级权限管理
2)统一的构建系统Bazel
3)更高的代码质量要求
4)注重CodeReview,鼓励沟通

五、数据运营

数据产生价值,该部分内容主要介绍B站日志平台、监控平台和数据平台。

5.1 日志平台

基于go自研日志平台Billions,主要由采集、传输、切分和检索四部分构成。该系统打破各个业务研发日志壁垒、规范日志格式、收敛日志接入方式,并统一传输、解析和存储,整个系统高吞吐、低时延、高可用、高可运维性。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究
日志采集agent同时支持服务链路日志采集,随着微服务化,一个请求联动多个微服务,当出现问题时,根据日志里记录的traceId,可快速检索出相关服务调用信息、定位故障。

5.2 监控平台

结束多个监控系统并存局面,基于prometheus搭建统一监控平台,覆盖业务层、应用层、中间件、基础设施层全面监控。开源prometheus存在单点、存储本地受限、配置维护难三个问题,B站基于联邦方式部署prometheus,并将采集到的指标远端存储至influxdb中,关联cmdb获取监控对象,界面化配置告警规则,集中处理告警事件,形成高可用、扩展强、易用监控平台。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

5.3 数据平台

让监控、日志数据产生更大价值,使用AI技术对用户行为日志分析生成用户画像,实现精准推荐;根据流量数据实时计算结果,及时调整渠道投放以达到最优效果等。
B站实时数据平台-saber,解决实时计算开发门槛高、作业管理难、无统一告警及工程开发师和算法工程师之间明确分工问题。saber平台支持BSQL和DAG拖拽式编程,约束输入源schema,规范输出源格式,降低flink开发门槛;同时解决流式Join、维表Join和实时特征等数据处理过程中状态、Timer、sql扩展等难点,让工程无缝对接AI平台。
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

六、结尾

B站十年的风雨路程,是伴随着这一代人一起见证的。B站这十年,也是同这一代人一起成长的。B站的这些用户,既是传播内容的目的地,传播效果的反馈源,更是传播渠道的探寻者,传播动力的新引擎。这类人为B站的内容生态,社区生态乃至产品生态提供了源源不断的动力!
B站坚持的品质导向和价值观优先原则为其平台创造了较高的用户壁垒,以其对用户画像的精准分析,准确把握了用户的诉求,通过以用户及商业价值为导向的需求分析和管理方式,以及日渐完善的监控反馈机制,将用户最关心,最迫切的需求通过最敏捷的技术实现呈现在用户面前,不断迭代不断创新。
虽然B站目前还未盈利,但他展现出来的良性生态循环,未来展现的价值还有更大的想象空间,毕竟:
“一代人终将老去,但总有人正在年轻。”
青春不老 - B站的微服务与持续交付实践|IDCF DevOps案例研究

本文部分配图来源于网络,内容来源于网络和B站分享内容。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯