我是靠谱客的博主 默默百褶裙,最近开发中收集的这篇文章主要介绍关于批量启动微服务的jar包_服务网关Zuul,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学习主题:服务网关Zuul

什么是微服务中的网关

1.1为什么要使用网关?

服务网关 = 路由转发 + 过滤器

1、路由转发:接收一切外界请求,转发到后端的微服务上去;

2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

上述所说的横切功能(以权限校验为例)可以写在三个位置:

Ø 每个服务自己实现一遍

Ø 写到一个公共的服务中,然后其他所有服务都依赖这个服务

Ø 写到服务网关的前置过滤器中,所有请求过来进行权限校验

第一种,缺点太明显,基本不用;


第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

由于每个服务引入了这个公共服务,那么相当于在每个服务中都引入了相同的权限校验的代码,使得每个服务的jar包大小无故增加了一些,尤其是对于使用docker镜像进行部署的场景,jar越小越好;

由于每个服务都引入了这个公共服务,那么我们后续升级这个服务可能就比较困难,而且公共服务的功能越多,升级就越难,而且假设我们改变了公共服务中的权限校验的方式,想让所有的服务都去使用新的权限校验方式,我们就需要将之前所有的服务都重新引包,编译部署。

而服务网关恰好可以解决这样的问题:

将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码,所以服务的jar包中也不会引入权限校验的逻辑,不会增加jar包大小;

如果想修改权限校验的逻辑,只需要修改网关中的权限校验过滤器即可,而不需要升级所有已存在的微服务。

所以,需要服务网关!!!

1.2网关解决了什么问题?

a80b61126f35ce951e3a5431eb3d7e80.png

网关服务入门

2.1 @EnableZuulProxy注解的作用是什么?

答:Sets up a Zuul server endpoint and installs some reverse proxy filters in it, so it can forward requests to backend servers. The backends can be registered manually through configuration or via DiscoveryClient.

2.2添加网关服务后,访问服务的URL格式是什么?

答:http://网关服务地址:网关服务端口/访问的服务的名称/访问的服务中的接口的地址

2.3创建一个Maven的jar工程。

90ee0b032e1862ac66683efcb8a35d16.png

2.4修改POM文件,添加相关坐标。

<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>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.13.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.bjsxt</groupId>
	<artifactId>zuul-gateway</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zuul</artifactId>
		</dependency>
	</dependencies>
	
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

2.5修改POM文件,添加网关启动器。

2.6修改配置文件,添加服务相关配置。

spring.application.name=zuul-gateway
server.port=9020
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

2.7创建启动类。开启网关代理。

package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {
	public static void main(String[] args) {
		SpringApplication.run(ZuulApplication.class, args);
	}
}

2.8测试通过网关请求服务。

Ø 启动该网关服务

Ø 启动e-book-product-provider服务

Ø 访问http://localhost:9001/product/findAll

3e7ef658d006976ff73ee2e55b0ccf5b.png

Ø 访问http://localhost:9020/e-book-product-provider/product/findAll

ed426c22124d0cac2c128d70437b7d97.png

采用URL指定路由方式

3.1路由器中支持几种路由规则?

答:4种

3.2 URL指定路由是什么规则?

答:URL匹配关键字,如果包含关键字就跳转到指定的URL中

3.3通配符?表示的含义是什么?

3.4通配符*表示的含义是什么?

3.5通配符**表示的含义是什么?

be8c4495cdfe2a2d5db634adbdc720b1.png

3.6修改配置文件配置URL路由规则。

# 1 ###################### 路由指定:URL指定 #############################
# URL匹配关键字,如果包含关键字就跳转到指定的URL中
# 下面第二个点到第三个点之间的是服务名
zuul.routes.e-book-product-provider.path=/e-book-product-provider/**
zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/

最后

以上就是默默百褶裙为你收集整理的关于批量启动微服务的jar包_服务网关Zuul的全部内容,希望文章能够帮你解决关于批量启动微服务的jar包_服务网关Zuul所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部