• spring cloud搭建教程


    spring cloud简介

    Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的微服务:就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维.并且多个服务相互协调,相互配合,最终完成用户的价值. Spring Cloud是一系列框架的有序集合。其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,通过Spring Boot的方式,可以实现一键启动,和部署。

    Spring 没有重新造车轮,只是把各家的应用给综合起来。最后给开发者遗留下了一个足够简单的,相当容易部署的,相当容易学习的Spring 体系。至于为什么要学习Spring Cloud的体系,因为原先的体系过于复杂了,导致开发的环境艰难,正是由于开发的环境的艰难,Spring Cloud 的是Spring体系的简化版,简化了原有的复杂。

    spring cloud搭建

    博主使用的是IntelliJ IDEA 2021.1.2 版本进行环境搭建演示,如果使用Eclipse等IDE进行开发可以查看论坛内其他博主的博客进行学习。

    打开IntelliJ IDEA

    点击file - new - project按钮创建一个新的项目

    设置GroupId和项目名称和项目路径

    本步骤中的项目路径需要自己手动设置,以免找不到项目存放位置的尴尬情况
    点击Finish按钮结束项目的创建,成功创建项目如下图:

    这时我们进入IDEA以后会发现我们项目只有Springcloud_Demo一个父项目,下面我问会创建Eureka,Zuul,Service等子模块对项目进行创建来实现微服务

    修改Pom文件

    再进行Eureka模块搭建之前我们需要先对”Springcloud_Demo“pom文件进行相关Jar包的依赖导入

    完整代码如下

    
    
        4.0.0
    
        com.xmy
        Springcloud_Demo
        1.0-SNAPSHOT
    
        
        
            org.springframework.boot
            spring-boot-starter-parent
            2.1.4.RELEASE
        
        
        
            UTF-8
            1.8
            Greenwich.RELEASE
        
    
        
        
            
                
                    org.springframework.cloud
                    spring-cloud-dependencies
                    ${spring-cloud-release.version}
                    pom
                    import
                
            
        
        
        
            
                spring-milestones
                Spring Milestones
                https://repo.spring.io/milestone
                
                    false
                
            
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    创建Eureka注册中心模块

    关于Eureka

    Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。我们称此服务为Eureka服务。Eureka提供了java客户端组件,Eureka Client,方便与服务端交互。客户端内置了基于round-robin实现的简单负载均衡。在Netifix,为Eureka提供更为复杂的负载均衡方案进行封装,以实现高可用,它包括基于流量、资源利用率以及请求返回状态的加权负载均衡。

    创建Eureka模块

    右键点击SpringCloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块

    点击next进行下一步操作

    设置Eureka子模块名称,子模块路径,点击finish完成子模块创建

    修改Eureka子模块的Pom文件

    当Eureka子模块创建完成的时候,这时Eureka_Demo的pom.xml是没有Jar包依赖的的,我们需要手动导入Eureka需要的Jar包依赖。

    详细代码如下

    
    
        
            Springcloud_Demo
            com.xmy
            1.0-SNAPSHOT
        
        4.0.0
    
        Eureka_Demo
    
        
            
            
                org.springframework.boot
                spring-boot-starter-web
            
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-server
                2.2.1.RELEASE
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    创建核心配置文件application.yml

    代码如下:

    # Tomcat
    server:
      port: 9099
    
    # Spring
    spring:
      application:
        # 应用名称
        name: eureka-demo
    eureka:
      client:
        sevice-url:
          defaultZone: http://localhost:${server.port}/eureka
        register-with-eureka: false
        fetch-registry: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    创建Application启动类

    将EurekaApplication启动类配置到Configurations中

    点击IDEA右上角的Add Configurations按钮,点击左上角的加号按钮后点击Spring Boot选项进入设置页面,设置启动名称以及启动类文件收点击OK按钮完成设置。

    启动Eureka

    在浏览器输入访问地址: http://localhost:9099访问Eureka注册中心

    创建Zuul网关模块

    关于Zuul

    Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、hystrix等组件配合使用。Zuul的核心是一系列过滤器。这些过滤器完成以下功能:
    1 身份认证和安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
    2 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
    3 动态路由:动态地将请求路由到不同的后端集群。
    4 压力测试:逐渐增加指向集群的流量,以了解性能。
    5 负责分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
    6 静态响应处理:在边缘位置直接建立部分响应,避免其转发到内部集群。
    7 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Blancing)使用的多样化,以及让系统的边缘更贴近系统的使用者。

    创建Zuul子模块

    右键点击SpringCloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块

    点击Finish完成子模块创建

    修改Zuul子模块的Pom文件

    当Zuul子模块创建完成的时候,这时Zuul_Demo的pom.xml是没有Jar包依赖的的,我们需要手动导入Zuul需要的Jar包依赖。

    详细代码:

    
    
        
            Springcloud_Demo
            com.xmy
            1.0-SNAPSHOT
        
        4.0.0
    
        Zuul_Demo
    
        
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-zuul
            
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    创建核心配置文件Application

    详细代码:

    server:
      port: 10010
    spring:
      application:
        name: zuuldemo
    zuul:
      prefix: /api
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:9099/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在Zuul_Demo模块下的src/main/resources文件夹下创建application.yml核心配置文件,进行编写核心配置

    编写ZuulApplication启动类

    在Zuul_Demo模块下的src/main/java/com/xmy路径下创建ZuulApplication.java文件

    详细代码如下:

    package com.xmy;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
    
    @EnableZuulProxy
    @EnableEurekaClient
    @SpringBootApplication
    public class ZuulApplication {
        public static void main(String[] args){
            SpringApplication.run(ZuulApplication.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    将ZuulApplication启动类配置到Configurations中

    启动Zuul网关模块

    需要先启动Eureka注册中心后再启动Zuul网关
    访问:http://localhost:9099

    可以看到Zuul网关服务已经被注册到Eureka注册中心。

    创建Service服务模块

    关于Service

    Service模块是客户端模块,用户编写代码和功能实现。前端请求发送到Zuul网关再有网关发送到Service服务,可以是系统的安全性提升。

    创建Service子模块

    右键点击Cloud_Demo父项目后,将鼠标拖入New选项框,点击Module选项创建子模块,

    点击ArtifactId输入框输入Service模块名称,在此我们使用Service_Demo进行命名。

    点击Finish按钮完成子模块创建。

    修改Service子模块的Pom文件

    详细代码:

    
    
        
            Springcloud_Demo
            com.xmy
            1.0-SNAPSHOT
        
        4.0.0
    
        ServiceDemo
    
        
            
            
                org.springframework.boot
                spring-boot-starter-web
            
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
    
            
            
                tk.mybatis
                mapper-spring-boot-starter
                2.0.4
            
            
            
                mysql
                mysql-connector-java
            
            
            
                com.github.pagehelper
                pagehelper-spring-boot-starter
                1.2.3
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    创建核心配置文件

    详细代码:

    server:
      port: 9080
    spring:
      application:
        name: demoservice
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/cloud_project?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        username: root
        password: 1022
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:9099/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在Service_Demo模块下的src/main/resources文件夹下创建application.yml核心配置文件,进行编写核心配置

    编写ServiceApplication启动类

    在Service_Demo模块下的src/main/java/com/xmy路径下创建ServiceApplication.java文件

    详细代码:

    package com.xmy;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class ServiceApplication {
        public static void main(String[] args){
            SpringApplication.run(ServiceApplication.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    将ServiceApplication启动类配置到Configurations中

    设置启动名称和启动路径后点击OK按钮

    启动Service服务模块

    需要先启动Eureka注册中心和Zuul网关服务后启动ServiceApplication
    访问:http://localhost:9099

    可以看到Zuul网关和Service服务都被注册到Eureka注册中心。到此我们的已经完成环境搭建。之后需要自行在Service服务中编写代码来实现功能,想创建多个service都可以,另外每个服务也可以链接不同的数据库;到此一个简单的Spring Cloud的环境搭建已经完成。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【Unity3D】刚体组件Rigidbody
    ACN 报告 2023:国家网络安全局的一年期报告
    Java的HTTPClient工具类(附代码实现)
    flink job同时使用BroadcastProcessFunction和KeyedBroadcastProcessFunction例子
    Kubernetes学习笔记
    android pcm播放器:有进度条同步、快进、快退、倍速功能
    JAVA实现简单计算器布局与功能(附完整源码)
    【译】.NET 7 中的性能改进(九)
    Python 浮点数的舍入,round与decimal舍入方式
    POI XWPFDocument 实现word中内容换行
  • 原文地址:https://blog.csdn.net/drnrrwfs/article/details/126114144