盤點大廠的那些開源項目 - 嗶哩嗶哩


嗶哩嗶哩現為中國年輕世代高度聚集的文化社區和視頻平台,被粉絲們親切地稱為“B站”。

kratos 戰神奎托斯的冒險歷程

分類:基於GO的微服務框架
開發語言: GO

Kratos是bilibili開源的一套Go微服務框架,包含大量微服務相關框架及工具。

目標

我們致力於提供完整的微服務研發體驗,整合相關框架及工具后,微服務治理相關部分可對整體業務開發周期無感,從而更加聚焦於業務交付。對每位開發者而言,整套Kratos框架也是不錯的學習倉庫,可以了解和參考到bilibili在微服務方面的技術積累和經驗。

功能特性

  • HTTP Blademaster:核心基於gin進行模塊化設計,簡單易用、核心足夠輕量;
  • GRPC Warden:基於官方gRPC開發,集成discovery服務發現,並融合P2C負載均衡;
  • Cache:優雅的接口化設計,非常方便的緩存序列化,推薦結合代理模式overlord;
  • Database:集成MySQL/HBase/TiDB,添加熔斷保護和統計支持,可快速發現數據層壓力;
  • Config:方便易用的paladin sdk,可配合遠程配置中心,實現配置版本管理和更新;
  • Log:類似zap的field實現高性能日志庫,並結合log-agent實現遠程日志管理;
  • Trace:基於opentracing,集成了全鏈路trace支持(gRPC/HTTP/MySQL/Redis/Memcached);
  • Kratos Tool:工具鏈,可快速生成標准項目,或者通過Protobuf生成代碼,非常便捷使用gRPC、 HTTP、swagger文檔;

Stars: 11.6k
Github: https://github.com/go-kratos/kratos

overlord

分類:緩存服務解決方案
開發語言: GO

Overlord是嗶哩嗶哩基於Go語言編寫的memcache和redis&cluster的代理及集群管理功能,致力於提供自動化高可用的緩存服務解決方案。主要包括以下組件:

  • proxy:輕量高可用的緩存代理模塊,支持memcache和redis的代理,相當於twemproxy,不同在於支持redis-cluster及能將自己偽裝為cluster模式。
  • platform:包含apiserver、mesos framework&executor、集群節點任務管理job等。
  • GUI:web管理界面,通過dashboard可視化方便用於集群管理,包括創建刪除、擴縮容、加減節點等。
  • anzi:redis-cluster的數據同步工具,可服務化與apiserver進行配合工作。
  • enri:redis-cluster的集群管理工具,可靈活的創建集群、遷移slot等。

Overlord已被嗶哩嗶哩用於生產環境。

Stars: 1.6k
Github: https://github.com/bilibili/overlord

discovery

分類:基礎服務
開發語言: GO

discovery是一項基礎服務,可以在生產中使用,並且主要在Bilibili用於定位服務,以實現負載均衡和中間層服務器的故障轉移。

Stars: 1.3k
Github: https://github.com/bilibili/discovery

ijkplayer

分類:基礎工具
開發語言: C,Object-C,Java

基於FFmpeg n3.4的Android / iOS視頻播放器。

Stars: 28.1k
Github: https://github.com/bilibili/ijkplayer

flv.js

分類:基礎工具
開發語言: JavaScript

用純JavaScript編寫的HTML5 Flash Video(FLV)播放器,不依賴Flash。

flv.js的工作原理是將FLV文件流轉換為ISO BMFF(分段MP4)段,然后<video>通過Media Source Extensions API將mp4段饋送到HTML5元素中。

flv.js用ECMAScript 6編寫,由Babel Compiler編譯為ECMAScript 5 ,並與Browserify捆綁在一起。

特征

  • 具有H.264 + AAC / MP3編解碼器播放功能的FLV容器
  • 多段分段視頻播放
  • HTTP FLV低延遲實時流播放
  • 通過WebSocket進行FLV實時流播放
  • 與Chrome,FireFox,Safari 10,IE11和Edge兼容
  • 極低的開銷,並且瀏覽器可以加速硬件!

Stars: 19.1k
Github: https://github.com/bilibili/flv.js

DanmakuFlameMaster

分類:android組件
開發語言:Java

android上開源彈幕解析繪制引擎,烈焰彈幕。

功能特性

  • 使用多種方式(View/SurfaceView/TextureView)實現高效繪制

  • B站xml彈幕格式解析

  • 基礎彈幕精確還原繪制

  • 支持mode7特殊彈幕

  • 多核機型優化,高效的預緩存機制

  • 支持多種顯示效果選項實時切換

  • 實時彈幕顯示支持

  • 換行彈幕支持/運動彈幕支持

  • 支持自定義字體

  • 支持多種彈幕參數設置

  • 支持多種方式的彈幕屏蔽

Stars: 8.8k
Github: https://github.com/bilibili/DanmakuFlameMaster

boxing

分類:android組件
開發語言:Java

boxing是一個基於MVP模式的Android多媒體選擇器。

功能特性

  • 支持自定義UI
  • 支持多/單圖片選擇和預覽,單圖裁剪功能
  • 支持gif
  • 支持視頻選擇功能
  • 提供圖片壓縮
  • 多圖生成gif(checkout feature/gif-encode)

Stars: 3.2k
Github: https://github.com/bilibili/boxing

MagicaSakura

分類:android組件
開發語言:Java

MagicaSakura 是 Android 多主題框架,支持白天多種主題和夜間主題。

Stars: 3.4k
Github: https://github.com/bilibili/MagicaSakura

最后

歡迎掃碼關注我們的公眾號 【全球技術精選】,專注國外優秀博客的翻譯和開源項目分享,也可以添加QQ群 897216102


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM