微服务面试题:服务网关和链路追踪

🧑 博主简介:CSDN博客专家历代文学网 (PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索"历代文学 ")总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作 请加本人wx(注明来自csdn ):foreast_sea


微服务面试题:服务网关和链路追踪

1. 服务网关

1.1 什么是 API 网关?

API 网关(API Gateway)是一种中间层服务器,用于集中管理、保护和路由对后端服务的访问。它充当了客户端与后端服务之间的入口点,提供了一组统一的接口来管理和控制 API 的访问。

API 网关的主要功能包括:

  1. 路由转发:API 网关根据请求的 URL 路径或其他标识,将请求路由到相应的后端服务。通过配置路由规则,可以灵活地将请求分发给不同的后端服务。
  2. 负载均衡:API 网关可以在后端服务之间实现负载均衡,将请求平均分发到多个实例上,提高系统的吞吐量和可扩展性。
  3. 安全认证与授权:API 网关可以集中处理身份验证和授权,确保只有经过身份验证的客户端才能访问后端服务。它可以与身份提供者(如 OAuth、OpenID Connect)集成,进行用户认证和授权操作。
  4. 缓存:API 网关可以缓存后端服务的响应,减少对后端服务的请求次数,提高系统性能和响应速度。
  5. 监控与日志:API 网关可以收集和记录请求的指标和日志,提供实时监控和分析,帮助开发人员和运维人员进行故障排查和性能优化。
  6. 数据转换与协议转换:API 网关可以在客户端和后端服务之间进行数据格式转换和协议转换,如将请求从 HTTP 转换为 WebSocket,或将请求的参数进行格式转换,以满足后端服务的需求。
  7. API 版本管理:API 网关可以管理不同版本的 API,允许同时存在多个 API 版本,并通过路由规则将请求正确地路由到相应的 API 版本上。

......

通过使用 API 网关,可以简化前端与后端服务的交互,提供统一的接口和安全性保障,同时也方便了服务治理和监控。它是构建微服务架构和实现 API 管理的重要组件之一。

1.2 SpringCloud 可以选择哪些 API 网关?

使用 SpringCloud 开发,可以采用以下的 API 网关选型:

  1. Netflix Zuul(已停止更新):Netflix Zuul 是 Spring Cloud 早期版本中提供的默认 API 网关。它基于 Servlet 技术栈,可以进行路由、过滤、负载均衡等功能。然而,自 2020 年 12 月起,Netflix 宣布停止对 Zuul 1 的维护,转而支持新的 API 网关项目。
  2. Spring Cloud Gateway:Spring Cloud Gateway 是 Spring Cloud 官方推荐的 API 网关,取代了 Netflix Zuul。它基于非阻塞的 WebFlux 框架,充分利用了响应式编程的优势,并提供了路由、过滤、断路器、限流等特性。Spring Cloud Gateway 还支持与 Spring Cloud 的其他组件集成,如服务发现、负载均衡等。
  3. Kong:Kong 是一个独立的、云原生的 API 网关和服务管理平台,可以与 Spring Cloud 集成。Kong 基于 Nginx,提供了强大的路由、认证、授权、监控和扩展能力。它支持多种插件和扩展,可满足不同的 API 管理需求。
  4. APISIX:APISIX 基于 Nginx 和 Lua 开发,它具有强大的路由、流量控制、插件扩展等功能。APISIX 支持灵活的配置方式,可以根据需求进行动态路由、负载均衡和限流等操作。

......

1.3 Spring Cloud Gateway 核心概念?

在 Spring Cloud Gateway 里,有三个关键组件:

  • Route(路由):路由是 Spring Cloud Gateway 的基本构建块,它定义了请求的匹配规则和转发目标。通过配置路由,可以将请求映射到后端的服务实例或 URL 上。路由规则可以根据请求的路径、方法、请求头等条件进行匹配,并指定转发的目标 URI。
  • Predicate(断言):断言用于匹配请求的条件,如果请求满足断言的条件,则会应用所配置的过滤器。Spring Cloud Gateway 提供了多种内置的断言,如 Path(路径匹配)、Method(请求方法匹配)、Header(请求头匹配)等,同时也支持自定义断言。
  • Filter(过滤器):过滤器用于对请求进行处理和转换,可以修改请求、响应以及执行其他自定义逻辑。Spring Cloud Gateway 提供了多个内置的过滤器,如请求转发、请求重试、请求限流等。同时也支持自定义过滤器,可以根据需求编写自己的过滤器逻辑。

我们再来看下 Spring Cloud Gateway 的具体工作流程:

又有两个比较重要的概念:

  • Gateway Handler(网关处理器):网关处理器是 Spring Cloud Gateway 的核心组件,负责将请求转发到匹配的路由上。它根据路由配置和断言条件进行路由匹配,选择合适的路由进行请求转发。网关处理器还会依次应用配置的过滤器链,对请求进行处理和转换。
  • Gateway Filter Chain(网关过滤器链):网关过滤器链由一系列过滤器组成,按照配置的顺序依次执行。每个过滤器可以在请求前、请求后或请求发生错误时进行处理。过滤器链的执行过程可以修改请求、响应以及执行其他自定义逻辑。

2. 链路追踪

2.1 为什么要用微服务链路追踪?

在微服务中,有的山下游可能有十几个服务,如果某一环出了问题,排查起来非常困难,所以,就需要进行链路追踪,来帮助排查问题。

通过链路追踪,可以可视化地追踪请求从一个微服务到另一个微服务的调用情况。除了排查问题,链路追踪黑还可以帮助优化性能,可视化依赖关系、服务监控和告警。

2.2 SpringCloud 可以选择哪些微服务链路追踪方案?

Spring Cloud 提供了多种选择的微服务链路追踪方案。以下是一些常用的方案:

  1. Zipkin:Zipkin 是一个开源的分布式实时追踪系统,由 Twitter 开发并贡献给开源社区。Spring Cloud Sleuth 提供了与 Zipkin 的集成,可以通过在微服务中添加相应的依赖和配置,将追踪信息发送到 Zipkin 服务器,并通过 Zipkin UI 进行可视化展示和查询。
  1. Jaeger:Jaeger 是 Uber 开源的分布式追踪系统,也被纳入了 CNCF(云原生计算基金会)的维护。通过使用 Spring Cloud Sleuth 和 Jaeger 客户端库,可以将追踪信息发送到 Jaeger 并进行可视化展示和查询。
  2. SkyWalking:Apache SkyWalking 是一款开源的应用性能监控与分析系统,提供了对 Java、.NET 和 Node.js 等语言的支持。它可以与 Spring Cloud Sleuth 集成,将追踪数据发送到 SkyWalking 服务器进行可视化展示和分析。
  1. Pinpoint:Pinpoint 是 Naver 开源的分布式应用性能监控系统,支持 Java 和 .NET。它提供了与 Spring Cloud Sleuth 的集成,可以将追踪数据发送到 Pinpoint 服务器,并通过其 UI 进行分析和监控。

这些方案都可以与 Spring Cloud Sleuth 进行集成,Spring Cloud SleuthSpring Cloud 中的一个组件,提供了在微服务调用时生成追踪信息的能力。

相关推荐
伤不起bb8 分钟前
Kubernetes 服务发布基础
云原生·容器·kubernetes
鹏程十八少2 小时前
7.Android 设计模式 享元模式 在商业项目中的落地
架构
老周聊大模型2 小时前
《ChatGLM/Llama调优实战:从指令微调到RLHF的工业级对齐方案》
人工智能·程序员·架构
weixin_437398213 小时前
转Go学习笔记
linux·服务器·开发语言·后端·架构·golang
别骂我h3 小时前
Kubernetes服务发布基础
云原生·容器·kubernetes
要开心吖ZSH3 小时前
微服务架构的演进:迈向云原生
java·微服务·云原生
dyj0954 小时前
Rancher Server + Kubernets搭建云原生集群平台
云原生·rancher
搬砖的小码农_Sky4 小时前
XILINX Zynq-7000系列FPGA的架构
fpga开发·架构
weixin_399380695 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
zkmall6 小时前
企业电商解决方案哪家好?ZKmall模块商城全渠道支持 + 定制化服务更省心
大数据·运维·重构·架构·开源