博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java B2B2C 仿淘宝电子商城系统-服务网关zuul初级篇
阅读量:6906 次
发布时间:2019-06-27

本文共 1557 字,大约阅读时间需要 5 分钟。

为什么需要API Gateway

1、简化客户端调用复杂度 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六

在微服务架构模式下后端服务的实例数一般是动态的,对于客户端而言很难发现动态改变的服务实例的访问地址信息。因此在基于微服务的项目中为了简化前端的调用逻辑,通常会引入API Gateway作为轻量级网关,同时API Gateway中也会实现相关的认证逻辑从而简化内部服务之间相互调用的复杂度。

2、数据裁剪以及聚合

通常而言不同的客户端对于显示时对于数据的需求是不一致的,比如手机端或者Web端又或者在低延迟的网络环境或者高延迟的网络环境。

因此为了优化客户端的使用体验,API Gateway可以对通用性的响应数据进行裁剪以适应不同客户端的使用需求。同时还可以将多个API调用逻辑进行聚合,从而减少客户端的请求数,优化客户端用户体验

3、多渠道支持

当然我们还可以针对不同的渠道和客户端提供不同的API Gateway,对于该模式的使用由另外一个大家熟知的方式叫Backend for front-end, 在Backend for front-end模式当中,我们可以针对不同的客户端分别创建其BFF。

4、遗留系统的微服务化改造

对于系统而言进行微服务改造通常是由于原有的系统存在或多或少的问题,比如技术债务,代码质量,可维护性,可扩展性等等。API Gateway的模式同样适用于这一类遗留系统的改造,通过微服务化的改造逐步实现对原有系统中的问题的修复,从而提升对于原有业务响应力的提升。通过引入抽象层,逐步使用新的实现替换旧的实现。

在Spring Cloud体系中, Spring Cloud Zuul就是提供负载均衡、反向代理、权限认证的一个API gateway。

Spring Cloud Zuul

Spring Cloud Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。

下面我们通过代码来了解Zuul是如何工作的

简单使用

1、添加依赖

org.springframework.cloud
spring-cloud-starter-zuul
复制代码

引入spring-cloud-starter-zuul包

2、配置文件

spring.application.name=gateway-service-zuulserver.port=8888 #这里的配置表示,访问/it/** 直接重定向到http://www.ityouknow.com/**zuul.routes.baidu.path=/it/**zuul.routes.baidu.url=http://www.ityouknow.com/复制代码

3、启动类

@SpringBootApplication@EnableZuulProxypublic class GatewayServiceZuulApplication { 	public static void main(String[] args) {		SpringApplication.run(GatewayServiceZuulApplication.class, args);	}}复制代码

启动类添加@EnableZuulProxy,支持网关路由。

史上最简单的zuul案例就配置完了。

转载于:https://juejin.im/post/5cb68fdf6fb9a068b80d5c1f

你可能感兴趣的文章
mysql my large.ini_mysql 配置文件my-small.ini、my-medium.ini、my-large.ini、my-huge.ini 说明...
查看>>
python bootstrap 文件上传_文件上传控件bootstrap-fileinput与Python交互
查看>>
mysql分片备份不一致问题_光大银行分布式实战:国内最大缴费平台的数据库架构转型...
查看>>
java 参数对象一起封装成json_0基础掌握Django框架(29)HttpResponse对象
查看>>
mysql导入没有选择字段_[MySQL]load data local infile向MySQL数据库中导入数据时,无法导入和字段不分离问题。...
查看>>
php对mysql最匹配输出_php – 在十进制列中查找MySQL中最接近的匹配项
查看>>
thinkphp5 mysql缓存_thinkphp+redis实现秒杀,缓存等功能
查看>>
usb一转多 树莓派zero_windows下一根数据线玩转树莓派zero (w)
查看>>
mysql写保护_84个MySQL性能优化的首选技巧
查看>>
mysql onlibe all_MySQL--Online DDL
查看>>
mysql qps 计算_请问MYSQL数据库QPS,TPS采用哪种计算方式?
查看>>
python to_excel参数解释_pandas中read_excel() 和 to_excel()各参数详解
查看>>
python列表输出奇数_Python程序在列表中打印奇数
查看>>
mysql下存在的风险_MySQL部分表复制配置下存在的运维风险、原因及一种方案
查看>>
在python中的占位符中、请你选出不属于占位符的选项_在信息组织和存储中,最基本的单位是( )。...
查看>>
java date 转换sql date_如何将java.util.Date转换为java.sql.Date?
查看>>
java 编写cgi_编写CGI小结(Java)
查看>>
java内存泄露 垃圾回收_Java中内存泄露及垃圾回收机制
查看>>
rife java_Java世界的ruby on rails — rife (转)
查看>>
java yang模型_java 深入理解jvm内存模型 jvm学习笔记
查看>>