如何实现Redis备份服务器的冗余和故障切换策略
我有一个用于食品配送的web/移动应用程序。问题是,我的服务器对数据库的写入操作要比读取操作多得多。现在我正在运行PostgreSQL,问题是很多服务器请求都是在短时间内发生的(大约在中午和晚上),因此我需要各种实例(加上S3用于备份)才能实现写入吞吐量,我认为这并不是什么好事,因为事情正在扩展,这些PG实例看起来就像兔子在繁殖 我的限制:如何实现Redis备份服务器的冗余和故障切换策略,redis,load-balancing,redundancy,Redis,Load Balancing,Redundancy,我有一个用于食品配送的web/移动应用程序。问题是,我的服务器对数据库的写入操作要比读取操作多得多。现在我正在运行PostgreSQL,问题是很多服务器请求都是在短时间内发生的(大约在中午和晚上),因此我需要各种实例(加上S3用于备份)才能实现写入吞吐量,我认为这并不是什么好事,因为事情正在扩展,这些PG实例看起来就像兔子在繁殖 我的限制: 写的比读的多得多 在写入中大约有25000个请求/秒,并且在增长 在系统中注册后,我需要保证数据在未处理时(消费者订单由餐厅检查)的强一致性(在数据库中写
- 写的比读的多得多
- 在写入中大约有25000个请求/秒,并且在增长
- 在系统中注册后,我需要保证数据在未处理时(消费者订单由餐厅检查)的强一致性(在数据库中写入)
- 与其让服务出现故障,不如不让服务运行(牺牲可用性以支持一致性)
列表
结构,这对于管理订单队列非常有用
我读到Redis,即带Sentinel/Cluster的开箱即用系统无法提供强大的一致性,因此,为了实现这一点,我考虑做以下两件事之一:
Wait
和appendfsync始终
策略,并在Wait
返回的值小于2时检入客户端。这样,Sentinel将负责复制和故障切换,在我的服务器的帮助下,它将始终保持强大的一致性appendfsync always
拥有相同的3个实例,但只需通过我的应用程序服务器在这3个实例中应用软件RAID 1,但通过这种方式,我必须考虑控制逻辑以实现冗余和故障切换功能。问题是在尝试在代理后扩展我的应用程序(node.js)时,因为为了提供完全冗余,我必须管理每个Redis实例中的写入尝试,如果此应用程序停止运行,另一个可能不知道3是否同步以及要同步的最新数据是什么等待
和附加同步总是
不是好的选择
问候,
写的比读的多得多
写入和增长中约25000个请求/秒
您看过Cassandra()吗?如果您不需要定期更改数据结构,它可能是一个不错的选择
我了解到,Redis与Sentinel/Cluster一起开箱即用,无法提供强大的一致性
是的,这是真的
如果您有25000次写入/s,等待
和附加同步总是
不是好的选择
问候,