• SpringCloud入门学习


    Spring Cloud学习

    微服务架构介绍

    在这里插入图片描述

    微服务和普通服务对比

    在这里插入图片描述

    SpringCloud和Dubbo对比在这里插入图片描述

    SpringCloud 组件

    服务治理组件: Eureka、Consul、Nacos

    注册中心

    没有注册中心时:当服务提供者地址发生改变时,多个调用者发送请求调用服务时,发现服务地址发生了改变,导致调用失败,想要服务调用成功,则需要每个调用者重新配置服务提供者的最新地址,否则将无法调用成功!

    使用注册中心:当服务提供者地址发生改变时,新的地址会被重新注册到注册中心中,当多个调用者发送请求调用服务时,只需要到注册中心中获取到最新地址,然后调用服务即可,不需要调用者手动去修改配置!

    在这里插入图片描述

    项目搭建过程

    在这里插入图片描述

    创建Eureka项目

    eureka父工程搭建

    
    <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.0modelVersion>
    
        <groupId>cn.molu.eurekagroupId>
        <artifactId>SpringCloud-EurekaartifactId>
        <version>1.0-SNAPSHOTversion>
        <packaging>pompackaging>
    
        
        <modules>
            <module>eureka-providermodule>
            <module>eureka-consumermodule>
            <module>eureka-servermodule>
        modules>
    
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.1.0.RELEASEversion>
            <relativePath/>
        parent>
    
        <properties>
            <project.build.soureEncoding>UTF-8project.build.soureEncoding>
            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
            <java.version>1.8java.version>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
            <spring-cloud.version>Greenwich.RELEASEspring-cloud.version>
        properties>
    
        
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloudgroupId>
                    <artifactId>spring-cloud-dependenciesartifactId>
                    <version>${spring-cloud.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
            dependencies>
        dependencyManagement>
    project>
    
    
    • 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

    创建Eureka服务

    步骤:
    在这里插入图片描述
    eureka-server依赖

    <dependencies>
       <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    eureka-server注册中心配置文件

    # eureka的注册中心端口
    server.port=8761
    
    # eureka 配置
    # 1.dashboard:eureka的web控制台配置
    # 2.server:eureka的服务端配置
    # 3.client:eureka的客户端配置
    # 4.instance:eureka的实例配置
    # eureka-server:eureka服务,不需要注册,不需要抓取路径
    # eureka-client-provider:eureka-client的服务端,需要注册到eureka,不需要抓取路径
    # eureka-client-consumer:eureka-client的客户端,不需要注册,需要主动抓取路径
    
    # 主机
    eureka.instance.hostname=127.0.0.1
    # eureka服务端地址 调用访问地址
    eureka.client.service-url.defaultZone=ttp://${eureka.instance.hostname}:${server.port}/eureka/
    # 是否将自己的路径注册到eureka,默认true,注册中心不需要把自己注册到eureka,eureka-client的服务端才需要
    eureka.client.register-with-eureka=false
    # 是否从(eureka)注册中心中抓取路径,默认true,注册中心不需要从自身再抓取路径
    eureka.client.fetch-registry=false
    # 开启eureka的web控制台(默认为true)
    eureka.dashboard.enabled=true
    # eureka的web控制台访问路径(默认为 / )
    eureka.dashboard.path=/
    
    
    • 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

    创建eureka-client服务端

    eureka-provider服务端

        <parent>
            <groupId>cn.molu.eurekagroupId>
            <artifactId>SpringCloud-EurekaartifactId>
            <version>1.0-SNAPSHOTversion>
        parent>
    
        <groupId>cn.molugroupId>
        <artifactId>eureka-providerartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>eureka-providername>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            
    		
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
            dependency>
    
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
            dependency>
        dependencies>
    
    • 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

    eureka-provider服务端配置文件

    # eureka-client服务端口号
    server.port=8000
    # 当前应用的名称
    spring.application.name=eureka-provider
    
    # 主机
    eureka.instance.hostname=127.0.0.1
    # eureka服务端地址 调用访问地址
    eureka.client.service-url.defaultZone=ttp://127.0.0.1:8761/eureka/
    # 是否将自己的路径注册到eureka,当前是eureka-client服务需要注册,默认true,可以不用配置
    eureka.client.register-with-eureka=true
    # 是否从注册中心中抓取路径,当前服务既是调用方又是被调用方,所以需要,默认true,可以不用配置
    eureka.client.fetch-registry=true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    eureka-provider中的controller中提供的接口可以被远程调用

        @GetMapping("findById/{id}")
        public Goods findById(@PathVariable("id") Long id){
            return goodsService.findById(id);
        }
    
    • 1
    • 2
    • 3
    • 4

    在eureka-client服务端的启动类中添加@EnableEurekaClient注解

    // 启用eureka客户端
    @EnableEurekaClient
    @SpringBootApplication
    public class EurekaProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaProviderApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    创建eureka-client客户端

    eureka-consumer客户端

        <parent>
            <groupId>cn.molu.eurekagroupId>
            <artifactId>SpringCloud-EurekaartifactId>
            <version>1.0-SNAPSHOTversion>
        parent>
    
        <groupId>cn.molugroupId>
        <artifactId>eureka-consumerartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>eureka-consumername>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            
    		
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    eureka-consumer客户端配置文件

    # eureka-consumer客户端端口号
    server.port=9000
    # 当前应用的名称
    spring.application.name=eureka-consumer
    
    # 主机
    eureka.instance.hostname=127.0.0.1
    # eureka服务端地址 调用访问地址
    eureka.client.service-url.defaultZone=ttp://127.0.0.1:8761/eureka/
    # 是否将自己的路径注册到eureka,当前是eureka-client服务需要注册,默认true,可以不用配置
    eureka.client.register-with-eureka=true
    # 是否从注册中心中抓取路径,当前服务既是调用方又是被调用方,所以需要,默认true,可以不用配置
    eureka.client.fetch-registry=true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    eureka-consumer中配置RestTemplate
    客户端通过restTemplatecontroller中远程调用eureka-provider服务

    @Configuration
    public class RestTemplateConfig {
    
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    远程调用eureka-provider服务

        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("findById/{id}")
        public Map<String, Object> findById(@PathVariable("id") Long id){
        	String providerUrl="http://127.0.0.1:8000/goods/findById/1";
            Map map = restTemplate.getForObject(providerUrl, Map.class);
            System.out.println("map = " + map);
            return map;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在eureka-client客户端的启动类中添加@EnableEurekaClient注解

    @EnableEurekaClient
    @SpringBootApplication
    public class EurekaConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaConsumerApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    JMM内存模型 / JVM 内存区域
    Win11如何删除升级包?Win11删除升级包的方法
    R语言比较两个样本的均值是否相同:使用t.test函数执行t检验通过比较来自两个总体的样本数据判断总体均值是否相同
    OpenGL原理与实践——核心模式(五):颜色、基础光照、Phong模型、材质与光
    软件测试个人求职简历该怎么写,模板在这里
    收藏|多指标时序预测方式及时序特征工程总结
    【JavaSE】抽象类和接口
    基于el-table-infinite-scroll实现表格数据无限加载的功能
    Apache Druid 数据摄取---本地数据和kafka流式数据
    前端学习——Vue组合式API
  • 原文地址:https://blog.csdn.net/qq_51076413/article/details/126315164