10年前的B站页面长啥样?
估计很多小伙伴都已经忘记了叭。
作为一个当时刚上大学不久就曾混迹于B站的老二刺猿,那时候还只能刷网页版的B站,当时的页面可能差不多还长这样:
![4d596dd49d743dd7e70e45d214e9a728.png](https://i-blog.csdnimg.cn/blog_migrate/4397787185e4c92724be2bcaabb75e10.png)
还记得那时候B站首页可没有现在这么多分区,现在怎么也得有个十几二十个分区,而当时主要也就是「动画」「音乐」「游戏」「娱乐」「新番」啥的,而且页面也非常简陋。
![7c70d30c6b882b63c0ef7d3073096c9d.png](https://i-blog.csdnimg.cn/blog_migrate/73c60040e8eee897d2ac332fb346e3de.png)
而如今这么多年过去了,一路走来,看着这个社区逐渐发展成今天这般繁荣,不禁心生感叹。
众所周知,哔哩哔哩是一个非常强大的学习平台和社区。每天都有非常多孜孜不倦、爱好学习的小可爱会在上面学习各种有关跳舞、穿搭、二次元、动漫、健身、以及编程等各方面的知识。
但是大家可能不知道,B站其实在技术开源这方面做得也是非常优秀的。
所以今天这篇文章就来做一个大盘点,看看B站开源了哪些非常哇塞的炫酷项目。
![4d1193639973cae7aaa664217d4514cd.png](https://i-blog.csdnimg.cn/blog_migrate/52bceacff25e03771f9b48aebd9596c3.png)
ijkplayer
ijkplayer应该是哔哩哔哩在GitHub上开源的明星项目了,目前为止收获了29k+的Star标星以及7k+的Fork。
![52b2fc3c755f0cca7c366a829e0aee48.png](https://i-blog.csdnimg.cn/blog_migrate/41439a1d211a589cac1d12126b6ee9b2.png)
ijkplayer是b站开源的一款超级好用的跨平台视频播放器。
你想想看,B站是做什么的?做视频平台和社区的呀,所以对于视频播放器这一块的解决方案肯定是非常重视的。
ijkplayer是一款底层基于FFmpeg的Android/iOS视频播放器,支持MediaCodec、VideoToolbox,具有跨平台、易集成、可按需裁剪、支持硬件加速解码等一系列特性。
目前使用ijkplayer的项目和产品还是非常多的,网上相关的资料也非常多,有相关需求的可以研究一下这个开源项目。
主要开发语言:C语言
项目地址:https://github.com/bilibili/ijkplayer
flv.js
flv.js是一款基于纯JavaScript编写的HTML5 Flash Video (FLV) 视频播放器,目前在GitHub上同样也收获了20k+的Star标星。
![4c5131e16d9ab204def5589e8a2c125b.png](https://i-blog.csdnimg.cn/blog_migrate/96708955244c037aa74f10f23f78a0dc.png)
没错,这是B站开源的又一个和视频播放需求密切相关的开源项目。
flv.js去掉了对Flash的依赖,同时支持录播和直播,在开销不大的情况下还能通过浏览器进行硬件加速并且兼容多款浏览器。如果有网页播放或者网页直播相关需求,可以使用和研究一下该开源项目。
主要开发语言:JavaScript
项目地址:https://github.com/bilibili/flv.js
DanmakuFlameMaster
Android开源弹幕引擎·烈焰弹幕使 ~
看名字就知道这是一款和弹幕相关的开源项目。
没错,DanmakuFlameMaster是一款Android上的开源弹幕解析绘制引擎项目,目前在GitHub上收获了9000 Star的标星。但是从GitHub的项目提交记录来看,目前好像已经很久没有更新了。
![8c5930489f59f458dab6e0909a90be62.png](https://i-blog.csdnimg.cn/blog_migrate/347a80285b2870a5043a6c1b8cea53f4.png)
DanmakuFlameMaster这个弹幕引擎架构清晰,灵活易用,支持多种方式实现的高效绘制、多种显示效果选项实时切换、以及多种和自定义功能。
如果你也想实现一个炫酷的弹幕效果,那弹幕引擎就可以由开源的 DanmakuFlameMaster 来帮助完成。
主要开发语言:Java
项目地址:https://github.com/bilibili/DanmakuFlameMaster
Discovery
看了前三个非常火的开源项目都是关于客户端的,接下来终于来了一个与后端服务开发相关的开源项目。
按照官方项目文档的介绍,Discovery是一款主要用来实现中间层服务的故障切换、容错以及负载均衡的基础组件,同样也是基于Go语言实现。
![7b37051ae4f8f531d7270fe6a2849513.png](https://i-blog.csdnimg.cn/blog_migrate/2a9928e411d71cf005ba6f3f97cf8689.png)
这样说可能不太好理解,有点抽象,我们来做个横向技术类比就知道了。
Eureka这个组件不知道大家用过没,网上有人将Discovery理解为使用Go语言复刻的Eureka,也是一个提供服务注册和服务发现的中间件,相信这样理解起来就能明白它的作用了。
对Java微服务项目比较熟悉的同学,看完Discovery的工作原理架构图,大致应该就明白它能做的事情了。
![9a337fde27050955cf1c65a375328570.png](https://i-blog.csdnimg.cn/blog_migrate/e9e9335c375c5948e0b0fc9428829ba5.png)
的确,Discovery在设计时就以Netflix Eureka为对标,但是又针对性地做了很多改进,有兴趣的可以参考项目主页的文档。
主要开发语言:Go语言
项目地址:https://github.com/bilibili/discovery
Kratos
Kratos是一套轻量级的Go语言微服务框架,包含大量微服务相关功能及工具。
![a931b8f200ee7ae7e3185961bac21476.png](https://i-blog.csdnimg.cn/blog_migrate/319eca380c34595a4a76d84fab46c23c.png)
大家都知道Java领域成熟的微服务框架其实很多,典型的比如像Spring Cloud,而Kratos则是Go语言领域一个比较难得的微服务框架,它整合了很多微服务相关的组件、框架以及工具,致力于为Go语言开发者提供相对完整的微服务开发体验。
Kratos的核心架构如下:
![0af16ee98c74b084f6b185ae733cef59.png](https://i-blog.csdnimg.cn/blog_migrate/785d44020b20f16eed72b6842d40a8b8.png)
从图中也能看出来,其对应支持的主要组件和特性也不少,而且在官方的项目实例中,几乎每个特性(组件)都配有对应的example代码示例,这一点对于学习者是非常友好的。
如果想学习并实践Go语言描述的微服务架构,该项目则是一个不错的切入点和实践工程。
主要开发语言:Go语言
项目地址:https://github.com/go-kratos/kratos
Overlord
Overlord是哔哩哔哩开发的一款memcache和redis&cluster的代理及集群管理功能的项目,同样主要还是基于Go语言开发,致力于提供自动化高可用的缓存服务解决方案,目前在GitHub上也收获了近2k的Star标星。
![1efcaa4ee442c25450cb0557438dc10a.png](https://i-blog.csdnimg.cn/blog_migrate/bb4d0b75557b667ef9b70cd9d9e7c051.png)
该项目实现了proxy模块、platform模块、Web GUI管理模块,并且提供了对应的数据同步工具和集群管理工具,官方项目里也给出了对应的部署指南和使用指南,还是非常详细的。
据项目主页所述,Overlord已被哔哩哔哩用于生产环境。
主要开发语言:Go语言
项目地址:https://github.com/bilibili/overlord
后 记
好啦,今天的分享就先到这里了。
我要继续去B站上学习各种跳舞、穿搭、二次元、动漫、健身、编程等各方面的知识了。