首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在API网关中为前端构建后端时管理缓存和服务失败处理

在API网关中为前端构建后端时管理缓存和服务失败处理
EN

Software Engineering用户
提问于 2020-04-19 12:41:55
回答 1查看 407关注 0票数 -3

我有两个微型服务。

  1. 用户服务- REST,它提供用户详细信息
  2. 统计服务- REST提供不同的统计数据

我的目标是提供一个移动应用程序的单一界面,我们的用户将使用它来查看统计数据。应根据用户的角色向用户显示统计数据。

我认为带有前端后端的API网关变体是必须建立的东西。

API流将是这样的。

代码语言:javascript
复制
[Mobile App]            [API Gateway]                           [User Microservice]             [Stats Microservice]
|                         |                                        |                                    |   
1---------Get Metrics---->|                                        |                                    |
                          2--------- Get User Roles -------------->|                                    |
                          3----------------------------Get Stats According to Roles-------------------->|
                          4(Wrap data in FrontEnd json)
<---Send JSON to App------5

我正在考虑为此使用nodejs,因为我们的大多数团队成员都已经开发了nodejs。有一些很好的API网关,比如ExpressGateway,nodejs中的快速网关。但它们都没有提供数据聚合(合并和转换来自多个服务的数据)功能。

我可以理解数据聚合可能变得非常特定于用例,因此这些开放源码API网关没有提供多少支持,但是我没有找到任何关于如何使用API网关实现这一点的指导方针。

如果我编写定制的聚合插件/代码来调用微服务,我想知道如何利用API网关提供的缓存机制。

我还想知道如何利用API网关提供的故障处理,当统计微服务关闭时。

EN

回答 1

Software Engineering用户

发布于 2020-04-20 07:06:45

您曾经说过,您可能必须为不同的前端实现单独的后端。您还注意到,现有的API网关不太支持数据聚合。我个人并不认为后端到前端(BFF)模式是API网关的一个变种。在我看来,BFF可以包含业务逻辑(例如,聚合不同数据源以向前端提供丰富的信息),而API网关通常不包含业务逻辑。因此,API网关是可重用的,但是BFF是不可重用的。对于其余的答案,我假设您想要遵循BFF模式。

缓存

我的理解是,您希望将来自前端的请求缓存到BFF,以避免重载用户服务和统计服务。这意味着您希望缓存聚合数据。

缓存可以作为一个单独的层来实现,例如,在移动应用程序和BFF之间设置一个反向代理,将请求缓存到BFF API。反向代理将减少开发工作量,并可用于TLS终端。缺点是增加了操作的复杂性。

如果您希望每个BFF有一个缓存,或者为所有BFF选择一个缓存(就像API Gateway :),则由您决定。

如果前端向后端发送不易被反向代理(例如WebSocket连接、GraphQL API)处理的请求,则缓存可以作为BFF的一部分实现。这将降低操作复杂性,但您必须为每个BFF单独实现缓存。

处理统计服务

的停机时间

如果前端请求未缓存的用户统计信息,且统计信息服务不可用,则您别无选择,只能向前端发送错误响应。将依赖关系从BFF分解到统计服务将是一个重大的架构更改。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/408993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档