我将这种模式用于ZeroMQ上的服务器:
import time
import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
message = socket.recv()
print("Received request: %s" % message)
time.sleep(1)
socket.send(b"World")
以及客户的这种模式:
import zmq
context = zmq.Context()
print("Connecting to hello world server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
# Do 10 requests, waiting each time for a response
for request in range(10):
print("Sending request %s …" % request)
socket.send(b"Hello")
# Get the reply.
message = socket.recv()
print("Received reply %s [ %s ]" % (request, message))
如何在一台PC上同时使用服务器-客户端通信和客户端-服务器通信?
我们是否需要创建线程来实现这一目标?
该计算机必须能够发送数据,并同时从其他计算机接收和处理它们。
PS:这可以解决我的问题吗?
好吧,实际上不能。
该声明虽然被认为是出于很好的意愿来解释某些事物,但实际上并可能会严重损害人们的计算机科学一般观点,因为它极具误导性。
本地主机O / S可以同时运行多次基于ZeroMQ的客户端代码[True]
分布式系统可以同时多次运行基于ZeroMQ的客户端代码[True]
[任何生态系统]可以同时运行基于ZeroMQ的客户端代码并行时间[False]
没有人能够而且永远不会。Cray出色的并行处理语言教堂都无法实现这一目标,因为ZeroMQ本质上是一个异步的,“公正的”[CONCURRENT]
流程调度生态系统,其中每个主机在每个Context()
实例内部运行,并在内部实例池中运行。 1+ IO线程(如果纯粹主义者认为是特殊情况,那么实际上为0+:o)),是设计上异步的,并且独立于外部事件流,因此,在这里永远不会出现真正的[PARALLEL]
进程调度。
首先,您可以对[ ZeroMQ层次结构在不到五秒钟的时间]部分中介绍的主要概念元素进行简短的介绍性阅读,因为这将有助于我们从更深的角度讲相同的语言,了解ZeroMQ的可能性基于分布式系统的域。
如何在一台PC上同时使用服务器-客户端通信和客户端-服务器通信?
容易:
一台PC可以首先运行server.py
-side代码运行python解释器。下一步可以启动第二个python解释器(在另一个linux终端,Windows窗口或cmd
-shell中)并运行-sideclient.py
代码。这将起到魅力。
如果对细节REQ/REP
感兴趣,请注意,可伸缩的正式通信原型模式对于任何生产级专业代码而言都是危险的,因为它可以(并且将)轻松地将分布式系统转变为原则上无法避免,无法挽救的相互僵局。 (简单地说,散布的FSA:FSA对可能陷入死锁状态,任何一方都无法从中解救并继续进行相互合作的流程)
我们是否需要创建线程来实现这一目标?
好吧,实际上有许多线程已经在“内部”运行,如果没有其他线程,则每个python + ZeroMQContext()
组合内部已经有一些线程。
如果您打算指示python代码开始使用更多线程,那么在可以帮助解决此类决策难题之前,应该有更多关于这种意图的详细信息。使用线程还有一个主要的缺点-已知的python GIL锁定实际上将任何这样的尝试变成纯净的[SERIAL]
,是的,逐步的顺序执行的代码执行(因为这有助于将GIL保护器的作用保持在数据垄断访问(-[SERIAL]
引起的代码执行永远不会进入非原子写入的冲突情况,竞争条件越少,因为GIL步进实际上使每个操作都是原子步-当然,花费大量费用,[SERIAL] GIL逐步遍历所有线程池执行的代码执行图。安全吗?是的,但是比必要的要慢。
如果确实很认真并且热衷于研究[分布式系统]设计,那么最好的下一步就是阅读一本神话般的Pieter HINTJENS的书[ Code Connected,第1卷](pdf在线),所有的时间和精力都可以从获得精心设计的实用意见和大量经验,因此需要尽可能地从ZeroMQ中汲取资源,并将其提供给用户进一步的智能设计。
请继续关注,这是朝正确方向迈出的一步。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句