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

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


一、服务网关简介


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,来应对高并发的网络请求。


目录
相关文章
|
2天前
|
JSON API 数据格式
如何获取虾皮shopee根据ID取商品详情 API接口
以下是一篇关于如何使用Shopee API接口根据商品ID获取商品详情的5000字文章,包括API接口的基本信息、请求方法、请求参数、返回数据等,以及使用Python进行API调用的示例代码。
|
2天前
|
JSON API 开发者
如何获取淘宝/天猫删除购物车商品 API 接口
如何获取淘宝/天猫删除购物车商品 API 接口 一、API 概述 淘宝/天猫提供了删除购物车商品 API 接口,允许开发者通过编程方式删除用户购物车中的商品。这个 API 接口可以帮助开发者更好地管理用户的购物车,例如在用户取消订单或者调整购物车商品数量时,可以调用此 API 接口删除相应的商品
|
2天前
|
JSON API 开发者
淘宝获取购物车的商品列表 API接口
淘宝提供了获取购物车商品列表 API 接口,允许开发者通过编程方式获取用户购物车中的商品列表。这个 API 接口可以帮助开发者更好地了解用户在购物车中添加了哪些商品,以及每个商品的基本信息,例如商品 ID、名称、价格、数量等。
|
2天前
|
存储 缓存 数据挖掘
通过1688店铺所有商品API接口一键获取店铺所有商品信息
本文介绍了如何使用1688开放平台的API接口一键获取店铺所有商品信息。通过详细的分析和实例代码,我们将带领读者了解整个流程,包括API接口的调用、数据的解析和处理等方面。
|
2天前
|
存储 缓存 API
如何使用1688店铺所有商品API接口
随着电商行业的快速发展,越来越多的商家选择在1688平台上开店销售商品。然而,手动抓取店铺商品信息不仅效率低下,而且容易出错。为了解决这个问题,我们可以使用1688开放平台提供的API接口,实现一键获取店铺所有商品信息的功能。本文将详细介绍如何使用1688开放平台的API接口一键获取店铺所有商品信息,包括API接口的调用、数据的解析和处理等方面。
|
2天前
|
存储 JSON API
Lazada详情API接口:一键获取商品信息的深度实践
随着电子商务的快速发展,各大电商平台纷纷开放API接口,为开发者提供丰富的数据资源。Lazada作为东南亚地区最大的电商平台之一,同样提供了API接口供开发者使用。本文将详细介绍如何使用Lazada详情API接口一键获取商品信息,并提供代码示例和实践经验,帮助读者更好地利用这一资源。
|
2天前
|
存储 API 数据安全/隐私保护
淘宝详情API接口:一键获取商品信息的实践探索
淘宝作为中国最大的电商平台,拥有庞大的商品信息库。为了更好地利用这些数据,开发者可以通过淘宝提供的API接口来获取商品详情。本文将深入探讨如何使用淘宝详情API接口一键获取商品信息,通过实践操作和代码示例,带领读者深入了解该接口的使用方法和注意事项。
item_search_coupon-优惠券查询API接口有哪些错误代码或异常可以处理?
item_search_coupon-优惠券查询API接口可能会返回一些错误代码或异常,以指示在请求或响应过程中出现的问题。以下是一些可能的错误代码或异常:
|
2天前
|
缓存 安全 NoSQL
App开放接口api安全:Token签名sign的设计与实现
在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些 接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等,但是为了安全起见让用户暴露的明文密码次数越少越好,我们一般在web项目 中,大多数采用保存的session中,然后在存一份到cookie中,来保持用户的回话有效性。
|
2天前
|
JSON API 数据格式
使用Python调用API接口获取小红书笔记详情数据
本文将详细介绍如何使用Python编程语言调用小红书API接口,以获取小红书笔记的详情数据。我们将从以下几个方面展开讨论:1) API接口简介;2) Python环境准备;3) API密钥获取;4) 使用Requests库发送API请求;5) 解析响应数据;6) 异常处理与错误排查。
相关产品
微服务引擎
服务网格
推荐文章
更多