SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(上)

简介: SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(上)

1 简介

1.1 网关服务的意义

1.1.1 点对点

  • 服务之间直接调用,每个微服务都开放Rest API,并调用其他微服务的接口
  • image.png

1.1.2 API网关(使用最广)

随着服务数量增多,如果还是每个服务都直接对外部客户端提供接口,就会变得很复杂,最显然的就是每个服务都得自己实现鉴权。

这时,就需要一个角色充当 request 请求的统一入口,即服务网关。

业务接口通过API网关暴露,是所有客户端接口的唯一入口。 微服务之间的通信也通过API网关。

image.png

1.2 网关要素及演进史

  • 稳定,高可用
  • 安全性
  • 性能、并发性
  • 扩展性
  • 限流熔断
  • 动态路由和负载均衡

基于 Path 的路由

api.xxx.com/pathx

截获器链

日志采集和 Metrics 埋点

响应流优化

网关是具体核心业务服务的看门神,相比于具体实现业务的系统服务,它是一个边缘服务,主要提供动态路由,监控,弹性,安全性等功能。


下面我们从单体应用到多体应用的演化过程来讲解网关的演化历程,一般业务系统发展历程都是基本相似的,从单体应用到多应用,从本地调用到远程调用。

1.2.1 单体应用

由于只需一个应用,所有业务模块的功能都打包为了一个 War 包进行部署,这可以减少机器资源和部署的繁琐。

image.png

单体应用中,网关模块和应用部署到同一JVM进程,当外部移动设备或者web站点访问单体应用的功能时,请求是先被应用的网关模块拦截,网关模块对请求进行鉴权、限流等动作后在把具体的请求转发到当前应用对应的模块处理。

多体应用

先看个不用网关的案例,有的公司架构,虽然是微服务,但全部通过 nginx 进行请求转发

image.png

这样有啥缺点呢?

每个暴露的服务都需要自己的域名,且一旦修改,其他各个使用该服务的服务配置都需要修改。这些服务直接暴露在公网,存在安全问题。而且随着外部设备种类增多,大量兼容适配工作繁杂。

image.png

随着业务发展,网站流量越来越大,在单体应用中简单的通过加机器的方式可以带来的承受流量冲击的能力也越来越低,这时候就会考虑根据业务将单体应用拆成若干功能独立应用,单体应用拆为多个应用后,由于不同的应用开发对应的功能,所以多应用开发之间可以独立开发而不用去理解对方的业务,另外不同的应用模块只承受对应业务流量的压力,不会对其他应用模块造成影响,这时多体的分布式系统就出现了,如下

image.png

多体应用中业务模块A和B单独启个应用,每个应用里有自己的网关模块。

如果业务模块太多,每个应用都有自己的网关模块,复用性不好,考虑把网关模块提出来,单独作为一个应用做服务路由,如下

image.png

如上图当移动设备发起请求时候是具体发送到网关应用的,经过鉴权后请求会被转发到具体的后端服务应用上,对应前端移动设备来说他们不在乎也不知道后端服务器应用是一个还是多个,他们只能感知到网关应用的存在。

目录
相关文章
|
12月前
|
算法 Java 微服务
【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
微服务架构是What?? 微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建
827 126
|
12月前
|
API 微服务
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态。
1126 74
|
12月前
|
负载均衡 算法 Java
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
584 0
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
773 142
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
1056 4
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1565 2
Spring Boot 3.x 微服务架构实战指南
|
12月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
1023 6
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
567 1
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2