1. 场景描述

springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了,springcloud推出了自己的路由-springcloud gateway,亲儿子,目前官网主推。

netfelix的zull路由:

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

2. 解决方案

2.1 新建springboot项目

在springcloud项目中,新建的项目全部是基于springboot的。

2.1.1 new->project

next->next 更改下项目名称。

2.1.2 选择组件

(1)注册中心客户端

(2) 选择springcloud gateway

next->next, 完成。

2.2 类目录图

开始介绍springcloud-gateway,为了区分上一篇的关于zull的介绍,项目名称设置为springgate。

2.3 重点还是三个文件

2.3.1 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yutong</groupId>
<artifactId>springgateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springgateway</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</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>

说明,重点就两个starter:

(1)gateway,不同于zull,这个是直接位于spring-cloud下面,是springcloud的嫡系部队。

(2)注册中心客户端,不多说了

2.3.2 启动类application
package com.yutong.springgateway;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean; @SpringBootApplication
public class SpringgatewayApplication { @Value("${test.uri}")
private String uri; @Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
//basic proxy
.route(r -> r.path("/**")
.uri(uri)
).build();
} public static void main(String[] args) {
SpringApplication.run(SpringgatewayApplication.class, args);
} }

说明:

(1)不同于路由zull,需要zull的标签,这里只需要springboot的启动标签@SpringBootApplication就可以了。

(2)增加@Bean标签,RouteLocator 是路由规则,这个稍微复杂点,示例中只做了简单配置,路由规则用于过滤控制路由等,可根据具体需求,参考路由规则API进行设置。

如果你觉得文章对你有些帮助,欢迎微信搜索「软件老王」第一时间阅读或交流!
2.3.3 配置类application.yml
test:
uri: lb://client spring:
application:
name: springgateway
cloud:
gateway:
discovery:
locator:
lower-case-service-id: true eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka server:
port: 9000

说明:

(1)第一行的uri在启动类application中用到,指访问的客户端服务,client为注册中心客户端服务名称。

(2)defaultZone为注册中心地址。

(3) 为了区分介绍zull的项目,name设置为:springgateway

2.3.4 效果图

(1)注册中心

(2)路由springcloud gateway访问

说明:

路由访问的时候不需要指定客户端名称client,因为在gateway启动类中已经指定过了。

微服务实战系列(七)-网关springcloud gateway-copy的更多相关文章

  1. go-zero微服务实战系列(十一、大结局)

    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...

  2. go-zero微服务实战系列(三、API定义和表结构设计)

    前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类: api服务 - BFF层,对外提供HTTP接口 rpc服务 - 内部依赖的微服务,实现单一 ...

  3. 微服务实战系列--Nginx官网发布(转)

    这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...

  4. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  5. Chris Richardson微服务实战系列

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  6. 微服务实战系列(七)-网关springcloud gateway

    1. 场景描述 springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了, ...

  7. 微服务实战系列(八)-网关springcloud gateway自定义规则

    1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...

  8. 微服务实战系列(四)-注册中心springcloud alibaba nacos

    1.场景描述 因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的 ...

  9. 微服务实战系列(六)-网关springcloud zuul

    1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...

  10. Spring-cloud微服务实战【七】:服务熔断与降级hystrix

      在之前的文章中,我们先后介绍了eureka,ribbon,feign,使用eureka集群的方式来保证注册中心的高可用,在eureka中使用ribbon进行负载均衡,使用feign接口替换手动编码 ...

随机推荐

  1. Tomcat弱口令上传war包

    Tomcat弱口令上传war包 思路:   利用弱口令登录管理页面 ---> 部署war包 ---> getshell 环境:   vulhub靶场:tomcat/tomcat8   启动 ...

  2. 文件上传日志包含详解与CTF实战

    1. 日志简介 1.1 日志介绍 日志是记录系统或应用程序运行时事件的文件.这些记录可以包括错误信息.用户活动.系统性能指标等,帮助开发者和管理员监控和排查问题. 日志通常会记录多种内容,包括: 时间 ...

  3. Nginx支持https访问

    为了提高web应用的安全性,现在基本上都需要支持https访问.在此记录一下自己在nginx下的配置过程 安装Nginx这里就省略了 安装openssl模块 yum -y install openss ...

  4. 在 Github Action 管道内集成 Code Coverage Report

    Github Actions 我们的开源项目 Host 在 Github,并且使用它强大的 Actions 功能在做 CICD.单看 Github Actions 可能不知道是啥.其实它就是我们常说的 ...

  5. 数据结构课程设计报告-C 语言整数单链表的表示和实现

    数据结构课程设计报告 专业名称:计算机科学与技术 课程名称:数据结构        实训题目:整数单链表的表示和实现                            实训环境:C 语言实现( D ...

  6. P5524 Ynoi2012 NOIP2015 充满了希望

    P5524 Ynoi2012 NOIP2015 充满了希望 数组开大见祖宗. 思路 不难发现只有询问才会产生贡献,而询问的值来自于距离它最近的且能覆盖这个询问的点的覆盖操作. 可以每个询问操作保存一个 ...

  7. 2023NOIP A层联测10 T4 子序列

    2023NOIP A层联测10 T4 子序列 题面及数据范围 Ps:链接来自accoderOJ. 考场2小时才做完 T1,抱着试一试的心态看了 T4,然后想到做法了,调了 1 个多小时没调除了,赛后发 ...

  8. 成为Java GC专家系列(3) — 如何优化Java垃圾回收机制

    本文是成为Java GC专家系列文章的第三篇.在第一篇<成为JavaGC专家Part I - 深入浅出Java垃圾回收机制>中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生 ...

  9. 理解Hive 不同组件的功能

    Hive功能 通过将SQL转换成MR.Spark等任务,来计算HDFS中数据的工具. Hive是基于Hadoop之上的数仓工具.通过HDFS存储真实的数据,通过YARN运行计算任务(MR.Spark等 ...

  10. web移动端基础

    1.像素密度 PPI 说到屏幕就离不开2个因素,屏幕大小和屏幕分辨率. PPI是Pixels Per Inch缩写,pixels per inch所表示的是每英寸所拥有的像素(pixel)数目. PP ...