电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python通過zookeeper實現分布式服務代碼解析

瀏覽:6日期:2022-07-16 15:26:53

借助zookeeper可以實現服務器的注冊與發現,有需求的時候調用zookeeper來發現可用的服務器,將任務均勻分配到各個服務器上去.

這樣可以方便的隨任務的繁重程度對服務器進行彈性擴容,客戶端和服務端是非耦合的,也可以隨時增加客戶端.

zk_server.py

import threadingimport jsonimport socketimport sysfrom kazoo.client import KazooClient# TCP服務端綁定端口開啟監聽,同時將自己注冊到zkclass ZKServer(object): def __init__(self, host, port): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.host = host self.port = port self.sock.bind((host, port)) self.zk = None def serve(self): ''' 開始服務,每次獲取得到一個信息,都新建一個線程處理 ''' self.sock.listen(128) self.register_zk() print('開始監聽') while True: conn, addr = self.sock.accept() print('建立鏈接%s' % str(addr)) t = threading.Thread(target=self.handle, args=(conn, addr)) t.start() # 具體的處理邏輯,只要接收到數據就立即投入工作,下次沒有數據本次鏈接結束 def handle(self, conn, addr): while True: data=conn.recv(1024) if not data or data.decode(’utf-8’) == ’exit’:break print(data.decode(’utf-8’)) conn.close() print(’My work is done!!!’) # 將自己注冊到zk,臨時節點,所以連接不能中斷 def register_zk(self): ''' 注冊到zookeeper ''' self.zk = KazooClient(hosts=’127.0.0.1:2181’) self.zk.start() self.zk.ensure_path(’/rpc’) # 創建根節點 value = json.dumps({’host’: self.host, ’port’: self.port}) # 創建服務子節點 self.zk.create(’/rpc/server’, value.encode(), ephemeral=True, sequence=True)if __name__ == ’__main__’: if len(sys.argv) < 3: print('usage:python server.py [host] [port]') exit(1) host = sys.argv[1] port = sys.argv[2] server = ZKServer(host, int(port)) server.serve()

zk_client.py

import randomimport sysimport timeimport jsonimport socketfrom kazoo.client import KazooClient# 客戶端連接zk,并從zk獲取可用的服務器列表class ZKClient(object): def __init__(self): self._zk = KazooClient(hosts=’127.0.0.1:2181’) self._zk.start() self._get_servers() def _get_servers(self, event=None): ''' 從zookeeper獲取服務器地址信息列表 ''' servers = self._zk.get_children(’/rpc’, watch=self._get_servers) # print(servers) self._servers = [] for server in servers: data = self._zk.get(’/rpc/’ + server)[0] if data:addr = json.loads(data.decode())self._servers.append(addr) def _get_server(self): ''' 隨機選出一個可用的服務器 ''' return random.choice(self._servers) def get_connection(self): ''' 提供一個可用的tcp連接 ''' sock = None while True: server = self._get_server() print(’server:%s’ % server) try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect((server[’host’], server[’port’])) except ConnectionRefusedError:time.sleep(1)continue else:break return sockif __name__ == ’__main__’: # 模擬多個客戶端批量生成任務,推送給服務器執行 client = ZKClient() for i in range(40): sock = client.get_connection() sock.send(bytes(str(i), encoding=’utf8’)) sock.close() time.sleep(1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台| 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | DDoS安全防护官网-领先的DDoS安全防护服务商 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 一路商机网-品牌招商加盟优选平台-加盟店排行榜平台 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 隧道烘箱_隧道烘箱生产厂家-上海冠顶专业生产烘道设备 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 加盟店-品牌招商加盟-创业项目商机平台 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 |