2

这些天我正在使用 Golang 绑定学习 nanomsg 和 zeromq。我已经使用可以工作的 Req-Rep 进行了测试,但是使用这种机制来构建可靠的内部服务器以在高并发请求(但来自有限的客户端源 < 30)下提供数据服务是一个正确的想法吗?

一些伪代码可能看起来像,

for {
    data, conn = socketRep.readData()
    go func(data, conn){
        result=process(data)
        conn.sendReply(result)
        conn.close()
    }()
}

如何在 nanomsg 中实现类似的通信模式?有没有可用的示例(C 可以)?

====更新====

抱歉,这个问题看起来太宽泛了。对我来说最重要的问题是,“是否有任何可行的 Req/Rep 示例(C 可以)?”

4

1 回答 1

2

在决定“如何构建可靠的服务器......以服务高并发负载”时,首先应该知道的事情

学习任何新的图书馆都是令人兴奋的,并且会产生很多新的见解。

一个非常重要的洞察力是在自己的学习曲线轨迹上承担适当规模和合理的挑战。

如果ZeroMQ 的共同之父Pieter Hintjens在进入有关设计任何可靠服务的章节时了 [几乎以粗体]以下评论,他非常清楚为什么要在即将出现的此类设计段落之前加上类似的突出显示警告...

  • (cit.:)“......在这里进入令人不快的复杂领域,让我起身再喝一杯浓缩咖啡。你应该明白,制作“可靠”的消息传递足够复杂,以至于你总是需要问,“我们真的需要这个?”在开始之前。如果您可以摆脱不可靠或“足够好”的可靠性,您可以在成本和复杂性方面取得巨大的胜利。当然,您可能会不时丢失一些数据。这通常是一个很好的权衡……”

Nanomsg 毫无疑问是一个伟大的智能图书馆项目

从 Pieter Hintjens 关于高级设计的书籍中带来的高级哲学思想,即构建“超越基本 ZeroMQ”的可扩展正式通信模式仍然大致相同

恕我直言,在开始任何编码之前,最好多花几周时间来研究 Pieter Hintjens 书中的想法、设计范式和故事。

两本 400 多页的书 ZeroMQ 指南 - 适用于 Python 开发人员,第 II 节,高级 ZeroMQ,(即第 6.2、6.7、7.1 和 7.5 章)

一本 300 多页的书“Code Connected Volume 1”,(即在第 5 章中增加可靠性的过程 - 无论是为了可靠性本身,还是为了通过负载平衡解锁下一个级别的性能资源池)

将帮助任何人开始探索这个伟大但令人兴奋的分布式系统架构领域,并将有助于获得设计可行方法所需的观点,而无需重新探索许多已被证明是死胡同的死胡同。

于 2014-08-06T12:57:01.337 回答