Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现Redis备份服务器的冗余和故障切换策略_Redis_Load Balancing_Redundancy - Fatal编程技术网

如何实现Redis备份服务器的冗余和故障切换策略

如何实现Redis备份服务器的冗余和故障切换策略,redis,load-balancing,redundancy,Redis,Load Balancing,Redundancy,我有一个用于食品配送的web/移动应用程序。问题是,我的服务器对数据库的写入操作要比读取操作多得多。现在我正在运行PostgreSQL,问题是很多服务器请求都是在短时间内发生的(大约在中午和晚上),因此我需要各种实例(加上S3用于备份)才能实现写入吞吐量,我认为这并不是什么好事,因为事情正在扩展,这些PG实例看起来就像兔子在繁殖 我的限制: 写的比读的多得多 在写入中大约有25000个请求/秒,并且在增长 在系统中注册后,我需要保证数据在未处理时(消费者订单由餐厅检查)的强一致性(在数据库中写

我有一个用于食品配送的web/移动应用程序。问题是,我的服务器对数据库的写入操作要比读取操作多得多。现在我正在运行PostgreSQL,问题是很多服务器请求都是在短时间内发生的(大约在中午和晚上),因此我需要各种实例(加上S3用于备份)才能实现写入吞吐量,我认为这并不是什么好事,因为事情正在扩展,这些PG实例看起来就像兔子在繁殖

我的限制:

  • 写的比读的多得多
  • 写入中大约有25000个请求/秒,并且在增长
  • 在系统中注册后,我需要保证数据在未处理时(消费者订单由餐厅检查)的强一致性(在数据库中写入
  • 与其让服务出现故障,不如不让服务运行(牺牲可用性以支持一致性)
通过对我的生产服务器进行一些基准测试,Redis能够在只有一台服务器的情况下处理我当前峰值的1.5倍,并且具有一个
列表
结构,这对于管理订单队列非常有用

我读到Redis,即带Sentinel/Cluster的开箱即用系统无法提供强大的一致性,因此,为了实现这一点,我考虑做以下两件事之一:

  • 将Sentinel设置为3个实例(1个主实例和2个从实例),并配置
    Wait
    appendfsync始终
    策略,并在
    Wait
    返回的值小于2时检入客户端。这样,Sentinel将负责复制和故障切换,在我的服务器的帮助下,它将始终保持强大的一致性
  • 第二种选择是使用
    appendfsync always
    拥有相同的3个实例,但只需通过我的应用程序服务器在这3个实例中应用软件RAID 1,但通过这种方式,我必须考虑控制逻辑以实现冗余和故障切换功能。问题是在尝试在代理后扩展我的应用程序(node.js)时,因为为了提供完全冗余,我必须管理每个Redis实例中的写入尝试,如果此应用程序停止运行,另一个可能不知道3是否同步以及要同步的最新数据是什么
  • 在我看来,第二个选项似乎比第一个更健壮,因为在这方面,我只能释放1台服务器,而在第二个选项中,如果我保证一致性,我可以使用3台服务器中的任何一台

    我错过了什么?建议

    写的比读的多得多 写入和增长中约25000个请求/秒

    您看过Cassandra()吗?如果您不需要定期更改数据结构,它可能是一个不错的选择

    我了解到,Redis与Sentinel/Cluster一起开箱即用,无法提供强大的一致性

    是的,这是真的

    如果您有25000次写入/s,
    等待
    附加同步总是
    不是好的选择

    问候,

    写的比读的多得多 写入和增长中约25000个请求/秒

    您看过Cassandra()吗?如果您不需要定期更改数据结构,它可能是一个不错的选择

    我了解到,Redis与Sentinel/Cluster一起开箱即用,无法提供强大的一致性

    是的,这是真的

    如果您有25000次写入/s,
    等待
    附加同步总是
    不是好的选择

    问候,