redis可以使用副本和碎片进行扩展。然而:副本只能扩展读取,但可以提供ha碎片可以扩展读写操作,并且比添加碎片需要更少的内存。基于这些事实,如果我对ha不感兴趣,那么总是使用碎片而不是副本是否有意义,因为我可以利用更小的内存占用(和更低的成本)来扩展读写操作?
ivqmmu1c1#
是的,你可以。关于ha,如果这个shard变得不可用,您必须确定您定义/知道什么是应用程序行为(数据丢失,服务不可用,…)在副本读取时,如果没有关于应用程序的信息,就很难判断;但大多数时候,redis示例(shard)足以处理大量负载。一个非常“简短”的规则是,一个shard可以处理25gb的数据,25.000次操作/秒,延迟低于毫秒,没有任何问题。显然,这取决于你所做的操作、数据和命令的类型;如果你做基本的设置/获取,可能会有更多的操作/秒。通常当我们有更多的数据时,我们使用集群来分配负载。因此,在进入“副本读取”路线(我正在尽量避免)之前,先看看您的应用程序,在单个shard上做一些基准测试:您可能会看到一切都正常(至少从工作负载的Angular 来看,但是如果不复制,您将有一个spof)
1条答案
按热度按时间ivqmmu1c1#
是的,你可以。
关于ha,如果这个shard变得不可用,您必须确定您定义/知道什么是应用程序行为(数据丢失,服务不可用,…)
在副本读取时,如果没有关于应用程序的信息,就很难判断;但大多数时候,redis示例(shard)足以处理大量负载。一个非常“简短”的规则是,一个shard可以处理25gb的数据,25.000次操作/秒,延迟低于毫秒,没有任何问题。显然,这取决于你所做的操作、数据和命令的类型;如果你做基本的设置/获取,可能会有更多的操作/秒。
通常当我们有更多的数据时,我们使用集群来分配负载。
因此,在进入“副本读取”路线(我正在尽量避免)之前,先看看您的应用程序,在单个shard上做一些基准测试:您可能会看到一切都正常(至少从工作负载的Angular 来看,但是如果不复制,您将有一个spof)