栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Cloud - Eureka服务注册与发现(入门)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Cloud - Eureka服务注册与发现(入门)

目录

1.Eureka简介

2.Eureka⼊⻔案例(IDEA ,jdk11)

2.1 EurekaServer (服务注册中心)

2.1.1 pom文件内容

2.1.2 启动器(加入注解@EnableEurekaServer )

2.1.3 配置文件

2.1.4 启动并测试

2.2  cloud_payment(支付工程:服务提供者)

2.2.1 pom文件内容

2.2.2 启动器(加入注解@EnableDiscoveryClient )

2.2.3 配置文件

2.2.4 启动并测试

2.2.5 配置支付项目

2.3  cloud_order (订单⼯程 :服务消费者) 

2.3.1 pom文件内容

2.3.2 配置文件

2.3.3 启动器(加入注解@EnableDiscoveryClient )

RestTemplate

2.3.4 启动并测试

2.3.5 配置订单工程

3. 测试

3.1 测试工具 Postman

3.2 测试

访问   http://localhost:9000/payment/123  证明支付工程配置正确

访问  http://localhost:9001/order/payment/123   结果如下图,证明订单工程成功调用了支付工程配置正确

​ 4. Eureka Server集群(扩展)


1.Eureka简介   Eureka是⼀个⽤于服务注册和发现的组件,Eureka分为Eureka Server和Eureka Client,Eureka Server为Eureka服务注册中⼼,Eureka Client为Eureka客户端。   在分布式架构中,服务会注册到Eureka注册中⼼,当服务需要调⽤其它服务时,就从Eureka 找到服务的地址,进⾏调⽤。Eureka在Spring Cloud中的作⽤是⽤来作为服务治理实现服务注册和发 现。   Eureka主要涉及到三⼤⻆⾊:服务提供者、服务消费者、注册中⼼。   服务注册是指,各个微服务在启动时,将⾃⼰的⽹络地址等信息注册到Eureka,服务提供者将⾃⼰的服务信息,如服务名、IP等告知服务注册中⼼。   服务发现是指当⼀个服务消费者需要调⽤另外⼀个服务时,服务消费者从Eureka查询服务提供者的地址,并通过该地址调⽤服务提供者的接⼝。⼀个服务既可以是服务消费者,也可以是服务发现者。

  各个微服务与注册中⼼使⽤⼀定机制(例如⼼跳)通信。如果Eureka与某微服务⻓时间⽆法通信,Eureka会将该服务实例从服务注册中⼼中剔除,如果剔除掉这个服务实例过了⼀段时间,此服务恢复⼼ 跳,那么服务注册中⼼将该实例重新纳⼊到服务列表中,Eureka架构图,如图下图所示。

2.Eureka⼊⻔案例(IDEA ,jdk11)   本节介绍Eureka的基本使⽤,创建Eureka Server,让后将上⾯⽀付微服务,和订单微服务注册到 Eureka Server中。Eureka基本机构主要包括以下3个⻆⾊。 ● Eureka Server:服务注册中⼼,提供服务注册和发现功能。 ● Provider Service:服务提供者,案例中就是⽀付微服务。 ● Consumer Service:服务消费者,案例中就是订单微服务。

2.1 EurekaServer (服务注册中心)

首先准备一个空项目 File -> New -> Project..

选择自己的JDK版本

 创建 EurekaServer

File -> new -> Module

next->选择依赖 选择下⾯依赖,如下图所示。 (注意Spring Boot版本) ● Spring Boot 2.4.12 ● Spring Boot DevTools ● Lombok ● Eureka Server


2.1.1 pom文件内容


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.12
         
    
    com.csh
    Eureka-Bill
    0.0.1-SNAPSHOT
    Eureka-Bill
    Demo project for Spring Boot
    
        11
        2020.0.4
    
    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        


    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    


2.1.2 启动器(加入注解@EnableEurekaServer ) 注:@EnableEurekaServer,声明当前应⽤为Eureka Server
@SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main( String [] args) { SpringApplication.run(EurekaApplication. class , args); } }

2.1.3 配置文件

server:
  port: 9004
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url:
    # eureka 服务地址,如果是集群的话;需要指定其它集群eureka地址
      defaultZone: http://127.0.0.1:9004/eureka/
    # 不注册⾃⼰
    register-with-eureka: false 
    # 不拉取服务
    fetch-registry: false

2.1.4 启动并测试

启动应⽤访问http://localhost:9004/,效果如下图所示。

2.2  cloud_payment(支付工程:服务提供者)

选择下⾯依赖,如下图所示。 (注意Spring Boot版本)

● Spring Boot 2.4.12

● Spring Boot DevTools

● Lombok

2.2.1 pom文件内容


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.12
         
    
    com.example
    cloud_payment
    0.0.1-SNAPSHOT
    cloud_payment
    Demo project for Spring Boot
    
        2020.0.3
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    


2.2.2 启动器(加入注解@EnableDiscoveryClient )
@SpringBootApplication
@EnableDiscoveryClient
public class BillApplication {
    public static void main(String[] args) {
        SpringApplication.run(BillApplication.class, args);
    }
}

2.2.3 配置文件

 

server:
  port: 9000
spring:
    application:
      name: cloud-payment
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9004/eureka/
      register-with-eureka: true
      fetch-registry: true

2.2.4 启动并测试

首先启动服务注册中心,然后再启动支付工程访问http://localhost:9004/,效果如下图所示。有红色底线标识证明我们配置成功

2.2.5 配置支付项目

controller

@RestController
@RequestMapping("/payment")
public class PaymentController {
    @GetMapping("/{id}")
    public ResponseEntity payment(@PathVariable("id") Integer id) {
        Payment payment = new Payment(id, "⽀付成功");
        return ResponseEntity.ok(payment);
    }
}

entity

@Data//@Data 生成getter,setter ,toString等函数
@NoArgsConstructor//@NoArgsConstructor 生成无参构造函数
@AllArgsConstructor//@AllArgsConstructor 生成全参数构造函数
public class Payment {
    
    private Integer id;
    
    private String message;
}

2.3  cloud_order (订单⼯程 :服务消费者) 

根据2.1 与 2.2 order 工程如下

2.3.1 pom文件内容


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.12
         
    
    com.example
    cloud_order
    0.0.1-SNAPSHOT
    cloud_payment
    Demo project for Spring Boot
    
        2020.0.3
        11
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    

2.3.2 配置文件

server:
  port: 9001
spring:
  application:
    name: cloud-order
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9004/eureka/
      register-with-eureka: true
      fetch-registry: true

2.3.3 启动器(加入注解@EnableDiscoveryClient )

RestTemplate

  Spring提供了⼀个RestTemplate模板⼯具类,对基于Http的客户端进⾏了封装,并且实现了对象与json 的序列化和反序列化,⾮常⽅便。RestTemplate并没有限定Http的客户端类型,⽽是进⾏了抽象,⽬前

常⽤的3种都有⽀持:

HttpClient OkHttp JDK原⽣的URLConnection(默认的)
@SpringBootApplication
@EnableDiscoveryClient
public class CloudOrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(CloudOrderApplication.class, args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

2.3.4 启动并测试

访问http://localhost:9004/,效果如下图所示。有红色底线标识证明我们配置成功

2.3.5 配置订单工程

controller

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/payment/{id}")
    public ResponseEntity getPaymentById(@PathVariable("id") Integer id) {
        String url = "http://localhost:9000/payment/" + id;
        Payment payment = restTemplate.getForObject(url, Payment.class);
        return ResponseEntity.ok(payment);
    }
}

 entity

@Data//@Data 生成getter,setter ,toString等函数
@NoArgsConstructor//@NoArgsConstructor 生成无参构造函数
@AllArgsConstructor//@AllArgsConstructor 生成全参数构造函数
public class Payment {
    
    private Integer id;
    
    private String message;
}

3. 测试

3.1 测试工具 Postman

下载以及使用说明(点击访问)

3.2 测试

访问   http://localhost:9000/payment/123  证明支付工程配置正确

访问  http://localhost:9001/order/payment/123   结果如下图,证明订单工程成功调用了支付工程配置正确

4. Eureka Server集群(扩展)

 Eureka Server集群讲解(点击访问)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号