存什么?
两种存储内容,各有优劣
综合:耽搁时间和聚合数据都分别进行存储,可以得到两者的好处。
数据库选型
SQL数据库+客户端嵌入代理
因为B站的数量级,单个数据库肯定是扛不住的。然后为了满足扩展性需求,考虑对数据库进行分区存储 Sharding ,实现按需扩展。
Sharding 只是解决了分摊负载的问题,高可用还要用数据复制 replication ,主从复制之后还可以进一步读写分离,写入数据写到主库上,读取数据从从库上读取。
为了屏蔽Sharding 和主从复制引入的复杂性,需要引入数据库访问代理 ,访问代理可以直接以客户库的形式嵌入到应用程序中。
注册中心 Registry Center 来支持对后台数据库的配置管理,相当于配置中心加上服务发现的角色。Sharding Proxy 本身需要高可用部署,所以前置一般需要引入负载均衡设备来支持,例如 F5 或者软件 HAProxy。