第三章:搭建最简单的spring cloud应用(服务注册,网关路由转发)

引言

不用任何第三方开源框架,集成最简单的spring cloud微服务应用。包括使用eureka注册中心实现服务发布到注册中心中,gateway实现网关路由转发。

1、我们先创建一个简单的maven项目
(1)、maven的简介,maven的两大核心功能

  • 依赖管理(jar包管理)
  • 构建项目(项目打包)


    创建一个maven父模块项目

2、然后基于父模块项目创建module子模块项目 eureka注册中心

创建eureka注册中心

pom文件拷贝父模块的eureka的服务端依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

eureka的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">
    <parent>
        <artifactId>yu-study</artifactId>
        <groupId>com.zhushengyu.study</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yu-study-eureka</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>


</project>

将父模块之前创建的工程src文件删除,父模块的功能主要就是为了管理jar包。整理的工程如图


image.png

启动eureka子模块EurekaApplication的main方法(适当进行了日志答应的改造)

spring boot默认集成slf4j框架,它定义了一些日志接口,规范日志输出,真正的实现是logback或log4j。我们代码中写的都是slf4j的代码。

启动成功如图


启动成功图

可以点击这个地址,浏览器就可以进入注册中心了


注册中心

注册中心可以看到,目前没有其它任何服务

3、我们现在添加子模块gateway网关模块
引用的依赖,先添加最简单的 spring cloud自己gateway模块依赖,以及eureka注册中心客户端依赖

<?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">
    <parent>
        <artifactId>yu-study</artifactId>
        <groupId>com.zhushengyu.study</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yu-study-gateway</artifactId>

    <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>
    </dependencies>
</project>

然后创建一个eureka的客户端的基于gateway的main方法启动类


image.png

其中application.yml文件需要指定eureka的注册中心地址

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 9000
spring:
  application:
    name: yu-study-gateway

先启动eureka注册中心,再启动gateway网关,重新访问下eureka注册中心


image.png

此时就发现服务注册上去了

4、我们现在再创建一个系统的业务模块,后面开发功能可以在这个业务模块中写公司对应的业务,这里只演示一个模块,其它业务模块类似。在父模块的基础上添加子模块。
这里我们只引入最基本的依赖,web程序访问的依赖,eureka客户端依赖

<?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">
    <parent>
        <artifactId>yu-study</artifactId>
        <groupId>com.zhushengyu.study</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>yu-study-system</artifactId>

    <dependencies>
        <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-web</artifactId>
        </dependency>
    </dependencies>

</project>
创建好的业务模块

然后我们写个最简单的controller

package com.zhushengyu.study.yustudy.system.controller;

import org.springframework.web.bind.annotation.GetMapping;

/**
 * @Description TODO
 * @Author jin_z
 * @Date 2020/6/7 13:59
 * @since:
 * @copyright:
 */
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "success";
    }
}

yml文件配置注册到注册中心去

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 9001
  servlet:
    context-path: /system
spring:
  application:
    name: yu-study-system

如图项目结构


image.png

重新启动eureka注册中心,然后启动业务模块system
此时注册中心就可以看到我们注册的服务了


image.png

我们访问下那个controller的请求

image.png

此时我们是直接通过system项目端口访问的,这根本没有达到gateway路由转发的效果,我们要通过网关9000端口去访问其它业务请求。此时在gateway的yml文件下配置一下路由转发就行,多个业务模块就配置多个路由转发


image.png
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 9000
spring:
  application:
    name: yu-study-gateway
  ##路由转发
  cloud:
    gateway:
      routes:
        -   id: system
            predicates:
              -   args:
                    - /system/**
                  name: Path
            uri: http://127.0.0.1:9001

重启gateway服务,此时浏览器就可以通过9000端口访问了

image.png

这样后期所有的其它业务模块都可以通过这个统一网关入口进行访问,后期其它业务模块可以进行屏蔽掉,只能通过网关访问。对应的服务限流什么请求都可以通过网关实现
路由转发:将外部请求转发到实际的业务模块进行处理
作者:金哲一(jinzheyi)【笔名】
本文代码地址:https://gitee.com/jinzheyi/springboot/tree/master/springcloud-study
本文链接:https://www.jianshu.com/p/3c39323172b8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335