当前位置: 代码网 > it编程>编程语言>Java > python kazoo 踩坑记录

python kazoo 踩坑记录

2024年07月28日 Java 我要评论
问题场景:python 启动rpc服务挂载到zookeeper上供javai调用问题现象:zookeeper的节点总是掉,但是服务没有挂,监听进行重连也会再次挂掉问题原因:zookeeper服务端会定时对客户端进行心跳检测,在rpc在执行中 无法回应zookeeper服务端

问题场景:python 启动rpc服务挂载到zookeeper上供javai调用

问题现象:zookeeper的节点总是掉,但是服务没有挂,监听进行重连也会再次挂掉

问题原因:zookeeper服务端会定时对客户端进行心跳检测,在rpc在执行中 无法回应zookeeper服务端

解决方案1:zookeeper使用一个单独的线程进行连接保持,

        在并发量小时没有问题

        并发量大的情况下,单cpu跑到100 ,zookeeper的线程因为gil锁的原因无法进行心跳检测一

        样会掉节点

解决方案2:zookeeper使用一个单独的进程进行连接保持,

 注意:在windows上要注意进程启动的位置,windows的进程启动方式是spawn,linux的缺省的启动方式是fork。简单的说,fork会复制父进程的所用东西,而spawn不会。对于python而言,spawn会在进程中生成一个新的python解释器,并重新加载各个module

#hello.py
from multiprocessing import process, queue

def f(q):
    q.put('hello world')

def run_mp():
    q = queue()
    p = process(target=f, args=[q])
    p.start()
    print (q.get())
    p.join()

run_mp()

像上面这段代码,在linux上运行hello.py,只会输出一个“hello world”。因为主进程会运行 run_mp, 子进程负责把“hello world”放进queue里。
而在windows下,进程的启动方式是spawn,子进程需要先import hello.py这个module,在import的过程中,run_mp()就在子进程中运行,然后子进程又会产生新的进程(p=process(target=f,args=[q]))当然windows不会让这种死循环产生,所以发现这种情况就会抛出开头的异常。
所以在windows的环境下 if name == “main” 必须被加上保证新的进程不会在import module的时候产生。

多进程相关原文链接:https://blog.csdn.net/qq_43051923/article/details/118250484

(0)

相关文章:

  • spring boot 使用 Kafka

    spring boot 使用 Kafka

    高吞吐量:Kafka能够处理大规模的数据流,并支持高吞吐量的消息传输。持久性:Kafka将消息持久化到磁盘上,保证了消息不会因为系统故障而丢失。分布式:Kafk... [阅读全文]
  • Kafka集群之-ZooKeeper未授权访问漏洞修复

    Kafka集群之-ZooKeeper未授权访问漏洞修复

    配置 ZooKeeper 的配置文件,修改 文件,添加以下内容:二、创建 JAAS 文件在 ZooKeeper 的安装目录下的 目录中创建 文件,并编辑内... [阅读全文]
  • kafka事务的详解

    kafka事务的详解

    即处于同一个事务内的所有消息,不管最终需要落地到哪个 topic 的哪个 partition, 最终结果都是要么全部写成功,要么全部写失败(Atomic mul... [阅读全文]
  • Zookeeper使用详解

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性…

    2024年07月28日 编程语言
  • kafka实现负载均衡的原理,OpenKruise v0(1)

    搞定算法,面试字节再不怕,有需要文章中分享的这些二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+…

    2024年07月28日 编程语言
  • 【Spring Cloud 2023】【ZooKeeper】配置中心

    【Spring Cloud 2023】【ZooKeeper】配置中心

    本文介绍开发Spring Cloud应用集成ZooKeeper实现配置中心。本文引入 Apache Curator 是为了辅助测试配置中心相关功能;配置项说明:... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com