使用redis实现程序或者服务的高可用

使用redis实现程序或者服务的高可用,就是将某一程序或服务部署在不同服务器上,或者是跨机房部署,当运行服务的服务器挂了之后,其他服务器上的该服务能立马顶上,这里我简单的使用redis实现这一目的。

思路是: 部署在不同服务器上的相同服务,隔段时间去redis上查下某一个键(自己定义),如果该键不存在,则设置该键的值,可以是自己本服务器的IP,并设置的一个过期时间,然后执行服务的业务逻辑,如果该键存在,查看该键的值是不是自己的IP,如果是,更新该键的过期时间。代码如下:

# coding:utf8
import time
import redis
import threading

REDIS_DB = {
    ‘host‘: ‘*********‘,
    ‘port‘: *****,
    ‘password‘: None,
}
KEY = "********"
EXPIRATION_TIME = 12
LOOP_TIME = 10
SERVER_IP = "1.1.1.1"

def use_redis(option=REDIS_DB):
    pool = redis.ConnectionPool(**option)
    r = redis.Redis(connection_pool=pool)
    return r

def get_key_from_redis():
    client = use_redis()
    flag = client.exists(KEY)
    if not flag:
        client.setex(KEY, SERVER_IP, EXPIRATION_TIME)
        t = threading.Thread(target=work)
        t.start()
    else:
        value = client.get(KEY)
        if value == SERVER_IP:
            client.expire(KEY, EXPIRATION_TIME)

# 模拟业务逻辑
def work():
    while True:
        ..........
        time.sleep(8)

if __name__ == "__main__":
    while True:
        get_key_from_redis()
        time.sleep(LOOP_TIME)

当然,隔段时间去查一下redis,这个时间要比key的过期时间短一些。

原文地址:https://www.cnblogs.com/lucky-heng/p/11135410.html

时间: 2024-11-05 19:03:51

使用redis实现程序或者服务的高可用的相关文章

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法

ceph对象存储(rgw)服务、高可用安装配置

ceph对象存储服务.高可用安装配置 简介:    Ceph本质上就是一个rados,利用命令rados就可以访问和使用ceph的对象存储,但作为一个真正产品机的对象存储服务,通常使用的是Restfulapi的方式进行访问和使用.而radosgw其实就是这个作用,安装完radosgw以后,就可以使用api来访问和使用ceph的对象存储服务了.    首先明白一下架构,radosgw其实名副其实,就是rados的一个网关,作用是对外提供对象存储服务.本质上radosgw(其实也是一个命令)和rbd

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Keepalived实现WEB服务的高可用负载均衡服务,终于在2017年的第一天前完成了,所以在此分享给有需要的朋友:说到负载均衡,其实在linux下有很多服务可以实现,比如nginx.haproxy.lvs等服务,当前我们在前面的文章有介绍过了,但是对于高可用服务,我们在linux下最常见也是应用最多的是Kee

基于Corosync和Pacemaker实现Web服务的高可用

Corosync+Pacemaker+iscsi+Httpd实现web服务的高可用 一.软件介绍 Corosync实现的是membership和可靠组通信协议 Pacemaker则基于Corosync/Linux-HA实现服务的管理 Corosync包括如下组件:   Totem  protocol   EVS   CPG   CFG   Quorum Extended Virtual  Synchrony算法(EVS)提供两个功能:   组成员列表的同步:   组消息的可靠组播. Pacema

携程呼叫中心异地双活——座席服务的高可用

携程呼叫中心异地双活--座席服务的高可用

Redis Sentinel(哨兵)主从高可用方案

环境搭建 三台服务器: 192.168.126.100(master) 192.168.126.110(slaver) 192.168.126.120(slaver) 拷贝192.168.126.100(主)服务器中的Redis到从机,保证Redis版本.环境一致: scp -r redis-3.2.0/ [email protected]192.168.126.110:/usr/local/ // 安装目录 scp -r redis/ [email protected]192.168.126.

heartbeat双机热备实现Web服务的高可用

防伪码:没有相当程度的孤独是不可能有内心的平和. 1.概述 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能. 通过heartbeat,可以将资源从一台已经故障的计算机快速转移到另一台运转的机器上继续提供服务. 官网:http://www.linux-ha.org/wiki/Main_Page 1.1 工作原理 主备模式:通过修改

CentOS 6.5使用Corosync + pacemaker实现httpd服务的高可用

Corosync:它属于OpenAIS(开放式应用接口规范)中的一个项目corosync一版本中本身不具备投票功能,到了corosync 2.0之后引入了votequorum子系统也具备了投票功能了,如果我们用的是1版本的,又需要用到票数做决策时那该如何是好呢:当然,在红帽上把cman + corosync结合起来用,但是早期cman跟pacemaker没法结合起来,如果想用pacemaker又想用投票功能的话,那就把cman当成corosync的插件来用,把cman当成corodync的投票功

mysql运维管理-Heartbeat实现web服务的高可用案例及维护要点

1.DRBD介绍 Distributed Replicated Block Device (DRBD)是基于块设备在不同的高可用服务器对之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于块设备级别的实时或异步镜像或同步复制,类似于rsync+inotify这样的系统架构项目软件.只不过drbd是基于文件系统底层的,即block层级的同步,而rsync+inotify是在文件系统之上的实际物理文件同步.所以dbrd效率更高.块设备可以是磁盘分区,LVM逻辑卷,或整块磁盘. 2.D