Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 微服务/职责之间的沟通_Design Patterns_Microservices - Fatal编程技术网

Design patterns 微服务/职责之间的沟通

Design patterns 微服务/职责之间的沟通,design-patterns,microservices,Design Patterns,Microservices,我是微服务新手,在阅读了很多文档之后,我仍然对很多事情有一些疑问。我举了一个我现在想要实现的例子: 场景: 微服务架构 文件服务器将存储来自多个源的文件 每个微服务都有自己的数据库 TemplateService数据库: 模板ID(PK):guid FileId(~FK):guid 模板名 文件服务数据库: FileId(PK):guid 文件名 路径 用例: 用户希望将模板上载到应用程序 问题:(以及我的想法) 谁创建GUID(文件ID) UI创建GUID,并同时调用模板服务和文

我是微服务新手,在阅读了很多文档之后,我仍然对很多事情有一些疑问。我举了一个我现在想要实现的例子:

场景:

  • 微服务架构
  • 文件服务器将存储来自多个源的文件
  • 每个微服务都有自己的数据库
TemplateService数据库:

  • 模板ID(PK):guid
  • FileId(~FK):guid
  • 模板名
文件服务数据库:

  • FileId(PK):guid
  • 文件名
  • 路径
用例: 用户希望将模板上载到应用程序

问题:(以及我的想法)

谁创建GUID(文件ID)

  • UI创建GUID,并同时调用模板服务和文件服务
  • UI调用模板服务,该服务创建GUID,然后调用文件服务
  • 谁处理文件服务器

  • UI将文件直接发送到文件服务器(或者可能发送到另一个服务,如FileManager?)
  • UI将文件发送到FileService,该服务将其存储在文件服务器中
  • 更新日期:2018/03/27

    因此,对于UserInput SaveTemplate(),我的新设计如下所示


    考虑适合微服务体系结构的事件源模式(例如,Kafka作为事件存储)。
    UI将文件发布到Kafka,然后另一个服务可以使用Kafka中的文件并存储一个文件

    ,,

    考虑适合微服务体系结构的事件源模式(例如,Kafka作为事件存储)。
    UI将文件发布到Kafka,然后另一个服务可以使用Kafka中的文件并存储一个文件

    ,,

  • 不要在客户端应用程序上生成您的GUID。这是一个坏主意,因为如果这通常是业务实现,那么应该包含在您的绑定上下文服务中。客户端UI应该尽可能精简和哑
  • 我建议您为layer 2/bounded context API提供一个文件服务器。这将使它们独立于彼此的存在 通过这种设计,您还可以改进一些东西:

  • 考虑引入API聚合器。API聚合器将负责实现从客户端应用程序到二级API的请求路由。这样做有助于封装级别2(有界上下文服务),从而使您能够灵活地交换级别API。客户端应用程序直接与专用于有界上下文的API通信,这会使您无法对这些API进行自主更改
  • 考虑实施一个
  • 为了让您了解通常的微服务体系结构是什么样子,这里是我设计的一个体系结构图:

  • 不要在客户端应用程序上生成您的GUID。这是一个坏主意,因为如果这通常是业务实现,那么应该包含在您的绑定上下文服务中。客户端UI应该尽可能精简和哑
  • 我建议您为layer 2/bounded context API提供一个文件服务器。这将使它们独立于彼此的存在 通过这种设计,您还可以改进一些东西:

  • 考虑引入API聚合器。API聚合器将负责实现从客户端应用程序到二级API的请求路由。这样做有助于封装级别2(有界上下文服务),从而使您能够灵活地交换级别API。客户端应用程序直接与专用于有界上下文的API通信,这会使您无法对这些API进行自主更改
  • 考虑实施一个
  • 为了让您了解通常的微服务体系结构是什么样子,这里是我设计的一个体系结构图:


    文件是一个真正的业务概念,还是仅仅是保存模板的基本技术格式?文件将从不同的来源上传,所以它应该是一个商业概念。文件是一个真正的商业概念,还是它只是模板保存的基础技术格式?文件将从不同的来源上传,所以它应该是一个商业概念。我更新了我的帖子,只是考虑了saveTemplate操作。未显示Saga消息。我的图表中未显示Saga消息,因为它们非常依赖于功能/业务,除非有明确的用例需要映射,否则对图表没有意义。我会在回家后更新我的答案,伙计:-)对不起,我是说在我的设计中“不会显示传奇消息:)我已经更新了我的帖子,只是考虑了一个saveTemplate操作。未显示Saga消息。我的图表中未显示Saga消息,因为它们非常依赖于功能/业务,除非有明确的用例需要映射,否则对图表没有意义。我回家后会更新我的答案,伙计:-)对不起,我是说在我的设计中没有显示“传奇消息”: