Spring Cloud Netflix & Spring Cloud Data Flow 微服务架构

Spring Cloud Netflix & Spring Cloud Data Flow microservice arheticture

我正在开发一个应用程序,它必须处理来自其他系统的事件并提供 REST API。我想将应用程序拆分为微服务,并且我试图弄清楚我应该使用哪种方法。我提请注意 Spring Cloud Netflix 和 Spring Cloud Data Flow 工具包,但我不清楚它们是否可以集成以及如何集成。

举个例子,假设我们在系统中有以下功能: 1. 用户信息

  1. 订单卡
  2. 产品目录
  3. 发送各种通知
  4. 从第三方系统获取订单信息
  5. 订单事件的处理、过滤、转换
  6. 根据订单和发送通知处理各种规则
  7. 使用websockets(带预过滤)从第三方系统向其他用户发送用户订单信息

1-4点-我看到了经典的微服务架构。框架 - Spring Netflix 堆栈。 第 5-9 点 - 最好使用事件驱动的方法。工具包 - Spring 数据流。

问题是如何在这些平台之间建立通信。 特别是 - POPULATE ORDER DETAILS SERVICE 必须转换传入订单并在数据库中保存附加信息(以备不时之需)。 ORDER RULE EXECUTOR SERVICE 应该获取有关当前保存的规则的信息,执行它们并发送通知。 WEB SOCKET SERVICE 应仅在特定用户设置了过滤器时才发送订单信息,而 ORDER SAVER SERVICE 应将有关已转换订单的信息存储在数据库中。

1.

两个平台内的微服务之间的通信可以使用API GATEWAY,但在这种情况下,我有以下问题:

2。

由于一些功能在这些服务之间有交集,所以我对Spring Cloud Stream框架的理解有一个疑问,什么是"microservice"。特别是,拥有单独的服务是否有意义? Spring Cloud Stream 中的微服务能否拥有 REST API、与数据库一起工作并同时处理事件?这样的图是否有意义,目前是否可以构建这样的堆栈?

问题是这些方法中哪种更正确? Spring 数据流对 "microservice" 意味着什么?

鉴于 post 中的信息有限,很难在与此类架构相关的所有事项上都令人信服,但我将尝试分享一些细节并提供示例。同样出于同样的原因,很难端到端地解决您的需求。从表面上看,您似乎正在尝试构建事件驱动的应用程序,并且想知道 Spring Cloud Stream (SCSt) 和 Spring Cloud Data Flow (SCDF) 是否可以提供帮助。

他们可以,是的。

Order、User 和 Catalog 看起来像是领域对象,它们会一起解决一个用例。例如,查询特定产品的多个订单,并按用户分组。有一些示例阐明了实体之间的数据流以解决类似问题。这里还有一个 live code-walkthrough of event-driven systems in action. There's another example of social-graph 应用程序。

虽然这些事件驱动的应用程序可以 运行 在消息代理(例如:Kafka 或 RabbitMQ)的帮助下作为单独的服务独立运行,但您当然也可以在 SCDF 中注册它们并在SCDF DSL 构建连贯的数据管道。我们正在为这些类型的用例扩展 SCDF 中更直接的功能,但现在也有一些方法可以用当前的功能来协调它们。关注 spring-cloud/spring-cloud-#2331#issuecomment-406444350 了解更多详情。

我希望这能提供一个思路。尝试使用 SCSt/SCDF 构建一些小东西,证明它,并扩展到更复杂的用例。