【分布式系统案例课】计数服务之存储设计

存什么?

两种存储内容,各有优劣
【分布式系统案例课】计数服务之存储设计_第1张图片

综合:耽搁时间和聚合数据都分别进行存储,可以得到两者的好处。

数据库选型

【分布式系统案例课】计数服务之存储设计_第2张图片

SQL数据库+客户端嵌入代理

因为B站的数量级,单个数据库肯定是扛不住的。然后为了满足扩展性需求,考虑对数据库进行分区存储 Sharding ,实现按需扩展。
Sharding 只是解决了分摊负载的问题,高可用还要用数据复制 replication ,主从复制之后还可以进一步读写分离,写入数据写到主库上,读取数据从从库上读取。
【分布式系统案例课】计数服务之存储设计_第3张图片

为了屏蔽Sharding 和主从复制引入的复杂性,需要引入数据库访问代理 ,访问代理可以直接以客户库的形式嵌入到应用程序中。
【分布式系统案例课】计数服务之存储设计_第4张图片
注册中心 Registry Center 来支持对后台数据库的配置管理,相当于配置中心加上服务发现的角色。Sharding Proxy 本身需要高可用部署,所以前置一般需要引入负载均衡设备来支持,例如 F5 或者软件 HAProxy。

表设计

【分布式系统案例课】计数服务之存储设计_第5张图片

【分布式系统案例课】计数服务之存储设计_第6张图片

你可能感兴趣的:(分布式,数据库)