例如,一旦用户到达我们工作流中的付款步骤,需要调用许多不同的服务(例如付款,电子邮件生成,内容生成)。前端是否应该或应该设计一个服务来处理这种类型的请求?如果是这样,该服务应该如何设计,以便它可以处理复合请求,而不用特别硬编码这些请求的组成部分?在微服务体系结构中,您如何处理必须进行次要数据处理和调用其他服务的复合请求?
回答
您正在寻找的东西沿线BPEL来抽象您的业务逻辑。除非您明确需要将此外部化,否则我强烈建议您不要。测试更加困难,并且增加了服务的复杂性。
这就是说,你可能想要将你的其他服务与外观包装起来,这样你就可以与呼叫细节隔离了。这允许您的逻辑是可测试的,并允许这些服务实现独立于应用程序的其余部分进行更改。
这真的取决于你指的是什么。
复合UI
在用户界面中,你应该建立一个复合的UI。 (微)服务应该负责垂直层面,而不是水平层面。例如,业务层或数据层应该被金融,销售等垂直行业所取代,在这些行业中,您可以构建更小的组件。这些组件在技术上负责从存储到用户界面的业务问题。我主要使用AngularJS这样的框架,其中一部分UI需要一些数据,各种服务可以添加到数据中。例如亚马逊推荐的书籍列表。您从映射到单个产品ID的url开始。您从ServiceA获取书籍信息,ServiceB的价格,ServiceC的运输成本,ServiceD的折扣等。还有一些推荐书籍的列表。该列表包含来自ServiceB的多个产品ID(例如),并且这些产品会再次向ServiceA发送多个请求以获取图书信息,如名称&图像网址。
现在发票可以是相同的,也可以是电子邮件。创建它就好像它是一个复合UI。
集成
当你想要检索的数据能够传送到外部系统,例如,没有用户界面。它不属于财务或销售或任何其他。例如,创建一个新的边界,如果您愿意,则称为IT/Ops。例如,它的责任是与第三方整合。它拥有这个问题。
然后它可以定义几个接口,如IProvideBookInformation
和IProvideBookPrice
。 IProvideBookInformation
可以有一个像BookInfo ProvideBook(Guid id)
这样的方法,其中BookInfo
是DTO,它也属于此IT/Ops服务。
然后Sales
和Finance
负责实现这个接口。所以他们依赖于这个接口。然后以任何你喜欢的方式部署,例如在.NET世界中你可以使用NuGet。然后,在部署此IT/Ops服务时,您还可以部署来自实现这些接口的其他服务的组件。这就像Composite UI示例,其中一个网站部署了多个其他组件,为用户界面提供数据。但现在它是后端集成服务,而不是具有用户界面的东西。 IT/Ops服务对实施没有直接的依赖关系。但是当它需要实现服务时,它会加载它可以找到的所有组件,并搜索其所需接口的实现。一旦找到实现,它就会执行它并获取数据。组件可能直接进入数据库,这很简单,我们都很喜欢简单。但它也可能通过某些REST API或任何您最喜欢的方式请求数据。它以这种方式收集所有数据,通过它所拥有的接口,但是由其他服务提供的实现。一旦收集完所有数据后,它会向第三方发出呼叫,并执行任何应有的操作。
我认为微服务必须使用队列来与其他人进行通信。
前端可以生成调用,但后端必须保存一个操作发生后需要通知队列的逻辑。
我认为RabbitMq是这些类型的设计的一个很好的工具。例如:在结帐
- 用户通阶段1
- 发送 - 用户标识,电子邮件到emailqueue_standby队列
- 发送 - 用户ID,项emailcontent_standby队列
- 发送 - 用户标识,paymentdata到paymentchecking队列
- 用户在结帐时完成第2阶段
- 消耗味精从emailqueue_standby队列 - >激活发送电子邮件
- 消耗味精从paymentchecking Queue代码 - >激活代码检查付款数据 - >发表回复approve_payment_data - >值USER_ID,DEAL_ID
- 消耗从approve_payment_data味精队列 - >如果用户支付被批准继续,否则回到停止阶段1
所以这个流程可以让您一次更新多级无码阻塞,也允许分配之间的负载后端服务器。
- 1. 在服务中处理传入请求的体系结构
- 2. 服务结构服务远程处理
- 3. 在调用其他Web服务时处理服务器故障
- 4. 在微服务架构中处理用户界面数据?
- 5. 微服务顺序数据处理
- 6. 处理微服务架构中的Web服务的API网关
- 7. 春季启动微处理服务 - 从影响其他微服务
- 8. GraphQL和微服务体系结构
- 9. 转发ServiceStack请求到其他服务处理器
- 10. NodeJS中的微服务体系结构
- 11. 处理N层体系结构事务
- 12. 如何在处理N层体系结构时管理事务?
- 13. 在处理Flask请求的服务器上运行Celery任务
- 14. 服务器无法处理请求
- 15. System.Web.Services.Protocols.SoapException:服务器无法处理请求
- 16. Javascript服务器请求处理
- 17. 服务器端Java处理Ajax请求
- 18. 从服务器jQuery ajax处理请求
- 19. 服务器端处理请求
- 20. 小服务程序请求处理
- 21. Pymodbus RTU服务器 - 处理请求
- 22. 如何构建Tornado异步Web服务以便一次处理单个请求(Singleton请求服务器)
- 23. 调用一个函数,每次和AJAX请求被处理,并从服务器
- 24. 用Gunicorn服务器处理Django中的多个进程请求
- 25. 如何处理REST Web服务中的数十万个请求?
- 26. 处理微服务请求的设计模式
- 27. 服务器无法处理请求。在Web服务方法调用
- 28. 处理每分钟100请求微服务
- 29. 处理CoreLocation服务回复
- 30. 使用其他微服务进行其他调用