Database 微服务体系结构数据库
我研究微服务架构已经有一段时间了。但我有几个问题要问 如果你需要举个例子,他们是 订单服务 客户服务 产品服务 假设上面有3个微服务。他们正在使用关系数据库 我在订单服务中列出订单。但我也必须在这里收集客户信息 如果这是一个单细胞结构,我可以用join来处理它。但在microservis体系结构中如何做到这一点呢 注意:我没有做任何项目。我的目标只是了解微服务体系结构。选项:Database 微服务体系结构数据库,database,microservices,Database,Microservices,我研究微服务架构已经有一段时间了。但我有几个问题要问 如果你需要举个例子,他们是 订单服务 客户服务 产品服务 假设上面有3个微服务。他们正在使用关系数据库 我在订单服务中列出订单。但我也必须在这里收集客户信息 如果这是一个单细胞结构,我可以用join来处理它。但在microservis体系结构中如何做到这一点呢 注意:我没有做任何项目。我的目标只是了解微服务体系结构。选项: 限制orderservice和customerservice之间的依赖关系:通常情况下,订单是一个自包含对象,其中包含
- 限制orderservice和customerservice之间的依赖关系:通常情况下,订单是一个自包含对象,其中包含所有客户数据(从订购时起)
- 如果仍然需要,订单应该保存客户id,然后任何想要访问最近客户数据的UI或逻辑都需要使用客户服务的“公共api”。“公共api”通常可以是任何东西,甚至可以是定义的共享存储(如数据库)。然而,大多数团队决定不允许直接访问技术存储,以避免紧密耦合。这就是为什么大多数情况下,服务谈论Rest(或GRPC)用于同步用例,或者使用某种形式的消息传递用于异步交互
顺序
,就像这样
class Order
{
OrderId;
ItemName;
UserName;
}
GetOrder(orderId)
{
item = ItemMicroserice.GetItem();
user = UserMicroservice.GetUser();
result = new Order()
{
OrderId = orderId,
ItemName = item.Name,
UserName = user.Name
}
return result;
}
还有一个方法,它返回一个orderGetOrder(id)
如下
class Order
{
OrderId;
ItemName;
UserName;
}
GetOrder(orderId)
{
item = ItemMicroserice.GetItem();
user = UserMicroservice.GetUser();
result = new Order()
{
OrderId = orderId,
ItemName = item.Name,
UserName = user.Name
}
return result;
}
您可以注意到,有两个对其他微服务的调用将返回数据以构造Order
对象
虽然您可以看到,它在性能方面可能有点不理想。因此,有时微服务确实会存储重复信息,以便能够更快地构造对象(消除对其他微服务的调用)。例如,如果Users
microservice更新数据,它会向Orders
microservice发送一个事件,以便它可以更新来自其他microservice的缓存数据