我正在尝试了解GraphQL在微服务架构中的最佳适用情况。 有一些争议,关于是否只需要一个GraphQL模式作为API网关,将请求代理到目标微服务并强制执行其响应。但是微服务仍然会使用REST / Thrift协议进行通信。 另一种方法是每个微服务都有多个GraphQL模式。具有较小API网关...
什么是编排微服务的标准模式? 如果一个微服务只知道自己的领域,但有一些数据流需要多个服务以某种方式进行交互,该怎么办? 假设我们有这样的东西: 开票 出货 为了论证,假设一旦订单发货,就应创建发票。 在某个地方,有人在 GUI 中按下一个按钮,"我完成了,让我们开始吧!" 在传...
假设我们有一个用户、钱包REST微服务和一个API网关将它们粘合在一起。当Bob在我们的网站上注册时,我们的API网关需要通过用户微服务创建用户和通过钱包微服务创建钱包。 现在这里有几种情况可能会出错: 创建用户Bob失败:没关系,我们只需向Bob返回错误信息。我们正在使用SQL事务,所...
我在为微服务架构选择一个良好/安全的身份验证策略上遇到了困难。我在这个主题上找到的唯一一个SO帖子是这个:Single Sign-On in Microservice Architecture 我的想法是,在每个服务中(例如认证、消息传递、通知、个人资料等),都有对每个用户的唯一引用(很自然地...
为了应对微服务架构,通常会与反向代理(如nginx或apache httpd)一起使用,以及采用API网关模式来实现交叉关注点。有时候反向代理会执行API网关的工作。 可以清楚地看到这两种方法之间的明显区别是:API网关的潜在好处是调用多个微服务并聚合结果。 API网关的所有其他职责都可以使...
微服务架构建议每个服务处理自己的数据。因此,任何依赖其他服务(服务B)拥有的数据的服务(服务A),都不应该直接调用数据库,而应该通过第二个服务(服务B)提供的API来访问这些数据。 那么微服务最佳实践在检查外键约束方面有什么建议呢? 例如:我正在为产品开发交付功能(微服务1),某些产品只能...
针对将单块应用程序分解为微服务的人们,您如何处理破解数据库的难题。我所涉及的典型应用程序出于性能和简单性的原因,进行了大量的数据库集成。 如果您有两个在逻辑上不同的表(如果您愿意,可以称之为有界上下文),但通常对大量数据进行聚合处理,则在单块中,您很可能会避免使用面向对象编程,而是使用数据库...
最近,我做了一些有关docker-compose的实验,以便部署多个协作式微服务。我可以看到微服务提供的许多好处,现在有很好的工具集来管理它们,我认为跳上微服务的车不是非常困难。 但是,我也正在尝试使用Elixir,并且我非常喜欢它本身提供的好处。鉴于它鼓励将代码打包成多个解耦合的应用程序,...
我刚刚阅读了一篇关于微服务和PaaS架构的文章。在这篇文章中,大约三分之一的篇幅下面,作者在像疯子一样去规范化下陈述道: 重新设计数据库模式,对所有内容进行去规范化,以允许数据完全分离和分区。也就是说,不要使用为多个微服务提供服务的底层表。不应该存在跨越多个微服务的底层表共享和数据共享。相反...