springboot zuul网关_ubuntu网关服务器搭建

springboot zuul网关_ubuntu网关服务器搭建目录一.Zuul网关二.Zuul服务的前期准备2.1注册中心EurekaServer的搭建2.2EurekaService的搭建三.Zuul服务搭建五.Zuul的访问六.Zuul的更多功能前言:博主一直力求做到写博客尽量的详细来减少大家花在踩坑上的时间,若有写的不好或错误的地方,还需各方大佬指正。一.Zuul网关网关,是一种网络关口,既然是…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

目录

一.Zuul网关

二.Zuul服务的前期准备

2.1 注册中心EurekaServer的搭建

2.2 EurekaService的搭建

三.Zuul服务搭建

五.Zuul的访问

六.Zuul的更多功能


前言:博主一直力求做到写博客尽量的详细来减少大家花在踩坑上的时间,若有写的不好或错误的地方,还需各方大佬指正。

一.Zuul网关

    网关,是一种网络关口,既然是关口,就需要知道哪些东西能通过哪些东西不能通过。

    在微服务中,Zuul是SpringCloud众多组件中的一个,用于微服务的网关。在微服务中,各自服务之间的调用不可能都在各自服务中来实现安全与认证功能,因此需要一个专门的微服务来提供这些功能。当请求从客服端发到服务器,如果经过网关的一系列验证和过滤符合访问要求,那么在之后访问其他微服务或由网关路由转发之后的访问时,不需要再做同样的安全认证。这是网关的主要功能。

    实际上,Zuul给我们提供的网关服务种类是很多的。后面会介绍他的一些功能。如果你已经搭建了注册中心那么可以直接看第三节:Zuul服务搭建

二.Zuul服务的前期准备

2.1 注册中心EurekaServer的搭建

为了搭建好网关后,能通过网关来访问各模块微服务来证明网关的搭建成功,因此这里需要提前搭建一些可用的微服务。第一步我们先新建一个Project

springboot zuul网关_ubuntu网关服务器搭建

选择Springboot作为启动器springboot zuul网关_ubuntu网关服务器搭建,微服务的标配。当然你用Mavenspringboot zuul网关_ubuntu网关服务器搭建的骨架来搭建也完全可以,构建项目并没有非要用哪一种方式搭建。重要的是后面你知道pom里应该引入那些依赖,application.yml怎么配置。这些才是搭建微服务需要主要的地方。这里我使用Spring Initializr

springboot zuul网关_ubuntu网关服务器搭建

idea给你默认的内容如下:

springboot zuul网关_ubuntu网关服务器搭建

Group和Artifact我们已经见得太多了,当我们指定这两个参数时,项目名和包名应该与之适配。不过当然可以不一样。

比如默认值 Group为com.example,Artifact为demo,那么项目名应该为demo和Artifact一致,包名Package应该为com.example.demo,为Group和Artifact的合体 。当然这里不强制,只是一种规范,比如别人看见你的包名为com.example.demo时,立马可以知道他属于com.example组下的demo项目。一些使用语言,Java版本,项目类型啥的。

在这里因为我是作为测试springcloud相关组件的目的,那么我这里设置如下:

springboot zuul网关_ubuntu网关服务器搭建

细心的朋友会发现,当我们改完1和2,idea会自动给我们修改3和4选项,既然是规范idea当然希望大家准守。改完1和2,我们点击Next。这一步相当于选择这个项目需要的一些组件,比如这个项目你需要用到springmvc?Mybatis?MySQL?那么在这里选择后,idea会去加载这些相关的依赖并在pom里为大家自动引入这些依赖。

这里我们要搭建一些测试的微服务,首先搭建1个Eureka注册中心。 所有的微服务都需要在这里注册。微服务的注册与发现详细的搭建过程可以参考上一篇博文:https://blog.csdn.net/qq_29519041/article/details/85238270

springboot zuul网关_ubuntu网关服务器搭建springboot zuul网关_ubuntu网关服务器搭建

如上图选择Eureka Server,点Next,如下图,项目为zuul,而模组这里我们先搭建微服务的注册中心Eureka Server,所以这里我把模组名命名为eurekaserver,继续点Next。改了模组名,idea会默认在项目目录下建立模组的文件夹,因此可以看见第二个红框自动变化。继续点下一步。

springboot zuul网关_ubuntu网关服务器搭建

因为我之前有项目所以这里选择开启新的idea窗口。New Window

springboot zuul网关_ubuntu网关服务器搭建

点击import change之后等待idea加载依赖

springboot zuul网关_ubuntu网关服务器搭建

查看项目结构:

springboot zuul网关_ubuntu网关服务器搭建

此时我习惯把application.properties后缀改为yml。这样配置书写的格式符合yml的风格,比较好看。

现在需要做下面几件事,由于我们开始构建项目时选择了Eureka Server,所以pom.xml中不需要手动添加依赖了。

首先在启动类SpringcloudApplication中添加EurekaServer的注解: @EnableEurekaServer

springboot zuul网关_ubuntu网关服务器搭建springboot zuul网关_ubuntu网关服务器搭建

然后在application.yml中添加相关配置:

server:
  port: 9000  #eureka注册中心服务端口

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false #不向eureka注册中心注册。也就是为了关闭自己向自己注册,eureka默认要向自己注册
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

就可以启动服务了:

springboot zuul网关_ubuntu网关服务器搭建

访问注册中心:按照配置的端口号访问。我这里配了9000,端口随意,如下图代表Eureka注册中心部署成功了。

显示没有实例在此中心注册。没事接下来我们开始配置zuul网关,它也是一个服务需要注册到此注册中心来。

springboot zuul网关_ubuntu网关服务器搭建

 

2.2 EurekaService的搭建

有了注册中心,我们现在需要搭建服务的真正提供者,EurekaService,第四节我们建四个。

eurekaservice01,eurekaservice02,eurekaservice03,eurekaservice04,第一个如下,第二三四个按着第一个的建,修改一下名字,端口号还有方法返回值。

springboot zuul网关_ubuntu网关服务器搭建

需要用到mvc

springboot zuul网关_ubuntu网关服务器搭建

服务提供者同样需要注册到注册中心。

springboot zuul网关_ubuntu网关服务器搭建

改名你懂得

 springboot zuul网关_ubuntu网关服务器搭建

完成:

springboot zuul网关_ubuntu网关服务器搭建

接下来是同样的套路,改yml,启动类添加注解:@EnableEurekaClient

yml配置如下(因为是测试所有很简陋):

server:
  port: 8900 # 服务提供方

# 指定当前eureka客户端的注册地址,
eureka:
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:9000/eureka/
  instance:
    hostname: localhost

#当前服务名称
spring:
  application:
    name: eurekaservice1

注意当前服务名称。这里用于注册到注册中心的名字,还可以启动很多同样为eurekaservice1的名字的微服务到注册中心,zuul从注册中心Eureka Server获取所有服务名为eurekaservice01的服务列表后,会采用负载均衡策略访问其中一台服务提供者获取资源。

下图我们之前zuul中的配置serviceId就是指向这里的服务名称,这是微服务调用的精髓,通过服务名调用。

 

既然是服务提供者 ,这里要编写controller类了:新建controller包,新建Test01类,编写REST的方法。返回服务1

springboot zuul网关_ubuntu网关服务器搭建

按照服务提供者1的搭建方式,现在搭建服务提供者2:

同样是新建模组,名字改为…02,yml配置文件中端口号与服务1要不同,服务名称相同,为了测试负载均衡,REST方法返回值设为服务2。springboot zuul网关_ubuntu网关服务器搭建springboot zuul网关_ubuntu网关服务器搭建

yml:

server:
  port: 8901 # 服务提供方

# 指定当前eureka客户端的注册地址,
eureka:
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:9000/eureka/
  instance:
    hostname: localhost

#当前服务名称
spring:
  application:
    name: eurekaservice1

同样的方法再建两个服务提供者3和4,服务名称都为eurekaservice2,端口号分别为8902,和8903。REST方法返回值分别为,服务3和服务4。

springboot zuul网关_ubuntu网关服务器搭建springboot zuul网关_ubuntu网关服务器搭建

 

三.Zuul服务搭建

有了第二节的准备,搭建了注册中心,和服务的提供者,我们现在开始搭建Zuul网关服务,最后通过zuul访问注册中心获取服务列表,然后访问服务提供者。

新建模组:

springboot zuul网关_ubuntu网关服务器搭建

 这里模组名设为zuul。包名设置为zuul,等会生成的启动类就会是带有zuul了。EurekaServer也可以这样只是我开始搭的时候没有注意到。

springboot zuul网关_ubuntu网关服务器搭建

需要Eureka的客户端组件,和zuul组件,点next

springboot zuul网关_ubuntu网关服务器搭建springboot zuul网关_ubuntu网关服务器搭建

 模组名设为zuul,不强制

springboot zuul网关_ubuntu网关服务器搭建

 项目结构:

springboot zuul网关_ubuntu网关服务器搭建

在启动类配置注解 @EnableEurekaClient,@EnableZuulProxy,@EnableZuulProxy可以称为@EnableZuulServer的增强版,当Zuul与Eureka、Ribbon等组件配合使用时,我们使用@EnableZuulProxy。 

springboot zuul网关_ubuntu网关服务器搭建

配置pom文件:

server:
   port: 9100

spring:
  application:
    name: zuul

eureka:
  client:
    service-url:
        defaultZone: http://localhost:9000/eureka/ #当前zuul网关想要注册到哪个注册中心这里注册到之前搭的9000上。

#路由规则定义。这里定义两种路由规则route1和route2
#,代表访问网关/test01/**或/test02/**时。
#路由到服务名为 eurekaservice1或 eureka
#service2中的服务集群去。
zuul:
  routes:
    route1:
      path: /test01/**
      serviceId: eurekaservice1
    route2:
      path: /test02/**
      serviceId: eurekaservice2

启动项目:

springboot zuul网关_ubuntu网关服务器搭建

聪明的你再去注册中心看就能看见zuul服务已经被注册到注册中心了

springboot zuul网关_ubuntu网关服务器搭建

有了网关,

五.Zuul的访问

我们有一个网关服务zuul,一个注册中心eurekaserver,4个服务提供者eurekaservice,4个服务提供者,其中两个提供

服务名为eurekaservice1的服务,另外两个提供eurekaservice2的服务,现在我们来启动4个服务提供者,在注册中心查看,并通过网关访问测试网关的服务是否正常。

总项目结构:

springboot zuul网关_ubuntu网关服务器搭建

启动后注册中心查看:

springboot zuul网关_ubuntu网关服务器搭建

如之前所想,两个服务名下各两台服务提供者。

现在回想之前zuul的路由配置:

springboot zuul网关_ubuntu网关服务器搭建

那么我访问zuul网关的test01/**下的任何服务都会给我转发到服务名为eurekaservice1下的01和02服务下。我们来试试

第一次访问:test01

springboot zuul网关_ubuntu网关服务器搭建

第二次访问:test01

springboot zuul网关_ubuntu网关服务器搭建

可以看见zuul网关做了转发和负载均衡,使用的是ribbon轮询的方式负载均衡。

那么可以猜想到我们访问test02,zuul网关会在服务名为eurekaservice2的服务3和服务4之间去访问了。我们来看看:

springboot zuul网关_ubuntu网关服务器搭建

springboot zuul网关_ubuntu网关服务器搭建

至此我们已经实践完成zuul网关的基本功能转发和负载均衡。第三节会在yml中继续配置一些参数,来实践zuul的更多功能。

六.Zuul的功能介绍

6.1 传统路由配置

6.1.1 传统路由配置

 

6.1.2 单实例配置

 

6.1.3 多实例配置

 

6.2 服务路由配置

6.3 服务路由的默认规则

6.4 自定义路由映射规则

6.5 路径匹配

6.6 忽略表达式

6.7 路由前缀

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170619.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • KeyValuePair和Dictionary详解:「建议收藏」

    KeyValuePair和Dictionary详解:「建议收藏」1、KeyValuePaira、KeyValuePair是一个结构体(struct);b、KeyValuePair只包含一个Key、Value的键值对。2、Dictionarya、Dictionary可以简单的看作是KeyValuePair的集合;b、Dictionary可以包含多个Key、Value的键值对。usingSystem;usingSystem.Collections.Generic;namespaceConsoleTest

  • 如何查看jdk版本号_jdk与tomcat版本

    如何查看jdk版本号_jdk与tomcat版本背景:最近有一个springboot项目要发布到很老的一台服务器上,该台服务器是XP200232位系统,并且springboot微服务需要连接服务器上的accessdb,因此需要有对应的jdk,看了看网上的查看JDK版本很多都不靠谱(中文技术网站都是相互抄袭),特地总结了一下:方法1:最基本的,下载jdk的时候应该知道自己下的什么版本,在安装jdk的时候就在安装目录里写清楚版本号以便将…

  • Python快速编程入门课后习题答案「建议收藏」

    Python快速编程入门课后习题答案「建议收藏」文章目录前言第一章一、填空题二、判断题三、选择题四、简答题第二章一、填空题二、判断题三、选择题四、简答题第三章一、填空题二、判断题三、选择题四、简答题第四章一、单选题二、判断题三、填空题四、程序分析题第五章一、选择题二、判断题三、填空题四、简答题五、程序分析题第六章一、单选题二、判断题三、填空题四、简答题五、程序分析题第七章一、单选题二、判断题三、填空题四、简答题五、程序分析题第八章一、单选题二、…

  • 简单区分单射、满射与双射

    简单区分单射、满射与双射我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~利用泛…

  • redis主从复制原理是同步还是异步_kubernetes高可用架构

    redis主从复制原理是同步还是异步_kubernetes高可用架构史上最全的MySQL高可用架构之【主从复制】【故障转移】【读写分离】【负载均衡】

  • 常用字典_古汉语常用字典

    常用字典_古汉语常用字典huangyu888!@#$zhoujiakui223223jtserver1981@223wztelecom2008easygetyzdx123echina0228xiaxue123-$$4rf7uj3ed8ik!!changeme$$ebochai517qifengjc09001.1qa2ws3edwzcgame12wanzhonggamewanzhonggame…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号