matrix67
2021-03-16 22:00:56 +08:00
可以参考一下 B 站
1. 约 329 个 Go 服务, 历史约 170 人左右贡献过 Go 代码. 其中 admin 目录下 54 个, infra 目录下 5 个基础组件服务, interface 下 77 个, job 目录下 80 个, service 目录下 113 个.
2. 代码和目录规范性比较好, 代码生成工具建设比较好, 大家可以借鉴一下.
3. 对于一个 Golang 开发者来说, 入职 B 站, 我觉得大概 2-3 天就可以 copy&&paste 开始贡献业务代码了. 其他语言开发者, 3-4 天吧, 因为学习 Golang 花一天.
4. B 站 Go 不依赖 CGO, 业务代码可以在 windows 编译通过! 启动!
5. 组件基本是基于开源组件封装.
6. RPC 基于 grpc 封装, 协议编码为 proto, 没有我们通常那样的包头.
7. 服务注册与发现已经包装在 RPC 中. 注册使用自研的 discovery, 基于类似 url 的方式去注册和寻址.
8. 数据存储多使用 memcache, redis 和 DB.
9. hbase 也使用比较多. 用于鉴权, 用户数据存储. 对于一些 kv 数据, 外部没有支持冷热分离的 kv 存储, hbase 是一个非常好的选择: 基于 HDFS, 热数据加载到内存, 列式存储, 强一致, 可配置副本数.
10. 消息队列为使用基于 kakfa, 实现了 redis 协议的 databus.
11. 小文件存储: B 站自己实现的 bfs
12. 监控上报使用的是 prometheus, 对于中小公司, 没法建设自己的监控组件, prometheus 是很不错的选择.
13. 简单浏览了下, 这份代码在 SQL 上没有注入风险. 生产环境的配置并没有在这份代码中. 一个合格的开发者, 即使所有源码流出去, 也不会对系统造成任何危害.
14. 不过 B 站的代码似乎打点监控做的不是很多(可能没有太多的去强调?)