Redis 可扩展的事件驱动体系结构,具有反应式编程和向客户端传输数据

Redis 可扩展的事件驱动体系结构,具有反应式编程和向客户端传输数据,redis,reactive-programming,spring-webflux,event-driven-design,Redis,Reactive Programming,Spring Webflux,Event Driven Design,我是反应式编程的新手,我正在尝试学习SpringWebFlux、反应式流媒体等。我仍在尝试理解我无法在脑海中收集片段的概念 其实我有一个目的: 客户端可以通过SSE(服务器端事件)或WebSocket连接到我的后端服务。(未能决定) 客户端可以发送事件数据,我想实时处理事件。我想对事件使用业务逻辑。。如果我的业务逻辑工作正常,我希望不提供相关的连接客户端并向它们发送数据 例如: Client1:使用用户ID、城市、年龄发送事件 客户端2:发送带有用户ID、城市、年龄的事件 我的业务逻辑正常,我注

我是反应式编程的新手,我正在尝试学习SpringWebFlux、反应式流媒体等。我仍在尝试理解我无法在脑海中收集片段的概念

其实我有一个目的:

客户端可以通过SSE(服务器端事件)或WebSocket连接到我的后端服务。(未能决定)

客户端可以发送事件数据,我想实时处理事件。我想对事件使用业务逻辑。。如果我的业务逻辑工作正常,我希望不提供相关的连接客户端并向它们发送数据

例如:

Client1:使用用户ID、城市、年龄发送事件

客户端2:发送带有用户ID、城市、年龄的事件

我的业务逻辑正常,我注意到他们在同一年龄段和同一城市,我想通知他们,可能有很多客户,但只有客户1和客户2匹配。。因此,我能够将数据发送到相关的连接客户端。当客户端的事件相互触发时,应该有一个事件驱动的系统。(如果它不是一个事件驱动系统,我应该检查它们是否匹配,就像客户端在某个时间间隔内要求一些我不想做的事情,因为这会耗尽服务器的资源……)

所以我的问题是:我可以用反应式编程来实现吗?如果是我的业务逻辑工作,发送相关连接的客户端以匹配事件!这样,其他连接的客户端就不会受到影响

我在互联网上发现:

我能够做到将事件保存到MongoDB中,MongoDB通过相关过滤器连续返回数据。如果插入了任何新文档,它将通过Flux进行通知。但我不知道这是否是一个好的实践,因为与MongoDB的连接将保持开放

还有一个问题:如果我的应用程序可以扩展到4-5个实例,那么它应该能够相互通信并进行正确的匹配!在我的示例中,client1和client2应该连接到我的应用程序的同一个实例。在其他方面,他们无法匹配,对吗?我认为,如果我在反应式编程中使用Sink,它就存在于内存中。。因此,每个应用程序都将负责连接客户端并发布其自己的订户,从而导致错误或缺少匹配

可以使用反应式Redis或反应式Apache Kafka。。??Redis用于在线用户,Kafka用于使用密钥获取实例中的事件。。比如拿到城市ID,订单就有保障。。我真的需要吗

反应式微服务实际上被认为是事件驱动的解决方案吗?它们不只是提高传统请求-响应系统性能的一种方法吗

很快,我想通过查看用户的事件来通知相关的连接客户端,当匹配项在彼此之间应用时!通过可扩展的应用程序系统实现这一点

我的头脑非常混乱,任何帮助都将不胜感激。谢谢