云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_sql怎么建立数据库_

小七 141 0

存储云平台_哪里买_人工智能要学哪些

Freshservice是Freshworks产品套件中基于云的ITSM服务台软件,可帮助公司管理事件、资产和更多ITIL功能。Freshservice使用Redis作为数据存储。我们需要一个具有快速读写功能的数据存储,Redis提供了它。一些例子包括特性标志、计数器和sidekiq,用于完全依赖Redis的异步作业处理。当我们推出这个产品时,我们自己托管了Redis服务器。我们的手脏了,手动缩放的实例被监视和维护更新。不用说,所有的人工干预都变得乏味了。我们转向了AWS ElastiCache,它允许对Redis实例进行无缝维护,并为我们管理服务器。在云中部署和使用Redis很容易。但是,它在升级Redis版本而不造成任何停机时间方面存在局限性。我们需要一个更好的解决方案,允许横向扩展,最重要的是,在升级Redis版本的同时,零停机时间我们决定迁移到Redis Labs,这是最流行的内存数据库。它是一种高可用性、高性能、可靠和无缝扩展的服务但是,大数据的应用,我们发现ElastiCache不支持SLAVEOF命令,因为SLAVEOF命令使我们能够动态地更改副本/从服务器的复制设置。我们必须手动拍摄快照,将数据从ElastiCache迁移到Redis Labs,从而导致停机。反过来,我们将经历服务中断,因为我们的一些关键功能依赖于它。在一个所有东西都需要立即运行的世界中,我们希望从ElastiCache迁移到Redis Labs,而不需要停机我们是这样做的:解决方案的要点开始监视Redis服务器中正在进行的更改。Redis服务器可以通过Redis MONITOR命令对每个命令进行后台处理创建源Redis服务器的时间点快照将monitor命令中的更改应用于目标服务器以保持服务器同步验证两台服务器上的随机数据集并检查一致性将流量切换到目标服务器监视对Redis服务器所做的更改Monitor命令提供服务器中执行的所有命令。接收到的输出被推送到SQS中,以维护在源Redis服务器中执行的操作。下面的脚本将源Redis(ElastiCache)的monitor命令的输出推送到SQS(也可以使用任何其他队列服务)。redis_s_q=AWS::SQS.new.queues.named("redis_queue")redis_s=Redis.新(:host=>"source\u redis\u url",云计算和大数据的区别,:port=>6379)redis_s.monitor{| command | redis_s_q.send_消息(命令)查看原始监视器_redis.rb版由GitHub托管注意:SQS FIFO队列的限制是每分钟300条消息,这可能不够。标准队列可以有消息重复/无序消息。我们需要确保这是否可以接受创建Redis快照记录时间戳并将源Redis中的所有密钥复制到目的地。这将作为服务器到目标的时间点副本。redis_s=Redis.新(:host=>"source\u redis\u url",bi大数据分析,:port=>6379)redis_d=Redis.新(:host=>"destination_redis_url",:port=>6379)失败的密钥={}redis_s.set("开始时间",时间。现在)记下时间戳光标=0环路doresult=redis_.scan(光标,:match=>"*",:count=>1000)光标=结果.first结果[1],每个do |键|除非钥匙。包括?("队列")||钥匙。包括?("重新调整")值,ttl=redis_s.pipelined doredis_s.dump密钥redis_s.ttl密钥结束开始redis\u d.流水线doredis\u d.restore键,0,valueredis\u d.expire密钥,如果ttl>0,则为ttl结束救援=>etype=redis\u s.type(密钥)案例类型当"字符串"时source_val=redis_s.get(密钥)dest\u val=redis\u d.get(密钥)"设置"时source_val=redis_s.smembers(密钥)dest_val=redis_d.smembers(密钥)当"zset"时source_val=redis_s.zrange(键,云服务器购买,0,-1)dest\u val=redis\u d.zrange(键,0,-1)当"列表"时source_val=redis_s.lrange(键,0,-1)dest\u val=redis\u d.lrange(键,0,-1)其他的源值=假目标值=假结束失败的\u keys[key]=[源\u val,dest\u val]结束结束结束光标=="0"时中断结束查看原始雷迪斯_快照.rb由GitHub托管保持服务器同步既然我们在目的地有了源Redis服务器的时间点副本,我们使用以下脚本应用SQS中可用的更改。该脚本轮询推送到SQS的命令,并在目标服务器上执行它们。由于目标中有一个时间点拷贝,我们只需要轮询在Redis中记录的时间戳之后推送的命令redis_s=Redis.新(:host=>"source\u redis\u url",:port=>6379)redis_d=Redis.新(:host=>"destination_redis_url",:port=>6379)开始时间=时间。解析(redis_s.get("开始时间"))错误=[]def parse_消息(msg)消息=消息拆分(" ")时间戳=时间(msgs.first.to\f)开始operation=msgs[3].gsub("\",云服务器器,"")args1=消息[4。。消息大小-1]参数=[]arg1.每个do | arg|参数