问题标签 [service-discovery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
load-balancing - Zookeeper v/s 硬件负载均衡器
我最近一直在研究 Zookeeper,想知道它与以下用例的硬件负载均衡器相比如何:
- 服务发现
- 使用 ZooKeeper,服务器将在一个公共 znode 上注册自己,客户端可以查找该 znode 以获取已注册服务器的列表。
- 使用硬件负载均衡器,我可以在 VIP 名称后面有几个服务器 IP,而客户端只知道 VIP 地址。
- 负载均衡
- 使用 ZooKeeper,负载平衡发生在客户端。
- 使用 H/W LB,负载平衡发生在负载平衡器端!
那么对于上述 2 个用例,使用 ZooKeeper 相对于硬件负载均衡器有什么特别的优势吗?
c# - 调用 WCF 客户端函数在 IIS 上不起作用
我使用 WCF 发现创建了一项服务。当它部署在特定端口上时一切正常(使用 VS2010 调试),但是当我尝试将其部署到 IIS 时,它找到了服务但无法运行任何方法。
这是代码:
尝试运行该client.getMsg()
方法时,出现以下错误:
EndpointNotFoundException:
在 http://computerName.domain/services/Service.svc上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。
但是我得到了地址,这意味着它找到了它。如果我使用调试部署器(而不是 iis),我会在其中找到它http://localhost:port/services/Service.svc
并且它运行得非常好。我怎样才能将它部署到 iis 而没有问题?
操作系统:win7 64位
配置文件:
udp - 分布式服务器实例之间的数据广播
我正在尝试就我的特定应用程序中的服务“名册”建议获得一些反馈。我有一个与客户端保持持久套接字连接的服务器应用程序。我想进一步开发服务器以支持分布式实例。服务器“A”需要能够将数据广播到其他在线服务器实例。所有其他活动实例也是如此。
我正在尝试研究的选项:
- Redis / Zookeeper / Doozer - 每个服务器实例都会将自己注册到配置服务器,并且所有连接的服务器都会在配置更改时接收到配置更新。然后怎样呢?
- 维护与每个服务器实例的端到端连接并使用每个传出数据迭代列表?
- 一些自定义的 UDP 多播,但我需要在它之上增加我自己的可靠性。
- 自定义消息代理 - 在每个服务器连接并通知它时运行和维护注册表的服务。与每个服务器保持连接以接受数据并将其重新广播到其他服务器。
- 一些可靠的 UDP 多播传输,其中每个服务器实例只是直接广播并且不维护名册。
以下是我的担忧:
- 我很想避免依赖外部应用程序,例如 zookeeper 或 doozer,但如果它是最好的解决方案,我显然会使用它们
- 使用自定义消息代理,我不希望它成为吞吐量的瓶颈。这意味着我可能还必须能够运行多个消息代理并在扩展时使用负载均衡器?
- 如果我设法自己滚动,多播不需要任何外部进程,但否则我可能需要使用 ZMQ,这再次使我处于依赖的情况。
我意识到我也在谈论消息传递,但它与我采用的解决方案密切相关。顺便说一句,我的服务器是用 Go 编写的。关于保持可扩展性的最佳推荐方法的任何想法?
* 目标编辑 *
我真正要问的是,在给定以下条件的情况下,在分布式服务器实例之间实现广播数据的最佳方法是什么:
- 每个服务器实例与其远程客户端保持持久的 TCP 套接字连接,并在它们之间传递消息。
- 消息需要能够广播到其他正在运行的实例,以便它们可以传递到相关的客户端连接。
- 低延迟很重要,因为消息传递可以是高速的。
- 顺序和可靠性很重要。
*更新的问题摘要*
如果您有多个服务器/多个端点需要在彼此之间发布/订阅,那么它们之间的推荐通信模式是什么?一个或多个消息代理将消息重新发布到一组已发现的服务器?直接来自每台服务器的可靠多播?如何在分布式系统中连接多个端点,同时保持低延迟、高速度和可靠交付?
minecraft - 动态服务器发现列表
我想创建一个应用程序服务器可以联系的 Web 服务,以将自身添加到实现该应用程序的服务器列表中。然后,客户端可以联系该服务以获取服务器列表。类似于minecraft 的心跳如何将您的服务器添加到主服务器列表。
我可以很容易地自己实现它,但我希望有人已经创建了这样的东西。
高级功能会很有用。像:
- 允许客户端对特定于应用程序的属性(例如当前连接到服务器的用户数)执行查询
- 将服务器列表分布在多台机器上
- 如果服务器在一段时间内未发送心跳,则将列表中的服务器条目超时
有人知道这样的服务吗?我知道有用于进行本地 LAN 服务发现的开放协议和服务器,但这将是一个 WAN 服务。
java - 客户端-服务器中的 JmDNS 服务发现
我正在尝试使用 JmDNS 在我的客户端-服务器应用程序中启用服务发现。我完全理解服务器端的服务注册表,代码如下:
但是,我无法弄清楚如何让我的客户端从注册的服务中检索端口号和 IP 地址,并使用这些数据打开 TCP 连接。我搜索了如何使用 JmDNS 的示例,但无济于事。这里有人可以给我一些基本的例子吗?或者,如果有人有任何指向 JmDNS 上好的资源/教程的链接,他们可以提供吗?
注意:JmDNS 在这里是必需品,所以我希望得到仅与 JmDNS 相关的答案,而不提供替代方案。此外,我已经广泛查看了 JmDNS API,但仍然无法弄清楚,所以请不要将文档链接作为资源发布。
谢谢。
wcf - 从 WP7 发现本地运行的 WCF
我有一个在 Windows 服务中运行的 WCF 服务,它位于我的本地网络上。我想要的是能够从我的 WP7(在同一网络上)上的 Silverlight 应用程序中发现 WCF。
我知道 WCF 中有一个发现功能,但是它需要 UDP,而 WP7 不支持该功能。那么还有其他方法可以发现本地 WCF 吗?
在启动 WCF 之前,我也不知道 WCF 服务的 IP 地址。
.net - Windows 中的 IP 发现
客户发现服务的一些策略是什么?
例如,我们有一个客户端想要连接到服务(假设它们在同一网络上的同一子网中),有什么好的方法可以发现服务正在运行,然后客户端会尝试连接到它?
我们是否希望客户端经常广播并等待服务响应?或者我们是否会经常广播服务并让客户收听?
我认为我们希望服务能够自行广播并让客户收听。
这有什么标准做法?
例如,该服务类似于音乐播放器,当客户端通过 wifi/网络对其进行远程控制时播放音乐。想想 iTunes Remote for iPhone 控制 PC/MAC 上的 iTunes 播放器。
bluetooth - BlueCove 客户端无法识别 PyBlueZ 服务
我在使用 PyBlueZ 编写的 Ubuntu 桌面上运行了一个蓝牙服务器。该服务器正在通过 UUID 宣传某个服务。我已经使用我也用 PyBlueZ 编写的客户端彻底测试了这个服务器。
现在我正在尝试使用 BlueCove 实现 Java 客户端。我的 BlueCove 客户端可以成功找到我的桌面(我通过打印出“用户友好名称”进行了检查)。但是,当我在桌面上搜索广告 UUID 的服务时,没有找到任何服务。我没有收到错误或任何东西,我只是没有收到发现服务的任何回调。
连接这两个系统时是否有任何异常情况?UUID 是相同的,尽管我注意到 PyBlueZ 格式要求 UUID 中的破折号“-”,而 BlueCove 需要一个连续的十六进制数字字符串。我认为这纯粹是一个表象问题。
最后,在一个不相关的问题上,那里有 BlueCove 社区吗?我一直在想出资源极度短缺来找到我的 BlueCove 问题的答案......
android - Android 蓝牙:服务发现失败,连接到台式机/笔记本电脑
我有一个几个月前工作的 Android 应用程序,我可以用它通过蓝牙将我的 Droid X2 连接到华硕 Transformer 平板电脑。该连接工作正常。
我刚刚在几台 Ubuntu 机器上使用 PyBlueZ 完成了客户端/服务器对的编码,并在 Windows 机器上使用 BlueCove 完成了一个类似的客户端/服务器对。
我认为将这三个工作的、经过测试的系统连接起来会轻而易举。不幸的是,我目前无法将我的 Droid X2 连接到我的其他机器,也无法将我的其他机器连接到我的 Droid X2(我不再拥有 ASUS Transformer)。但是,我可以毫无问题地将我的 PyBlueZ 客户端/服务器对连接到我的 BlueCove 客户端/服务器对。
将 Android 设备连接到台式机/笔记本电脑时是否有任何已知的复杂性?任何必须提供的额外信息,或不同的沟通方式?我正在尝试使用不安全的 rfcomm 通道连接到服务列表。我在两边都使用相同的 UUID。而且,我的 Droid X2 和华硕 Transfomer 之间有这种不安全的 rfcomm 服务连接。
一个有趣的方面是,即使所有系统都使用 UUID,我的 PyBlueZ 和 BlueCove 实现也有服务名称,但 Android 不要求服务名称来连接服务,只要求 UUID。这可能是个问题吗?
谢谢。
python - Python 中的服务定位协议 (SLP) 绑定
是否有用于在 Python 中实现服务位置协议(SLP) 客户端的库?