eureka入门

入门Eureka

  • 注意版本问题哈
  • 注意版本问题哈
  • 注意版本问题哈
  • 重要的事情说三遍!!!!!!!!!!!!

1、创建一个maven项目

2、导入依赖

  • 【spring-cloud】--------------------------------------------------------spring-cloud
  • 【spring-boot、spring-boot启动器】----------------------------spring-boot
  • 【mysql、mybatis、durid数据库连接池】---------------------数据库
  • 【lombok】-------------------------------------------------------------------lombok
  • 【log4j、logback-core】---------------------------------------------日志
    <dependencyManagement>
        <dependencies>
<!--            spring-cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--            springboot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
<!--            mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.29</version>
            </dependency>
<!--            德鲁伊数据池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.18</version>
            </dependency>
<!--            springboot启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.3.1</version>
            </dependency>
<!--            测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
<!--            lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.30</version>
            </dependency>
<!--            日志-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • 使用dependencyManagement后,子项目就可以直接从父项目中导入依赖,而不是从mvn仓库或者本地仓库去下载了

3、创建数据库

  • 创建一个数据库cloud01
  • 创建一张表
create table student
(
    sno    bigint auto_increment,
    sname     varchar(60) null,
    db_source varchar(60) null,
    constraint student_pk
    primary key (sno)
)
  • 插入字段
insert into student(sname,db_source) values('张三',DATABASE());
insert into student(sname,db_source) values('李四',DATABASE());
insert into student(sname,db_source) values('王五',DATABASE());
insert into student(sname,db_source) values('赵六',DATABASE());
insert into student(sname,db_source) values('周七',DATABASE());

4、创建子项目api

  • 命名为springcloud-api【提供实体类】

  • 导入依赖

  • 这里就可以从父项目中导入自己需要的依赖了

  • <!--    从父依赖中导入-->
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    
  • 创建包

  • 在这里插入图片描述

  • 导入java代码

  • @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Student {
    
        private Long sno;
        private String name;
        private String db_source;
    }
    

5、创建子项目provider

  • 导入依赖
<!--   api、druid、 mysql,mybtis,mybatis-spring-boot -->
    <dependencies>
        <dependency>
            <groupId>com.packet</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!--        test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        jetty-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <!--        热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>

        </dependency>
  • 创建包mapper、service、controller

  • 编写简单的配置、并连接数据库

  • 写一个查询语句

  • select * from student
    

6、创建子项目eureka

  • 导入依赖

  • eureka服务端依赖

  • <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    
  • 编写配置文件

  • #eureka配置
    eureka:
      instance: # 服务端
        hostname: localhost
      client:
        register-with-eureka: false # 是否向注册中心注册自己
        fetch-registry: false # 表示自己是否为注册中心 ,false表示自己为注册中心
        service-url:
          defaultZone : http://${eureka.instance.hostname}:${server.port}/eureka/
    server:
      port: 7001
    
  • 开启注解

    • 在启动类上加@EnableEurekaServer
  • 在要注册服务中导包

    • <!--        eureka-->
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-eureka</artifactId>
                  <version>1.4.6.RELEASE</version>
              </dependency>
              <!--完善监控信息-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-actuator</artifactId>
              </dependency>
      
  • 在要注册的服务中添加注册地址

  • eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka/
    
  • 在需要被注册的服务的启动类上添加注解@EnableEurekaClient

总结:

给服务中心导包------>编写配置----->@EnableEurekaServer

给服务导包------>编写配置----->@EnableEurekaClient

Eureka集群

1、为什么Eureka集群?

  • 如果其中的一个注册中心崩了,怎么办,是不是所有的注册的服务都不会被发现了,也没有办法使用了
  • 我们将所有的eureka,关联起来,注册的时候也全部注册进去,这样一个出事,其他的还有用就行

2、如何集群

步骤一:复制eureka

  • 复制一个一模一样的eureka,改个端口号

  • 将其中的级联地址修改了

    • eureka-7001

    • #eureka配置
      eureka:
        instance: # 服务端
          hostname: localhost
        client:
          register-with-eureka: false # 是否向注册中心注册自己
          fetch-registry: false # 表示自己是否为注册中心 ,false表示自己为注册中心
      #    当是本机的时候,就是http://localhost:8080/eureka/
      #    联机的时候就是别人的地址
          service-url:
            defaultZone : http://127.0.0.1:7002/eureka/
      server:
        port: 7001
      
    • eureka-7002

    • server:
        port: 7002
      
      eureka:
        instance:
          hostname: 127.0.0.1
        client:
          fetch-registry: false
          register-with-eureka: false
          service-url:
            defaultZone: http://localhost:7001/eureka/
      
  • 两者端口号不一样

  • eureak.instance.hostname不一样

  • service-url.defaultZone不一样

    • 分别管理的是第一个与第二个

步骤二:服务注册进去

将其中的服务两个都注册进去

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/

这样就可以了

Eureka获取注册中心服务的信息

前面我们只将信息注册到Eureka中,但是没有从Eureka中获取操作

大体步骤

  • 创建一个消费者consumer的模块
  • 从注册中心取得provider提供的服务
  • 使用

详细步骤

1、创建一个消费者consumer的模块

2、导入依赖

  • 【eureka】【】【web】

  •         <!--        eureka-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>1.4.6.RELEASE</version>
            </dependency>
            <!--        实体类-->
            <dependency>
                <groupId>com.packet</groupId>
                <artifactId>spring-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    <!--        web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    

3、编写配置

  • # 端口
    server:
      port: 80
    
    eureka:
      client:
        register-with-eureka: false # 不想eureka中注册自己
        service-url: # 取服务的地址
          defaultZone: http://localhost:7001/eureka/,http://127.0.0.1:7002/eureka/
    

4、配置RestTemplate

  • 创建包config

  • 创建一个RestConfig

    • @Configuration
      public class RestConfig {
      
      
          @Bean
          public RestTemplate restTemplate(){
              return new RestTemplate();
          }
      }
      

5、创建包controller

  • 创建一个StudentController

    • @RestController
      public class StudentController {
      
          //地址前缀
          private static final String REST_URL_PREFIX= "http://spring-cloud-provider";
      
          @Autowired
          RestTemplate restTemplate;
      
          @RequestMapping("/stAll")
          public String getAllStudent() {
              List<Student> students = restTemplate.getForObject(REST_URL_PREFIX + "/stALl",List.class);
              for (Student student : students) {
                  System.out.println(student);
              }
              return "ok";
          }
      }
      
    • 通过RestTemplate 获取服务中的Controller的内容

6、添加注解@EnableEurekaClient ,开启服务

Eureka的其他配置

在这里插入图片描述

  • application显示UNKNOWN

    • 修改方式:spring.application.name属性

      • spring:
          application:
            name: springcloud-provider
        
  • status:

    • up表示服务有用

    • 后面的描述修改

      • instance.instance-id

        • #修改eureka默认描述信息
           instance:
            instance-id: springcloud-provider-8001
          

修改后的样式:

6、添加注解@EnableEurekaClient ,开启服务

Eureka的其他配置

[外链图片转存中…(img-kHD76b4v-1701085802286)]

  • application显示UNKNOWN

    • 修改方式:spring.application.name属性

      • spring:
          application:
            name: springcloud-provider
        
  • status:

    • up表示服务有用

    • 后面的描述修改

      • instance.instance-id

        • #修改eureka默认描述信息
           instance:
            instance-id: springcloud-provider-8001
          

修改后的样式:

在这里插入图片描述

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值