一、Zuul概述
API网关
1、判断请求是否有资格 shiro
2、反向代理Nginx,转发(效率非常高 Zuul2.0 200万每秒)
SpringCloud API网关
1、SpringCloud gateway
2、NeFlix公司 Zuul
亚马逊官网使用微服务----一个商品页面,购物书记,背后有哪些微服务支持:
历史订单、备注、商品信息、评论、库存、物流信息。
传统方式:
在Service调用各个信息,商品信息,评论信息,等等POJO对象,转为JSon,返回JSP页面,解析Json,取出对应内容。
**好处:**开发相对简单,后台直接拼接完成,后台只需解析一次。
微服务方式:
在jsp页面,发起多次ajax请求,例如:商品信息一次ajax,评论一次ajax……发出n次请求。每个请求单独回调,回调函数中解析json,在页面中展现。
好处:背后很多小服务。
坏处:请求次数太多,结构就变得很复杂。
亚马逊商品页面要调用上百个微服务。
网关可以把多次请求合并成一次,内部调用真正的微服务地址,可以把结果合并起来,返回一个json,页面处理这一个json,显示信息到各自位置。
本质拦截器
用户先访问网关Zuul,转向路由:属性文件(静态),DB数据库(动态)+Redis缓存、Eureka(动态,心跳机制)注册中心、Zuul+Nginx or Nginx+Zuul
程序最终结构:
EureKa+Zuul(gatewat)+Consumer(Hstrix+Feign+Controller)+Provider(Controller)*
二、项目配置
1、pom文件配置【zuul项目自带web服务,不需要添加依赖】
<!-- 父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<!-- 解决中文乱码问题,指定jdk版本 -->
<properties>
<project.build.sourceEncoding>UTF-8&l