- 浏览: 189932 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Zuul API路由网关服务简介
2. Zuul路由配置
2.1) 项目microservice-zuul-3001搭建
2.2) 修改hosts文件增加zuul
2.3) 项目microservice-zuul-3001的pom.xml增加zuul路由网关
2.4) 项目microservice-zuul-3001修改application.yml文件
2.5) 项目microservice-zuul-3001新建启动类ZuulApplication_3001.java
3. Zuul路由映射规则配置
3.1) 配置映射规则,提高服务的安全性
3.2) 增加ignored-services: "microservice-student"屏蔽原来的访问方式
3.3) 配置请求前缀,加下配置prefix: /andrew
3.4) 最终配置
4. Zuul请求过滤配置
4.1) 项目microservice-zuul-3001新建过滤器AccessFilter.java
4.2) 项目microservice-zuul-3001开启过滤器ZuulConfig.java
这里的API路由网关服务由Zuul实现,主要就是对外提供服务接口的时候,起到了请求的路由和过滤作用,也因此能够隐藏内部服务的接口细节,从来有利于保护系统的安全性;
2. Zuul路由配置
2.1) 项目microservice-zuul-3001搭建
new -> Maven Module -> create a simple project Module Name: microservice-zuul-3001 Parent Project:microservice Working set:SpringCloud -> Artifact Group Id:com.andrew.springcloud Artifact Id: microservice-zuul-3001 Version:0.0.1-SNAPSHOT Packaging:jar
2.2) 修改hosts文件增加zuul
C:\Windows\System32\drivers\etc打开hosts文件增加zuul 127.0.0.1 zuul.andrew.com
2.3) 项目microservice-zuul-3001的pom.xml增加zuul路由网关
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.andrew.springcloud</groupId> <artifactId>microservice</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microservice-zuul-3001</artifactId> <dependencies> <dependency> <groupId>com.andrew.springcloud</groupId> <artifactId>microservice-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- zuul路由网关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- actuator监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- hystrix容错 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!-- 修改后立即生效,热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>
2.4) 项目microservice-zuul-3001修改application.yml文件
server: port: 3001 context-path: / spring: application: name: microservice-zuul eureka: instance: instance-id: microservice-zuul:3001 #客户端实例名称 prefer-ip-address: true #显示IP client: service-url: defaultZone: http://eureka2001.andrew.com:2001/eureka/,http://eureka2002.andrew.com:2002/eureka/,http://eureka2003.andrew.com:2003/eureka/ # 集群 info: groupId: $project.groupId$ artifactId: $project.artifactId$ version: $project.version$ 负责人: 王五 联系电话: 110
2.5) 项目microservice-zuul-3001新建启动类ZuulApplication_3001.java
package com.andrew; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}) @EnableZuulProxy public class ZuulApplication_3001 { public static void main(String[] args) { SpringApplication.run(ZuulApplication_3001.class, args); } }
启动microservice-eureka-server-2001 启动microservice-eureka-server-2002 启动microservice-eureka-server-2003 启动microservice-student-provider-1001 启动microservice-zuul-3001 获取数据的两种方式 (1) http://localhost:1001/student/list (2) 域名+端口+服务名称+请求地址 http://zuul.andrew.com:3001/microservice-student/student/list [{"id":1,"name":"zhangsan","grade":"11"},{"id":2,"name":"lisi","grade":"12"},{"id":3,"name":"wangwu","grade":"13"},{"id":4,"name":"student04","grade":"14"},{"id":5,"name":null,"grade":null},{"id":6,"name":"student06","grade":"16"}]
3. Zuul路由映射规则配置
3.1) 配置映射规则,提高服务的安全性
zuul: routes: studentServer.serviceId: microservice-student studentServer.path: /studentServer/** 我们把microservice-student的服务名称映射成/studentServer/**这样就把服务地址影藏了 请求方式 http://zuul.andrew.com:3001/studentServer/student/list
3.2) 增加ignored-services: "microservice-student"屏蔽原来的访问方式
假如要忽略所有的服务名称的话,ignored-services: "*" 配置如下 zuul: ignored-services: "*" routes: studentServer.serviceId: microservice-student studentServer.path: /studentServer/**
3.3) 配置请求前缀,加下配置prefix: /andrew
3.4) 最终配置
zuul: prefix: /andrew ignored-services: "*" routes: studentServer.serviceId: microservice-student studentServer.path: /studentServer/**
http://zuul.andrew.com:3001/andrew/studentServer/student/list [{"id":1,"name":"zhangsan","grade":"11"},{"id":2,"name":"lisi","grade":"12"},{"id":3,"name":"wangwu","grade":"13"},{"id":4,"name":"student04","grade":"14"},{"id":5,"name":null,"grade":null},{"id":6,"name":"student06","grade":"16"}] http://zuul.andrew.com:3001/studentServer/student/list http://zuul.andrew.com:3001/microservice-student/student/list 等都是404
4. Zuul请求过滤配置
4.1) 项目microservice-zuul-3001新建过滤器AccessFilter.java
package com.andrew.filter; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; public class AccessFilter extends ZuulFilter { Logger logger = Logger.getLogger(AccessFilter.class); /** * 判断该过滤器是否要被执行 */ @Override public boolean shouldFilter() { return true; } /** * 过滤器的具体执行逻辑 */ @Override public Object run() throws ZuulException { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); String parameter = request.getParameter("accessToken"); logger.info(request.getRequestURL().toString() + " 请求访问"); if (parameter == null) { logger.error("accessToken为空!"); ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(401); ctx.setResponseBody("{\"result\":\"accessToken is empty!\"}"); return null; } // token判断逻辑 logger.info(request.getRequestURL().toString() + " 请求成功"); return null; } /** * 过滤器的类型 这里用pre,代表会再请求被路由之前执行 */ @Override public String filterType() { return "pre"; } /** * 过滤器的执行顺序 */ @Override public int filterOrder() { return 0; } }
4.2) 项目microservice-zuul-3001开启过滤器ZuulConfig.java
package com.andrew.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.andrew.filter.AccessFilter; /** * Zuul配置 */ @Configuration public class ZuulConfig { @Bean public AccessFilter accessFilter() { return new AccessFilter(); } }
启动microservice-eureka-server-2001 启动microservice-eureka-server-2002 启动microservice-eureka-server-2003 启动microservice-student-provider-1001 启动microservice-zuul-3001 http://zuul.andrew.com:3001/andrew/studentServer/student/list {"result":"accessToken is empty!"} http://zuul.andrew.com:3001/andrew/studentServer/student/list?accessToken=3232 [{"id":1,"name":"zhangsan","grade":"11"},{"id":2,"name":"lisi","grade":"12"},{"id":3,"name":"wangwu","grade":"13"},{"id":4,"name":"student04","grade":"14"},{"id":5,"name":null,"grade":null},{"id":6,"name":"student06","grade":"16"}]
发表评论
-
Config Server使用
2019-03-21 10:31 4831. SpringCloud Config简介 Spri ... -
Feign与Hystrix服务熔断服务降级解耦
2019-03-20 13:56 6191. Feign与Hystrix服务熔断服务降级解耦 用 ... -
Hystrix的Dashboard仪表盘与turbine集群监控
2019-03-20 13:39 5331. Hystrix服务监控Dashboard仪表盘 H ... -
Hystrix断路器
2019-03-20 09:14 3491. Hystrix断路器简介 hystrix对应的中文 ... -
Feign声明式服务调用
2019-03-20 09:09 4031. Feign声明式服务调用简介 Feign是一个声明 ... -
Ribbon负载均衡器
2019-03-19 15:19 3781. Ribbon简介 Ribbon是Netflix发布 ... -
Eureka服务注册与发现组件
2019-03-19 14:22 3891. 服务注册与发现组件Eureka简介 Eureka gi ... -
服务消费者microservice-student-consumer-80
2019-03-19 13:17 3581. 服务消费者项目microservice-student- ... -
服务提供者microservice-student-provider-1001
2019-03-19 11:59 3321. 服务提供者项目microservice-student- ... -
SpringCloud建立父项目、公共模块项目
2019-03-19 09:54 13131. SpringCloud简介 springcloud项目 ...
相关推荐
Spring Cloud 使用 Zuul 实现 API 网关服务问题 在本文中,我们将主要介绍如何使用 Spring Cloud 的 Zuul 组件来实现 API 网关服务问题。 Zuul 是一个基于 Netflix Zuul 的 API 网关组件,它可以解决路由规则和服务...
Spring Cloud Zuul:API网关服务详解 Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的 API 网关使用,支持动态路由与过滤功能。API 网关为微服务架构中的服务提供了统一...
- 社保模块作为微服务的一部分,应设计清晰的API接口,通过ZUUL网关对外提供服务。 - 可以通过ZUUL的过滤器功能,实现在网关层面的身份验证和权限控制,保护社保数据的安全性。 - 如果有多实例的社保微服务,可以...
Zuul是一个在微服务架构中扮演API网关角色的组件,它主要负责动态路由、监控、弹性、安全性和灵活性等功能。Zuul API网关不仅仅是传统意义上的代理,它与微服务生态系统紧密集成,能够动态路由和监控进出微服务的...
ZUUL微服务API网关是Netflix开源的一个用于构建微服务架构的重要组件,它作为一个边缘服务,处理所有来自客户端的请求,并将这些请求路由到适当的后端服务。在这个"ZUUL微服务API网关Java工程代码.zip"压缩包中,...
这会自动加载所有相关的ZUUL过滤器,并设置API路由规则。 3. **路由配置**:在`application.yml`或`application.properties`中,我们需要定义路由规则,例如: ``` zuul: routes: service1: path: /service1/*...
《Spring Cloud Zuul:构建微服务的路由网关》 Spring Cloud Zuul 是一个基于 Netflix Zuul 的微服务网关,它提供了动态路由、过滤器以及面向服务的路由功能,是构建分布式系统的重要组件。在Spring Cloud生态中,...
在微服务架构中,Spring Cloud Zuul 是一个重要的组件,它作为边缘服务或者说是路由网关,承担着请求分发、过滤以及安全控制等职责。本文将深入探讨Spring Cloud Zuul 的核心概念、功能和使用方法。 首先,Zuul 是 ...
SpringCloud Zuul Gateway 服务网关是Spring Cloud生态系统中的一个重要组件,它主要负责微服务架构中的路由转发和过滤器功能。Zuul是Netflix开源的一个边缘服务,而Gateway则是Spring Cloud针对Zuul进行的升级版,...
华为微服务路由网关Zuul实战作业的知识点主要涵盖了微服务架构下使用Zuul作为反向代理和路由网关的全过程,详细包括了Zuul网关的配置、使用以及与Eureka服务注册与发现的整合,还涉及了如何在华为云DevCloud平台上...
SpringCloud是微服务架构中的一个核心组件,它提供了一套完整...以上就是关于SpringCloud中的Zuul路由网关的关键知识点。通过合理使用Zuul,可以极大地提升微服务架构的效率和稳定性,实现更高效的资源调度和服务治理。
Spring Cloud之 Zuul 路由网关实现详解 Spring Cloud是一款基于微服务架构的开发框架,它... Zuul 路由网关是一个功能强大且灵活的路由网关解决方案,可以满足微服务架构、 API 网关、云计算平台等多种场景的需求。
Zuul 是 Netflix 开源的一款基于 Java 的边缘服务框架,它主要用作微服务架构中的 API 网关。API 网关是系统对外的统一入口,负责路由、过滤、安全控制、负载均衡等任务。在本文中,我们将深入探讨 Zuul 在企业级...
Spring Cloud Zuul 路由网关服务过滤实现代码 Spring Cloud Zuul 路由网关服务过滤实现代码是基于 Spring Cloud Zuul 框架实现的路由网关服务过滤功能,主要用于微服务架构中对服务的路由和过滤。 Zuul 框架提供了...
SpringCloud Zuul是基于Spring Cloud框架的一个核心组件,它扮演着API网关的角色,负责路由转发、过滤器处理以及安全控制等任务。...这将有助于你构建自己的API网关服务,提升微服务架构的灵活性和安全性。
Zuul网关是Netflix开源的Java编写的API网关服务,它能够帮助我们实现路由转发、过滤器功能,简化了服务的动态路由、监控、弹性、安全性的处理。在微服务架构中,服务数量众多,如何有效地管理这些服务的访问和交互,...
Spring Cloud Zuul 是一个边缘服务,作为微服务架构中的API网关,它扮演着动态路由、过滤器、安全控制等多种角色。本篇文章将深入探讨如何使用Spring Cloud Zuul实现动态路由,并通过实际的代码示例——"Spring ...
Spring Cloud Zuul 是一个基于 Java 的边缘服务,它可以作为 API 网关,对微服务架构中的所有请求进行路由。Zuul 提供了过滤器机制(Zuul Filters),类似于 Spring 的面向切面编程(AOP),可以实现预处理、路由、...
在Spring Cloud体系中,Zuul是一个关键组件,用作边缘服务或API网关,用于路由请求、过滤和安全控制。 本文将详细介绍如何使用Spring Cloud Netflix Zuul作为代理网关来访问后台REST服务,以及如何实现前端与后端的...
在微服务架构中,Zuul 是一个非常重要的组件,它作为边缘服务或者API网关,负责处理所有来自客户端的请求,并将这些请求路由到相应的微服务。Spring Boot 结合 Zuul 可以轻松实现这一功能,使得微服务架构更加灵活和...