当前位置: 首页 > 分布式系统
  • redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一 个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给client.然后此连接就 结束事务上下文。

    阅读全文
    redis, 分布式系统, 缓存系统 551 人阅读 抢沙发 ,
  • redis java 客户端有JDBC-Redis JRedis Jedis三种。在使用jedis pool时遇到了这个问题:It seems like server has closed the connection,redis server 关闭了此客户端的连接:server端设置了maxidletime(默认是5分钟),服务端会不断循环检测clinet的最后一次通信时间(lastinteraction),如果大于maxidletime,则关闭连接,并回收相关资源。client在向该连接中写数据后就会由于server端已经关闭而出现 broken pipe的问题。

    阅读全文
    redis, 分布式系统, 缓存系统 1,375 人阅读 抢沙发 , ,
  • 我们单服务器的内存是64G,我们估计64* 16G 在很长一段时间内是满足需求的,但是为了考虑到以后的扩展,一开始将数据sharding 到16个db中,也就是说在只有一个Redis时,client每次写数据会先计算key的hash,模16,得到db num,select db,然后写入,也可以为每个db 保持一个client,这样就可以避免每次select db 了。 当需要变更为两个Redis时,为了不丢失数据,需要将原来Redis的数据分为2份,一份是db 0-7,第二份是db 8-15, 用这两个数据启动Redis,就可以实现扩容了。

    阅读全文
    redis, 分布式系统, 缓存系统 592 人阅读 抢沙发 , ,
  • zookeeper集群工作的过程包括recovery和broadcast。zookeeper集群工作过程:1) 首先每个服务器读取配置文件和数据文件,根据serverid知道本机对应的配置,并且将历史数据加载进内存中;集群中的服务器开始根据前面给出的quorum port监听集群中其他服务器的请求,并且把自己选举的leader也通知其他服务器,来来往往几回,选举出集群的一个leader;leader还需要与集群中的其他服务器同步数据,如果这一步出错,将返回2)中重新选举leader;接收客户端的连接。

    阅读全文
  • 假设程序 A 需要 7* 24 小时在线对外提供服务,但是 A 程序在生产环境下总是不稳定,时常崩溃,不过幸运的是解决方案很简单,在 A 程序崩溃以后只需要重启它就可以了。采用 Zookeeper 服务可以按照如下方案解决问题,程序 A 在启动时创建一个临时(ZOO_EPHEMERAL) znode 节点 /A,然后按照正常流程对外提供服务。

    阅读全文
    分布式系统 1,840 人阅读 抢沙发 , ,