我实际上正在研究服务发现模式,但我真的不了解它的工作方式。
我已经阅读了一篇文章,其中使用了一个名为etcd(http://lukebond.ghost.io/service-discovery-with-etcd-and-node-js/)的nodejs库,它似乎很容易使用,就像设置模式url lile / my / service一样。
然后我有一些问题:
阅读本文后,我试着了解zookeeper的工作原理。有了这个,并使用标准库(https://github.com/yfinkelstein/node-zookeeper),我遇到了一个问题:
感谢所有人的进步
感谢您提前
答案 0 :(得分:1)
Here是关于服务发现模式的好文章。 以下是一些基于标准模式的答案:
如何从其他nodejs app访问此服务?
像etcd这样的服务发现工具会返回您需要的服务的列表端点。请参见示例here:
{
"action": "get",
"node": {
"key": "/",
"dir": true,
"nodes": [
{
"key": "/foo_dir",
"dir": true,
"modifiedIndex": 2,
"createdIndex": 2
},
{
"key": "/foo",
"value": "two",
"modifiedIndex": 1,
"createdIndex": 1
}
]
}
}
如果我想访问/ my / service / something,我该怎么办? 它没有在服务注册表中定义,我们承认我不知道 在所有的API?
我认为你的意思是“如果/ my / service / something is undefined我该怎么办?” 在这种情况下,完全取决于您的应用程序的逻辑。如果您希望该值在某个时刻出现,我认为合理的方式会重试。
我必须设定的价值是多少?事实上,与动物园管理员,似乎 我们必须设置模式URL和值。这个值是什么?
价值就是你希望它在那里的任何东西。使用ZooKeeper,您可能希望为每个服务器节点使用ephemeral nodes。您可以保留连接到该节点所需的数据,也可以保留所有数据。
带有zookeeper的服务儿童是什么?这是什么目的 概念?
我认为您正在引用ZooKeeper ZNodes的层次结构。我认为在这种情况下,“孩子”将是属于某个父母的所有节点。例如,对于节点/ a / b / c和/ a / b / d,它们的父节点是/ a / b,因此/ a / b的子节点是/ a / b / c和/ a / b / d。 / p>
希望这有帮助。