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

时间:2018-07-27 11:27:00

标签: microservices spring-cloud spring-cloud-stream spring-cloud-netflix spring-cloud-dataflow

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

作为示例,假设我们在系统中具有以下功能: 1.有关用户的信息

  1. 订单卡
  2. 产品目录
  3. 发送各种通知
  4. 从第三方系统获取有关订单的信息
  5. 订单事件的处理,过滤和转换
  6. 根据订单处理各种规则并发送通知
  7. 使用网络套接字(具有预过滤功能)将有关用户订单的信息从第三方系统发送给其他用户

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

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

1。

enter image description here

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

  • Spring Cloud平台允许以这种方式使用微服务吗?
  • 性能-事件数量非常多,这会大大减慢事件的处理速度。是否可以使用其他方法,例如不是通过API网关而是通过内存缓存进行通信?

2。 enter image description here

由于这些服务之间存在某些功能相交,因此在了解Spring Cloud Stream框架时,我对什么是“微服务”存在疑问。特别是,拥有单独的服务是否有意义? Spring Cloud Stream中的微服务是否可以具有REST API,可以与数据库一起使用并同时处理事件?这样的图有意义吗?现在可以建立这样的堆栈吗?

问题是,哪种方法更正确? Spring Data Streams所说的“微服务”是什么意思?

1 个答案:

答案 0 :(得分:0)

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

可以,是的。

“订单”,“用户”和“目录”看起来像域对象,它们将一起解决一个用例。例如,查询特定产品的多个订单,然后按用户分组。有一些样本阐明了实体之间的数据流以解决类似的问题。这是live code-walkthrough个事件驱动系统的实际应用。也有social-graph应用程序的另一个示例。

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

我希望这能给我一个想法。尝试使用SCSt / SCDF构建较小的东西,进行验证,然后扩展到更复杂的用例。