• SpringCloud微服务第1章


    目录

    一、前言

    1、什么是微服务

    2、微服务的优点

    3、什么是SpringCloud

    4、使用SpringCloud的优点

    5、服务注册和发现是什么意思?Spring Cloud 如何实现?

    二、SpringCloud项目搭建

    (一)创建项目

    1、选择File -> new -> Project

    2、选择Maven,点击Next

    3、输入GroupId、ArtifactId,点击Next

    4、选择项目存放路径,点击Finish完成项目创建

    5、pom.xml引依赖,注意idea右下角可能import下

    (二)创建注册中心模块

    6、创建SpringCloud注册中心Eureka模块

    7、在ceam-eureka下的pom.xml引入子模块Eureka依赖

    8、在子模块下创建SpringCloud注册中心启动类EurekaApp

    9、编写SpringCloud注册中心配置文件

    10、启动注册中心EurekaApp

    (三)创建微服务模块

    11、创建微服务模块


    一、前言

    1、什么是微服务

    微服务(microservice) 一词最早由Martin Fowler与James Lewis于2014年共同提出来的,它是一种新的软件架构风格,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过RPC或者是Rest协议来进行通信,可以按照业务领域来划分成独立的单元,比如一个电商系统可以分割成会员、订单、商品、积分、优惠券等不同的小型服务,有自动化运维、容错、快速演进的特点,它能够解决传统单体架构系统的痛点,同时也能满足越来越复杂的业务需求。

    2、微服务的优点

    • 高可用:与传统的单机系统比,它的可用性高。举个例子说明下:单机系统如果挂了,那么整个系统的服务就不能提供服务了,这给使用它的商家带来很大的经济损失。而微服务不同,某个服务挂了,可能并不会影响其它微服务继续对外提供服务。而且新开发的功能点或更改的功能点集中在一个服务上面,即使部署上线出了问题,也不会影响其它服务的业务。
    • **松耦合:**无论是在开发阶段或部署阶段都是独立的,富有单一职责原则之称,从而保障高可用。
    • **模块化:**它将一个整体应用程序分解成一系列服务,每个模块都有它相应的职责,提高了维护与扩展性。在分工方面也有一定好处,可由小团队单独开发。

    3、什么是SpringCloud

    Spring cloud 很明显是Spring家族的又一神创产物,它是用于开发微服务应用的一系列组件的集合。Spring cloud 应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序, 提供与外部系统的集成。Spring cloud 与Spring Boot不是走我行我素之风,而是相辅相成的关系。Spring cloud Task, 一个生命周期短暂的微服务框架, 用于快速构建执行有限数据处理的应用程序。

    4、使用SpringCloud的优点

    使用 Spring Boot 开发分布式微服务时, 我们面临以下问题:

    1、与分布式系统相关的复杂性:这种开销包括网络问题、延迟开销、带宽问题、安全问题。

    2、服务发现**:**服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录, 在该目录中注册服务, 然后能够查找并连接到该目录中的服务。

    3、**冗余:**分布式系统中的冗余问题。

    4、负载平衡:负载平衡改善跨多个计算资源的工作负荷, 诸如计算机, 计算机集群, 网络链路, 中央处理单元, 或磁盘驱动器的分布。

    5、**性能问题:**由于各种运营开销导致的性能问题。

    6、**部署复杂性:**Devops 技能的要求。

    5、服务注册和发现是什么意思?Spring Cloud 如何实现?

    当我们开始一个项目时, 我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署, 添加和修改这些属性变得更加复杂。有些服务可能会下降, 而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找, 因此无需处理服务地点的任何更改和处理。

    二、SpringCloud项目搭建

    (一)创建项目

    1、选择File -> new -> Project

    2、选择Maven,点击Next

    3、输入GroupId、ArtifactId,点击Next

    4、选择项目存放路径,点击Finish完成项目创建

    注意项目名称跟3的ArtifactId带过来有点不一样,可以自己加上“-”就一样了

    图4-1

    图4-2

    注:这是我之前创建的项目,这里只是帮你过一下。

    5、pom.xml引依赖,注意idea右下角可能import下

    
    
        4.0.0
    
        com.ceam
        test-cloud
        pom
        1.0-SNAPSHOT
    
        
        
            1.0-SNAPSHOT
            UTF-8
            UTF-8
            1.8
            2.3.2.RELEASE
            Hoxton.SR7
            2.2.2
        
    
        
        
            
    
                
                
                    org.springframework.cloud
                    spring-cloud-dependencies
                    ${spring-cloud.version}
                    pom
                    import
                
    
                
                    de.codecentric
                    spring-boot-admin-dependencies
                    ${spring-boot-admin.version}
                    pom
                    import
                
    
    
                
                
                    org.springframework.boot
                    spring-boot-dependencies
                    ${spring-boot.version}
                    pom
                    import
                
            
        
    
    
        
            
                org.projectlombok
                lombok
                provided
            
        
    
        
            
                
                    org.apache.maven.plugins
                    maven-compiler-plugin
                    3.8.1
                    
                        ${java.version}
                        ${java.version}
                        ${project.build.sourceEncoding}
                    
                
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    ${spring-boot.version}
                    
                        ${project.build.finalName}
                    
                
            
        
    
    
    
    
    • 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
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    注意:报红的话,可能是你maven没有配置好,可在控制台执行mvn -v命令确认下

    又或者你在idea没有设置好,选择idea左上角的File -> setting来到下面窗口,输入maven搜索

    (二)创建注册中心模块

    6、创建SpringCloud注册中心Eureka模块

    6.1、右击项目test-cloud -> New -> Module,为项目创建模块,模块化

    注意:必须删除test-cloud下的src文件夹,再创建模块

    6.2、选择Maven,点击Next

    6.3、输入子模块ArtifactId

    6.4、模块名称,点击Finish完成创建,图6.4-2即注册中心eureka模块

    图6.4-1

    图6.4-2

    7、在ceam-eureka下的pom.xml引入子模块Eureka依赖

    
    
        
            test-cloud
            com.ceam
            1.0-SNAPSHOT
        
        4.0.0
    
        ceam-eureka
    
        
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-server
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    
                        true 
                    
                    
                        
                            
                                repackage
                            
                        
                    
                
            
        
    
    
    
    
    • 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

    8、在子模块下创建SpringCloud注册中心启动类EurekaApp

    代码如下:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    /**
     * @Description:
     * @Author: CeaM
     * @Date: 2020/10/2 9:34
     */
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaApp {
        public static void main(String[] args) {
            SpringApplication.run(EurekaApp.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    9、编写SpringCloud注册中心配置文件

    9.1、application.yml用于指定系统环境等等

    spring:
      profiles:
        active: dev 
    
    • 1
    • 2
    • 3

    9.2、application-dev.yml开发环境,prod生产环境

    server: 
      port: 7001 # 端口号,访问的时候用到
     
    eureka: 
      instance:
        hostname: eureka7001.com #eureka服务端的实例名称
      client: 
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #单机 
          #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       
          #defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    10、启动注册中心EurekaApp

    10.1、点击绿色的选择Run EurekaApp,如下启动成功

    10.2、本地访问http://localhost:7001/

    如下就是成功了

    (三)创建微服务模块

    11、创建微服务模块

    11.1、创建模块跟上面一样,读者自行回顾,把ceam-service下的src文件夹删除掉

    11.2、创建ceam-auth权限微服务,同样可安装上面说的创建即可,然后为其pom.xml引依赖

    
    
        
            ceam-service
            com.ceam
            1.0-SNAPSHOT
        
        4.0.0
    
        ceam-auth
    
        
    
            
            
                org.springframework.cloud
                spring-cloud-starter-config
            
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
            
                org.springframework.boot
                spring-boot-starter-actuator
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-hystrix
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-zuul
            
            
                org.springframework.cloud
                spring-cloud-starter-openfeign
            
            
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
                org.springframework.boot
                spring-boot-configuration-processor
                true
            
    
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    
                        true 
                    
                    
                        
                            
                                repackage
                            
                        
                    
                
            
        
    
    
    
    
    • 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
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    11.3、创建权限微服务启动类AuthApp

    代码如下:

    package com.ceam.auth;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    /**
     * @Description:
     * @Author: CeaM
     * @Date: 2020/10/2 9:45
     */
    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
    @EnableEurekaClient
    public class AuthApp {
        public static void main(String[] args) {
            SpringApplication.run(AuthApp.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    11.4、配置微服务,并将其注册到注册中心

    1)选择左上角File -> New -> File,创建application.yml文件

    2)配置内容如下:

    server:
      port: 8005 # 端口号
    # 日志配置
    logging:
      level:
        com.ruoyi: debug
        org.springframework: warn
    spring:
      application:
        name: ceam-auth
       # 资源信息
      messages:
        # 国际化资源文件路径
        basename: i18n/messages
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
      cloud:
        config:
          fail-fast: true
          name: ${spring.application.name}
          profile: ${spring.profiles.active}
          discovery:
            enabled: true
            service-id: ruoyi-config
      profiles:
        active: dev
      main:
        allow-bean-definition-overriding: true
    
    feign:
      hystrix:
        enabled: true
    
    eureka:
      client: #客户端注册进eureka服务列表内
        service-url:
           defaultZone: http://localhost:7001/eureka
           #defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
      instance:
        instance-id: ${spring.application.name}:${server.port}
        prefer-ip-address: true     #访问路径可以显示IP地址
    
    • 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

    11.5、启动AuthApp权限微服务

    如下面这样微服务就是注册到注册中心了

    如果对你有帮助来个三联吧

    SpringCloud Alibaba系列:

    SpringCloud Alibaba微服务第1章

    SpringCloud Alibaba微服务第2章之Nacos

    SpringCloud Alibaba微服务第3章之Nacos

    SpringCloud Alibaba微服务第4章之Nacos

    SpringCloud Alibaba微服务第5章之Gateway

    SpringCloud Alibaba微服务第6章之Gateway

    Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

    Spring Cloud Alibaba微服务第8章之OpenFeign

    Spring Cloud Alibaba微服务第9章之MyBatis-plus

    Spring Cloud Alibaba微服务第10章之MyBatis-plus

    Spring Cloud Alibaba微服务第11章之MyBatis-plus

    Spring Cloud Alibaba微服务第13章之分库分表

    Spring Cloud Alibaba微服务第14章之分库分表

    Spring Cloud Alibaba微服务第15章之服务容错

    Spring Cloud Alibaba微服务第16章之服务容错

    Spring Cloud Alibaba微服务第17章之消息服务

    Spring Cloud Alibaba微服务第18章之消息服务

  • 相关阅读:
    基本分段存储管理方式
    MySQL开发环境
    redis学习(008 实战:黑马点评:缓存介绍)
    Volatile型变量
    Linux性能优化--性能工具-系统CPU
    Java 网络编程之TCP(二):基于BIO的聊天室
    时序电路的Verilog设计——基本时序元件
    现阶段的主流数据库分别是哪几种?
    五步走,轻松拥有你的个性化小程序
    有关海盗王版本的那些说明
  • 原文地址:https://blog.csdn.net/iijik55/article/details/126041617