可靠的有状态服务与事件中心
Reliable Stateful Service vs. Event Hub
有了微软新的微服务框架,构建有状态服务成为可能。是否可以使用这样的服务来接收来自不同设备的数据而不是使用事件中心?例如。我的设备将数据推送到无状态 Web api 服务(可能近乎实时地使用 SignalR)并且 api 服务将数据转发到可靠队列中的可靠有状态服务。或者给一个可靠的演员。
这些服务是可扩展的,那么我为什么要为此目的使用事件中心?在没有事件中心的情况下将数据直接发送到服务是否存在任何性能或延迟问题?
在理论上和实践中是的,您可以构建自己的无状态服务,该服务具有高度可扩展性并且可以根据需要接受尽可能多的负载。在大多数情况下,它是可以接受的。
就金钱而言,与 Event Hub 订阅相比,托管仅接收数据并转发给 Actors 的服务实例的成本要高得多。您必须为每个 Service Fabric 实例付费,并实际编写业务逻辑来处理可伸缩性,即使 SF 使其变得微不足道,仍然存在 space 故障和错误。
事件中心旨在承受大多数项目永远无法达到的令人难以置信的大规模。它们针对低延迟进行了优化,每秒可轻松处理数百万个请求。如果这不是你的情况,请不要打扰。
您只需要在结构中 运行 事件中心事件侦听器,因为它充当消息流的可靠 "front door",并使服务器架构更简单、更可靠。这主要是一个架构决定,取决于项目。
有了微软新的微服务框架,构建有状态服务成为可能。是否可以使用这样的服务来接收来自不同设备的数据而不是使用事件中心?例如。我的设备将数据推送到无状态 Web api 服务(可能近乎实时地使用 SignalR)并且 api 服务将数据转发到可靠队列中的可靠有状态服务。或者给一个可靠的演员。
这些服务是可扩展的,那么我为什么要为此目的使用事件中心?在没有事件中心的情况下将数据直接发送到服务是否存在任何性能或延迟问题?
在理论上和实践中是的,您可以构建自己的无状态服务,该服务具有高度可扩展性并且可以根据需要接受尽可能多的负载。在大多数情况下,它是可以接受的。
就金钱而言,与 Event Hub 订阅相比,托管仅接收数据并转发给 Actors 的服务实例的成本要高得多。您必须为每个 Service Fabric 实例付费,并实际编写业务逻辑来处理可伸缩性,即使 SF 使其变得微不足道,仍然存在 space 故障和错误。
事件中心旨在承受大多数项目永远无法达到的令人难以置信的大规模。它们针对低延迟进行了优化,每秒可轻松处理数百万个请求。如果这不是你的情况,请不要打扰。
您只需要在结构中 运行 事件中心事件侦听器,因为它充当消息流的可靠 "front door",并使服务器架构更简单、更可靠。这主要是一个架构决定,取决于项目。