1. 程式人生 > >盤點大廠的那些開源專案 - 嗶哩嗶哩

盤點大廠的那些開源專案 - 嗶哩嗶哩

嗶哩嗶哩現為中國年輕世代高度聚集的文化社群和視訊平臺,被粉絲們親切地稱為“B站”。 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210127_060543.png) ## kratos 戰神奎託斯的冒險歷程 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210127_070909.png) 分類:基於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]("https://github.com/go-kratos/kratos") ## overlord ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210127_052340.png) 分類:快取服務解決方案 開發語言: 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]("https://github.com/bilibili/overlord") ## discovery 分類:基礎服務 開發語言: GO discovery是一項基礎服務,可以在生產中使用,並且主要在Bilibili用於定位服務,以實現負載均衡和中間層伺服器的故障轉移。 **Stars:** 1.3k **Github:** [https://github.com/bilibili/discovery]("https://github.com/bilibili/discovery") ## ijkplayer 分類:基礎工具 開發語言: C,Object-C,Java 基於FFmpeg n3.4的Android / iOS視訊播放器。 **Stars:** 28.1k **Github:** [https://github.com/bilibili/ijkplayer]("https://github.com/bilibili/ijkplayer") ## flv.js 分類:基礎工具 開發語言: JavaScript 用純JavaScript編寫的HTML5 Flash Video(FLV)播放器,不依賴Flash。 flv.js的工作原理是將FLV檔案流轉換為ISO BMFF(分段MP4)段,然後`