python实现高并发高可用_如何用python设计一个具有弹性和高可用性的服务?

我建议你采取不同的方法。使用发行版中可用的系统工具来管理流程的生命周期,而不是自己生成流程。provisioner也会简单得多,因为它不必复制您的操作系统只需付出很少的努力就可以完成的任务。在

在Ubuntu/centos6系统上,可以使用Upstart,与旧的sysvinit相比,它有很多优点(激进的并行化、重生成、简单的init-config语法等)。在

还有一个SystemD在设计上类似于upstart,在OpenSuse中是默认的。在

然后,provisioner只能用于为每个服务创建所需的init config,并使用subprocess模块启动或停止它们。然后,您可以监视您的实例,以防upstart无法重新生成实例,并发送警报,或再次尝试启动服务。在

使用这种方法,可以将用户服务的所有实例彼此隔离。如果供应器崩溃,其余的服务将继续运行。在

例如,假设您的供应器在后台运行。它通过AMQP或其他方式获取一条消息来创建用户并为该用户启动服务。一个可能的流程是:创建用户

为新用户做任何需要的引导吗

创建/etc/init/[用户名]_服务.conf在

启动[用户名]服务

init脚本可能类似于:description "start Service for [username]"

start on runlevel [2345]

stop on runlevel [!2345]

respawn

# Run before process

pre-start script

end script

exec /bin/su -c "/path/to/your/app"

通过这种方式,您可以将流程管理从供应器卸载到系统upstart守护进程。您只需要以一种简单的方式进行作业管理(在创建或删除用户时创建/销毁服务)。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值