网站首页 > 技术文章 正文
API服务网关
API服务网关就是出现在微服务边界上的一个面向API的、串行集中式的、对访问请求强管控的服务,采用的是一个外观模式。API服务网关是微服务访问的统一入口,负责服务请求路由、组合及协议转换等处理。
- API服务网关帮助开发者隐藏系统架构实现的细节,提供统一的入口供客户端访问,让微服务使用更为友好。
- 通过微服务的统一访问控制,简化了客户端开发的复杂度,降低了客户端与微服务之间的通信次数,客户端不需要与多个微服务之间进行通信,也不需要了解各个微服务的详细服务。
- 借助API服务网关可统一做切面任务,避免每个微服务自己开发,提升效率,使系统更加标准化。
- 通过API服务网关,可以将异构系统进行统一整合。
- API服务网关需要实现一个高可用伸缩性强的服务,避免单点失效。
- API服务网关需要对所有微服务实例所暴露的端点进行统一的管理,
Spring Cloud与Netflix Zuul
Zuul组件的功能:
- 动态路由:支持与Eureka服务器的整合,可以动态对注册到Eureka服务器中的微服务进行路由映射。Zuul提供了一系列的路由规则配置,可以针对实际情况,实现微服务路由的灵活控制。
- 监控与审查:通过对特定的接口设置访问白名单、访问次数、访问频率等。
- 身份认证与安全:通过Zuul将用户登录认证等类似的功能抽取出来,让微服务系统无须关注认证的逻辑,实现统一的逻辑处理。还可以统一在服务网关层增加一个额外的保护层来防止恶意攻击等。
- 压力测试:通过Zuul所提供的过滤器功能可以逐渐增加对某一服务集群的流量,进行服务性能测试。
- 金丝雀、A/B测试:新版本、新功能需要测试相应的功能,通过API服务网关,控制部分用户访问服务实例。
- 服务迁移:通过Zuul代理可以处理来自旧端点的所有流量,将请求重定向到新的端口。
- 负载剪裁/限流
启动Zuul路由服务
1、构建Zuul路由服务器
编写pom文件
编写启动类
编写配置文件
2、路由测试
启动服务治理服务器,端口8260;启动商品微服务;端口8100;启动Zuul路由服务,端口8300。
说明Zuul路由服务器已经将请求自动转发到商品微服务中。
Zuul将默认从Eureka服务器中获取所注册的服务,将服务的ID作为请求路径中的一部分,然后将用户的请求自动转发到这些服务中。
3、负载均衡测试
启动2个用户微服务,端口分别为8000和8001。
然后继续访问http://localhost:8300/product-service/product/comment该接口验证Zuul服务器负载均衡。
如果处理不好Zuul路由服务的话,Zuul路由服务可能会成为一个访问瓶颈,所以在构建API访问网关的时候需要把握两个原则:
KISS原则:Keep it Simple and Stupid,要保持API服务网关的简单和轻量。
stateless原则:无状态,Zuul服务网关中不应该、也不可以保存有关服务调用过程中的状态数据。
4、Hystrix容错测试
关闭调用户微服务,继续访问。
Zuul本身已经默认集成了Hystrix和Ribbon,所以Zuul拥有线程隔离和服务容错的自我保护能力,以及对服务调用的客户端负载均衡功能。
猜你喜欢
- 2024-11-22 SpringCloud——zuul权限校验、接口限流
- 2024-11-22 Spring Cloud源码分析(四)Zuul:核心过滤器
- 2024-11-22 Spring Cloud Zuul 学习+实践
- 2024-11-22 SpringCloud网关及Zuul项目搭建,你确定你了解?
- 2024-11-22 springcloud-zuul微服务网关高可用的场景概述
- 2024-11-22 24岁秃头程序员带你深入学习微服务网关Zuul源码解析,不来别后悔
- 2024-11-22 Zuul 路由网关
- 2024-11-22 SpringCloud微服务架构篇6:Zuul路由规则
- 2024-11-22 Spring Cloud Zuul的学习
- 2024-11-22 springcloud(十一):服务网关Zuul高级篇
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)