当前位置 博文首页 > SpringLeee:盘点大厂的那些开源项目 - 哔哩哔哩

    SpringLeee:盘点大厂的那些开源项目 - 哔哩哔哩

    作者:SpringLeee 时间:2021-01-30 15:30

    哔哩哔哩现为中国年轻世代高度聚集的文化社区和视频平台,被粉丝们亲切地称为“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

    下一篇:没有了