嗶哩嗶哩現為中國年輕世代高度聚集的文化社群和視訊平臺,被粉絲們親切地稱為“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