繁体   English   中英

服务发现模式

[英]Service discovery pattern

我实际上正在研究服务发现模式,但我并不真正了解它的工作方式。

我已经阅读了一篇文章,该文章使用的节点库名为etcd( http://lukebond.ghost.io/service-discovery-with-etcd-and-node-js/ ),使用起来似乎很容易,就像仅设置模式网址一样lile /我/服务。

然后我有一些问题:

  • 如何从另一个nodejs应用程序访问此服务?
  • 知道服务注册表中未定义/ my / service / something,并且我承认我根本不知道该API怎么办?

阅读本文后,我试图了解Zookeeper的工作原理。 有了这个,并使用标准库( https://github.com/yfinkelstein/node-zookeeper ),我遇到了一个问题:

  • 我必须设置什么值? 实际上,对于Zookeeper,似乎我们必须设置一个模式url和一个值。 这个值是多少?
  • 带动物园管理员的儿童有哪些服务? 这个概念的目的是什么?

谢谢大家的进步

谢谢前进

是一篇关于服务发现模式的好文章。 以下是一些基于标准模式的答案:

如何从另一个nodejs应用程序访问此服务?

诸如etcd之类的服务发现工具将为您返回所需服务的端点列表 在这里查看示例:

{
    "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未定义该怎么办”? 在这种情况下,这完全取决于应用程序的逻辑。 我认为,如果您期望该值会在某个时候出现,那么将重试合理的方法。

我必须设置什么值? 实际上,对于Zookeeper,似乎我们必须设置一个模式url和一个值。 这个值是多少?

该值是您想要的任何值。 使用ZooKeeper,您可能希望对每个服务器节点使用临时节点。 您可以将需要连接到该节点的数据保留在内部,也可以什么也不保留。

带动物园管理员的儿童有哪些服务? 这个概念的目的是什么?

我认为您指的是ZooKeeper ZNodes的层次结构。 我认为在这种情况下,“子代”将是属于某个父代的所有节点。 例如,对于节点/ a / b / c和/ a / b / d,其父节点为/ a / b,因此/ a / b的子节点为/ a / b / c和/ a / b / d。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM