目录
- SpringCloud微服务入门(零),开篇
- SpringCloud微服务入门(一),Eureka注册中心
- SpringCloud微服务入门(二),Eureka Client
- SpringCloud微服务入门(三),Eureka高可用集群
- SpringCloud微服务入门(四),创建服务
- SpringCloud微服务入门(五),Feign实现服务通信
- SpringCloud微服务入门(六),负载均衡Ribbon
- SpringCloud微服务入门(七),服务网关Zuul
- SpringCloud微服务入门(八),服务熔断组件Hystrix
- SpringCloud微服务入门(九),统一配置中心Config
- SpringCloud微服务入门(十),完结篇,是结束也是开始
- 番外篇 - 安装Docker,运行RabbitMQ镜像
正文
别慌,这一节也不用写代码,一行注解就搞定Zuul的使用了。
在学习Spring Cloud微服务网关之前先看这样的两张图。
(图一)
图一是在没有网关的时候,前端自己请求不同的服务。假设有上百个服务的时候,可想而知前端会有多么的乱。
(图二)
图二是使用了网关后,描述的流程就是,前端请求网关,网关再把请求路由到对应的服务上。卧槽,这不是Nginx干的事情吗?
没错!Nginx也是服务网关,只不过今天跟着笔者学习一个更轻量级的,能快速与Spring集成的微服务网关Zuul。
1、为什么需求服务网关?
1.1、当多个服务部署在多台服务器上,那么每个服务访问的IP地址和域名就是不同的了。这时候让前端同学把这么多不同的IP都写死在接口调用的地方,看前端会不会不打死你。
1.2、在网关处统一校验用户权限,做安全相关控制。总不能每个服务都有一套用户权限系统吧?
1.3、请求过滤,前端的请求和响应都要经过服务网关,在网关处就可以对请求过滤(如参数、headers等等信息再处理);也可以对服务返回的响应二次包装。
1.4、流量控制,在遇到大流量访问时可以在网关限流。
2、本节目标
创建一个网关,前端访问网关,网关把请求路由到前面章节写的park服务和devices服务的接口上。
3、创建一个Zuul网关
在IDEA中创建Zuul项目与创建服务方式是一样的,只不过要多选择一个Zuul组件。请看图三所示
(图三)
创建好项目后,老规矩在api-gateway项目的启动类加上@EnableZuulProxy注解,启用Zuul。
然后在项目的配置文件application.properties中填写好Eureka Server的注册地址和网关的端口。
(图四)
啥也不用做,我们依次启动之前写好的eureka-server、park、devices服务,再启动网关。在浏览器中通过网关访问park和devices对应的接口。
所有的应用启动后,先看EurekaServer的应用列表,如图四这样。
(图五)
再看图五通过网关访问park的/park-list
接口
(图六)
最后看图六通过网关访问devices的/devices-list/{park_id}
接口
(图七)
每天有猪肉吃的读者可能看到关键点了。 通过网关访问服务,只要带上服务名称作为原本的接口前缀就可以了。Zuul的使用有木有很简单。
总结:服务网关就是把你拆的稀巴烂的那些微服务再整合成一个统一的入口暴露给外部调用。
本节代码:https://gitee.com/dev-tang/learn-springcloud/tree/sc-05/