可能绝大多数接触zeromq的人都会对其去中心的自由感到满意,同时却又对数据传输的可靠性产生怀疑甚至沮丧(如果恰巧你也知道"兔子"的话)。
在这里,或许可以为此作出一些弥补,增强诸位使用它的信心。
zeromq之所以传输的速度无以伦比,它的"zero copy"功不可没,在这种机制下,减少了数据的二次缓存和挪动,并且减少了通讯间的应答式回应。不过在快速的同时,也降低了数据传递的可靠性。而打开copy机制,则在牺牲一定速度的代价下提升了其稳定性。
除了zero-copy机制外,zeromq还提供了一种命名机制,用以建立所谓的"Durable Sockets"。从之前的章节中已知,数据传输层面的事情已经由zeromq接管,那么在 “Durable Sockets”下,即使你的程序崩溃,或者因为其他原因导致节点丢失(挂掉?)zeromq会适当的为节点存储数据,以便当节点重新连上时,可以获取之前的数据
未启用命名机制时:
[img]http://github.com/imatix/zguide/raw/master/images/fig25.png[/img]
启用后:
[img]http://github.com/imatix/zguide/raw/master/images/fig26.png[/img]
相关设置:
注意:
1.如果要启用命名机制,必须在连接前设定名字。
2.不要重名!
3.在连接建立后不要再修改名字。
4.最好不要随机命名。
5.如果需要获知消息来源的名字,需要在消息发送时附加上(xrep会自动获取)名字。
(未完待续)
在这里,或许可以为此作出一些弥补,增强诸位使用它的信心。
zeromq之所以传输的速度无以伦比,它的"zero copy"功不可没,在这种机制下,减少了数据的二次缓存和挪动,并且减少了通讯间的应答式回应。不过在快速的同时,也降低了数据传递的可靠性。而打开copy机制,则在牺牲一定速度的代价下提升了其稳定性。
除了zero-copy机制外,zeromq还提供了一种命名机制,用以建立所谓的"Durable Sockets"。从之前的章节中已知,数据传输层面的事情已经由zeromq接管,那么在 “Durable Sockets”下,即使你的程序崩溃,或者因为其他原因导致节点丢失(挂掉?)zeromq会适当的为节点存储数据,以便当节点重新连上时,可以获取之前的数据
未启用命名机制时:
[img]http://github.com/imatix/zguide/raw/master/images/fig25.png[/img]
启用后:
[img]http://github.com/imatix/zguide/raw/master/images/fig26.png[/img]
相关设置:
zmq_setsockopt (socket, ZMQ_IDENTITY, "Lucy", 4);注意:
1.如果要启用命名机制,必须在连接前设定名字。
2.不要重名!
3.在连接建立后不要再修改名字。
4.最好不要随机命名。
5.如果需要获知消息来源的名字,需要在消息发送时附加上(xrep会自动获取)名字。
(未完待续)
本文探讨了ZeroMQ在去中心化架构中的优势与挑战,特别是针对数据传输可靠性的改进方案。通过开启copy机制和利用DurableSockets特性,即便在节点故障的情况下也能确保数据的完整传递。
758

被折叠的 条评论
为什么被折叠?



