微服务技术栈:API网关中心,落地实现方案

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务网关从感觉上,很像是:拦截器+路由+过滤器,拦截请求,系列基础处理,路由转发到指定服务。


一、服务网关简介


1、外观模式


客户端与各个业务子系统的通信必须通过一个统一的外观对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用:


03-1.png


简单说一下外观模式,网关和这个模式很像,但是比外观模式复杂,模式,结构,原则这些都是通用的,在各种架构或组件中使用。


2、网关简介


微服务网关从感觉上,很像是:拦截器+路由+过滤器,拦截请求,系列基础处理,路由转发到指定服务。


服务网关在整个架构体系上也是一个服务器,作为请求的唯一入口,与外观模式十分类似,在网关层处理所有的非业务功能,为客户端提供定制的API,在网关层通常会执行如下操作:如权限校验、监控、负载均衡、缓存、日志、限流、等等。


二、网关模式


1、模式对比


这里对比常用的请求服务管理模式,和网关模式,如图:


03-2.png


常规模式


在没有网关的情况下,微服务架构会在业务层服务上提供一个API服务,用来接收参数,例如Client-API,通常会根据系统模块划分多个API,例如,运营系统,用户系统等。



  • 请求统一进入Client-API服务 ;
  • Client-API经过鉴权,限流,路由等操作;
  • 如果请求通过,会转发到相应业务服务上;
  • 如果请求被拦截,会直接返回给客户端;
  • Client-API集成所有业务服务的开放接口;

该模式下的缺点非常明显,每个Client-API都需要实现一套非业务服务,代码冗余,当系统膨胀之后,维护成本极高,适用于轻量级系统架构。


网关模式


在业务服务层上,添加一层网关控制,在服务网关中可以完成一系列的横切非业务功能:



  • 客户端请求在网关层做统一拦截;
  • 网关上执行:路由/鉴权/限流/降级等操作;
  • 网关判断是转发请求还是直接响应客户端;

网关服务层要执行很多非业务流程,作为系统的服务端唯一入口,承受所有服务的路由转发,安全,限流,缓存,日志,监控,熔断降级等功能,网关服务不仅要做到高可用,还要避免出现性能瓶颈。


2、多重网关


在大型复杂的系统中,通常会对网关做分层管理,把一类业务规划到一个网关下,避免网关过于臃肿,方便维护和管理:


03-3.png


总网关:通用常用来做路由转发功能;


模块网关:分类的业务服务聚合网关,对这类服务的做非业务性操作,最后请求转发到具体服务上,在数据类平台上,通常对数据通道(流入流出)做一层独立的服务网关;对数据分析类服务做一层独立网关;基本是根据服务的使用情况来划分,这样避免单层服务网关过于复杂的情况。


三、核心功能


1、配置层面


服务发现


网关应该有服务发现功能,通过统一注册中心,获取服务列表,这样才能执行统一代理服务和路由转发功能。


路由请求


植入网关层服务之后,客户端不知道自己请求的是哪个具体的服务,只需要把请求转发给网关,网关放行之后会把请求路由到指定业务服务上。


负载均衡


网关连接的服务实例可能是集群模式存在,所以网关还可以对各个服务实例上执行负载均衡策略,常见的策略就是服务轮询或者按权重路由。


2、定制开发


定制开发例如:权限校验,日志集成,接口限流,等相关功能,需要和数据库交互,可以做成独立服务,在服务中实现具体的处理逻辑,网关层直接调用即可。


四、网关组件


1、Netflix-Zuul


Zuul网关主要提供动态路由,监控,弹性,安全管控等功能。在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后微服务模块中,Netflix开源的一个基于JVM路由和服务端的负载均衡器。


2、Tyk组件


Tyk是一个开源的、轻量级的、快速可伸缩的API网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织。基于go语言编写,在Java架构系统中使用很少。


3、Kong组件


Kong是一款基于Nginx+Lua编写的高可用,可扩展的开源网关项目,由Mashape公司开放。核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。提供易于使用的RESTfulAPI来操作和配置API管理,并且可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对高并发的网络请求。


目录
相关文章
|
19天前
|
微服务 应用服务中间件
微服务跨域(通过网关配置进行跨域)
在单体架构中,我们通常通过SpringMVC配置类实现CORS跨域支持,设置允许的来源、请求头、方法及凭证等。然而,在微服务架构下,因浏览器首先访问网关再进行服务路由,需在网关配置跨域。对于无SpringMVC环境的网关(如使用Gateway组件),我们可在YAML文件中配置`spring.cloud.gateway.globalcors`属性,以实现全局跨域支持。
40 0
|
18天前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
|
13天前
|
JSON 算法 Java
微服务Token鉴权设计的几种方案
【8月更文挑战第18天】在微服务架构中,Token鉴权是确保服务安全性的重要环节。本文将详细介绍几种常见的微服务Token鉴权设计方案,旨在帮助大家在工作和学习中更好地理解和应用这些技术。
28 2
|
15天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
21天前
|
设计模式 监控 API
探索微服务架构中的API网关模式
在微服务的宇宙里,API网关是连接星辰的桥梁。它不仅管理着服务间的通信流量,还肩负着保护、增强和监控微服务集群的重任。本文将带你走进API网关的世界,了解其如何成为微服务架构中不可或缺的一环,以及它在实际应用中扮演的角色和面临的挑战。
|
4天前
|
应用服务中间件 API nginx
微服务从代码到k8s部署应有尽有系列(二、网关)
微服务从代码到k8s部署应有尽有系列(二、网关)
|
24天前
|
监控 供应链 安全
构建高效微服务架构:API网关与服务熔断策略
【7月更文挑战第38天】随着现代应用程序向微服务架构的转型,系统的稳定性和效率成为了开发团队关注的焦点。本文将探讨在微服务环境中实现系统可靠性的关键组件——API网关,以及如何在服务间通讯时采用熔断机制来防止故障蔓延。通过分析API网关的核心功能和设计原则,并结合熔断策略的最佳实践,我们旨在提供一套提高分布式系统弹性的策略。
|
2天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
3天前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
21 0
|
8天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
30 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
下一篇
云函数