我正在努力理解如何在我的体系结构中实现服务发现模式。我理解,一个服务的每个实例在启动时必须在服务注册表中注册,然后每次刷新注册,例如30秒。
假设我有一个purchases service,需要从clients service读取一些数据。两者都是基于REST的服务。
我是否需要每次在服务注册表中查询clients service的S URL,对它提出请求?它是否会对性能产生影响?
发布于 2016-04-22 10:14:10
它不是有表现的后果吗?
是的,但是多少钱?例如,您多长时间查询一次服务(以及注册表)。以及与服务的互动程度。例如,您是在查询注册表一次,然后与服务进行复杂的交互。如果您的注册表服务是轻量级的(我无法想象它是轻量级的),那么我不会太担心它。
如果它确实成为一个问题,为什么不实现一个基于异常的机制。例如,查询注册表一次,然后使用它,直到遇到错误为止,在这种情况下,您将返回注册表查找新服务。
这个问题有各种各样的解决办法。不使用注册表的一个可能的解决方案是让每个服务广播其位置(通过IP广播或多播)。每个客户端都可以监听这些信息,并维护一组已知的服务(在条目消失时超时)。这可能更复杂,但避免了单一注册表可能引入的单点故障。
https://softwareengineering.stackexchange.com/questions/316500
复制相似问题