前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网关路由模式

网关路由模式

作者头像
只喝牛奶的杀手
发布2019-09-02 15:37:23
6650
发布2019-09-02 15:37:23
举报

使用单个终结点将请求路由到多个服务。 如果希望在单个终结点上公开多个服务,并根据请求路由到适当的服务,则此模式非常有用。

上下文和问题

客户端需要使用多个服务时,为每个服务设置单独的终结点并让客户端管理每个终结点是具有挑战性的。 例如,一个电子商务应用程序可以提供搜索、评价、购物车、结账和订单历史记录等服务。 每个服务都有一个客户端必须与之交互的不同 API,客户端必须了解每个终结点,以便连接到服务。 如果一个 API 发生变化,那么客户端也必须更新。 如果将一个服务重构为两个或多个单独的服务,则必须在服务和客户端中更改代码。

解决方案

在一组应用程序、服务或部署前放置网关。 使用应用层 7 路由将请求路由到相应实例。

使用此模式,客户端应用程序只需了解单个终结点并与之通信。 如果服务进行合并或分解,客户端不一定需要更新。 它可以继续向网关发出请求,只有路由会更改。

使用网关,还可以从客户端提取后端服务,保持客户端调用的简单性,同时在网关后的后端服务中启用更改。 客户端调用可以被路由到任何需要处理预期的客户端行为的服务,无需更改客户端即可在网关后面添加、拆分和重组服务。

这种模式允许管理向用户推出更新的方式,可以帮助进行部署。 部署了新版本的服务后,它可以与现有版本并行部署。 通过路由,可以控制向客户端提供哪种版本的服务,能够灵活地使用各种发布策略,无论是递增、并行还是完整的推出更新都可以。 通过在网关上进行配置更改可以快速还原部署新服务后发现的任何问题,不会影响客户端。

问题和注意事项

  • 网关服务可能会造成单一故障点。 请确保它设计合理,符合用户的可用性需求。 在实施时,请考虑复原和容错能力。
  • 网关服务可能会造成瓶颈。 请确保网关有足够的性能来处理负载,并且可以根据增长预期轻松扩展。
  • 对网关执行负载测试,确保不会对服务造成级联故障。
  • 网关路由是第 7 级。 它可以基于 IP、端口、标头或 URL。

何时使用此模式

在以下情况下使用此模式:

  • 客户端需要使用可在网关后访问的多个服务。
  • 你希望通过使用单个终结点来简化客户端应用程序。
  • 需要将请求从外部可寻址的终结点路由到内部虚拟终结点,例如对集群虚拟 IP 地址公开 VM 上的端口。

当存在某个简单应用程序仅使用一两个服务时,此模式可能不适用。

示例

使用 Nginx 作为路由器,以下为服务器的一个简单示例配置文件,将驻留在不同虚拟目录上的应用程序的请求路由到后端不同的计算机。

server {

listen 80;

server_name domain.com;

location /app1 {

proxy_pass http://10.0.3.10:80;

}

location /app2 {

proxy_pass http://10.0.3.20:80;

}

location /app3 {

proxy_pass http://10.0.3.30:80;

}

}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上下文和问题
  • 解决方案
  • 问题和注意事项
  • 何时使用此模式
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档