在微服务架构中,需要几个关键的组件,服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个组件可以组建一个简单的微服务架构,如下图:

客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服务,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方便开发人员随时改配置。

一、Zuul简介

Zuul的主要功能是路由和过滤器。路由功能是微服务的一部分,比如/api/user映射到user服务,/api/shop映射到shop服务。zuul实现了负载均衡。

zuul有以下功能:

  • Authentication
  • Insights
  • Stress Testing
  • Canary Testing
  • Dynamic Routing
  • Service Migration
  • Load Shedding
  • Security
  • Static Response handling
  • Active/Active traffic management

二、准备工作

继续使用上一节的工程。在原有的工程上,创建一个新的工程。

三、创建service-zuul工程

其pom.xml文件如下:

org.springframework.cloudspring-cloud-starter-eurekaorg.springframework.cloudspring-cloud-starter-zuul

在其入口applicaton类加上注解@EnableZuulProxy,开启zuul:

@EnableZuulProxy@EnableEurekaClient@SpringBootApplicationpublic class ServiceZuulApplication {public static void main(String[] args) {SpringApplication.run(ServiceZuulApplication.class, args);}}

加上配置文件:

eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/server: port: 8769spring: application: name: service-zuulzuul: routes: api-a: path: /api-a/** serviceId: service-ribbon api-b: path: /api-b/** serviceId: service-feign

首先向eureka注册自己,端口为8769,服务名为service-zuul;以/api-a/ 开头的请求都指向service-ribbon;以/api-b/开头的请求都指向service-feign;

依次运行这五个工程;打开浏览器访问:http://localhost:8769/api-a/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

打开浏览器访问:http://localhost:8769/api-b/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

这说明zuul起到了路由的作用;

四、服务过滤

zuul不仅只是路由,并且还能过滤,做一些安全验证。继续改造工程;

@Componentpublic class MyFilter extends ZuulFilter{ private static Logger log = LoggerFactory.getLogger(MyFilter.class); @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return true; } @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); log.info(String.format("%s >>> %s

zuul网关_Spring Cloud第五章:服务网关Zuul相关推荐

  1. Spring Cloud第五章:服务网关Zuul

    在微服务架构中,需要几个关键的组件,服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个组件可以组建一个简单的微服务架构,如下图: 客户端的请求首先经过负载均衡(zuul.Ngn ...

  2. 《深入理解 Spring Cloud 与微服务构建》第十一章 服务网关

    <深入理解 Spring Cloud 与微服务构建>第十一章 服务网关 文章目录 <深入理解 Spring Cloud 与微服务构建>第十一章 服务网关 一.服务网关简介 二. ...

  3. 【Spring Cloud Alibaba】Gateway 服务网关

    [Spring Cloud Alibaba]Gateway 服务网关 1 架构图 2 Predicate 断言 3 路由 3.1 静态路由 3.2 动态路由 3.3 Nacos 配置 4 过滤器 4. ...

  4. springcloud 网关_Spring Cloud 系列之 Netflix Zuul 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里: 哈喽沃德先生:Spring Cloud 系列之 Netflix Zuul 服务网关(一)​zhuanlan.zhihu.com 本篇文章讲解 Zuul ...

  5. Spring Cloud(七)服务网关 Zuul Filter 使用

    上一篇文章中,讲了Zuul 转发,动态路由,负载均衡,等等一些Zuul 的特性,这个一篇文章,讲Zuul Filter 使用,关于网关的作用,这里就不再次赘述了,重点是zuul的Filter ,我们可 ...

  6. Spring Cloud(六)服务网关 zuul 快速入门

    服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能.Spring Cloud Netflix中 ...

  7. Spring Cloud构建微服务架构(五)服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...

  8. 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)

    在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...

  9. com 组件调用不起来_Spring Cloud Alibaba训练营 —— 分布式服务调用

    注意:用手机查看排版可能不太友好, 1. 简介 在<Spring Cloud Alibaba 服务注册与发现>篇中曾提到,Spring Cloud Alibaba Nacos Discov ...

  10. com 组件调用不起来_Spring Cloud Alibaba,分布式服务调用(四)

    1. 简介 在<Spring Cloud Alibaba 服务注册与发现>篇中曾提到,Spring Cloud Alibaba Nacos Discovery 能无缝整合 Spring C ...

最新文章

  1. iOS开发之使用XMPPFramework实现即时通信(二)
  2. Spring-Spring配置概述
  3. ci发什么音标_48个国际音标发音舌位图
  4. nssl1269-射击【贪心,堆】
  5. 微服务架构工作笔记001---认识Service Mesh
  6. Java Web文件上传原理分析(不借助开源fileupload上传jar包)
  7. 5. Mac phpstorm 快捷键
  8. POJ 2253 1797
  9. 节奏大师乐谱破解 续
  10. BP算法简单推导过程
  11. python打印质数(素数)
  12. Linux系统无法在spyder5中输入中文的解决办法
  13. 永久免费使用免费20G空间的推荐
  14. 电脑上如何进行MP4格式转换成其它格式?
  15. 高德地图刷新当前位置_定位-服务-教程-地图 JS API | 高德地图API
  16. ctf夏季集训结训赛-简单题writeup
  17. 这几年被分布式坑惨了,曝光十大坑
  18. 非线性可视化(3)混沌系统
  19. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
  20. Oracle EBS使用CSV导入Oracle Form及BOM清单导入 API

热门文章

  1. 分布式监控:Zabbix_sender介绍及配置
  2. ThinkPHP5.0版本和ThinkPHP3.2版本的差别
  3. POJ 3178 凸包+DP (巨坑)
  4. javascript创建对象过程
  5. SQL 宝典(本人总结供学习使用)
  6. 【版本控制】如何从github 上获取源码
  7. 奥威尔:老大哥在看着你-软件公司十诫
  8. python基本数据类型——整型,浮点型,复数,字符串
  9. 基于PCA进行多光谱和全色图像融合
  10. 决策树系列(一)——基础知识回顾与总结