技术栈 | 技术选型 | 参考链接 |
---|---|---|
RPC | 基于grpc封装的warden框架, 已开源 | |
HTTP框架 | 基于gin封装的blade master框架, 已开源 | 同上 |
服务注册与发现 | 初期为zk, 后面逐步改为参考Spring Cloud体系Eureka自研的discovery | |
存储 | DB, redis, memcache, hbase存储一些用户kv信息和历史流水, 已封装好库 library/database/ | |
搜索 | B站视频, 用户, 历史记录等使用es搜索, 客户端已封装在基础库中 library/database/elastic | |
小文件存储 | 毛剑个人研发的bfs, 已开源. | |
消息队列 | 基于kafka封装的databus | |
log | 基于uber的zap封装的日志框架 | |
配置及配置中心 | 支持从环境变量读取配置, 从toml中解析配置, 支持远程配置中心(自研, mysql存储, 本地落地,http协议, long poll, 客户端有更新事件, 类似于携程开源的Apollo) | |
监控 | 使用开源的prometheus, 框架和库(sql, redis, hbase等)中已预埋计数点和时间统计点, 同时也可以在业务逻辑中打点. library/stat/stat.go | |
trace | trace似乎是基于agent的方式, 使用unix domain socket进行传送, 框架和库已预埋点. library/net/trace.go | |
研发流程管理 | TAPD, 有相关的tapd struct信息 |
其中RPC, HTTP框架, 数据访问的一些库封装, 包括生成工具, 均以kratos项目在github开源了(https://github.com/bilibili/kratos )Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具)
B站目前使用及封装的中间件的详细介绍在Gopher China 2017 B站的分享有提到原理和使用情况.
https://mp.weixin.qq.com/s/4uA6iE7HC_SAfdIATAdrrA
bfs介绍
https://www.jianshu.com/p/923917220d23
B站运维体系发展
https://myslide.cn/slides/3840