由于我习惯于采用单片方法,因此仍在尝试围绕微服务架构
假设我们尝试构建一个极其简化的 Uber预订系统。为简单起见,我们假设我们有3个服务和客户端的网关API: ,,Booking
和我们有以下流程:Drivers
Notification
创建新预订时:
- 检查现有用户是否已有预订
- 获取可用驱动程序列表
- 发送通知给司机以领取预订
- 司机接机
假设所有消息传递都是通过http调用完成的,而不是通过类似kafka的消息传递总线来完成的。
因此,在这种情况下,我认为该Booking
服务可以对现有预订进行检查。但是,谁应该得到可用驱动程序和通知的列表呢?我正在考虑在网关级别执行此操作,但是现在逻辑可以分为两个地方:
Gateway
-获取可用驱动程序列表+发送通知Booking
-检查现有预订
而且我很确定网关不是正确的选择,但是我觉得如果我们在Booking
服务中使用它,它将变得紧密相连吗?
更复杂的是,如果我们有另一个项目想要重用预订系统,但又要有其自己的业务逻辑,该怎么办?这就是为什么我考虑在网关级别执行此操作,以便新项目网关可以将其自己的业务逻辑与现有逻辑分开。
我想的另一种做法是,每个项目都有自己的预订服务,该服务将与核心预订服务对话,但是我不确定这里最好的方法是什么:-)