zoukankan      html  css  js  c++  java
  • 【Spring Cloud 系列】 二、Spring Cloud Eureka 的第一印象

    Eureka : 翻译翻译,找到了!(惊讶语气)

    Spring CLoud 中的 Spring Cloud Eureka,用于 分布式项目中的服务治理。是对Netflix 套件中的Eureka 的二次封装。

    Spring Cloud Eureka:注册服务,发现服务,治理服务,配置服务。

    下面我将展开我对Eureka 的学习过程,

    源码我放在了码云,这里大概是3个项目

    eureka_server 负责 注册服务

     eureka_client 负责暴露接口

    eureka_consumer 负责 负载均衡 对 Eureka Client 接口的调用,RestTemplate和LoadBalanceClient 来完成负载

    来讲一讲 基本用法,这也是这篇随笔的目的,这篇文章的篇幅不会太长,原文请结合大神的文章,前三篇

    根据 中的Eureka的入门Demo

    关系即: Eureka Server 负责注册 Eureka Client 、Eureka Consumer等 DiscoverClient
    Eureka Client 有若干台,而外部调用Eureka Client 的接口,
    由唯一入口Eureka Consumer来提供负载均衡,去调用 其中的一台Eureka Client中的接口

    你觉得,有必要,可以看看源码,里面备注很详细的,下面贴一点

    eureka_server 

     1 /**
     2  * @EnableEurekaServer 注解启动一个 服务的注册中心,
     3  * 默认情况下,注册服务中心 会把自己作为客户端 来 尝试注册自己,需要在application.properties中禁用
     4  * eureka.client.register-with-eureka=false
     5  * eureka.client.fetch-registry=false
     6  */
     7 @EnableEurekaServer
     8 @SpringBootApplication
     9 public class EurekaServerApplication {
    10 //..
    11     
    12 }

    配置文件:

    1 spring.application.name= eureka-server
    2 server.port=1001
    3 
    4 eureka.instance.hostname=localhost
    5 eureka.client.register-with-eureka=false
    6 eureka.client.fetch-registry=false

    eureka_client

    /**
     *  @EnableDiscoveryClient  激活Eureka 中DiscoveryClient实现,这样才能
     *  在Controller中 输出服务
     */
    @EnableDiscoveryClient
    @SpringBootApplication
    public class EurekaClientApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(EurekaClientApplication.class, args);
    	}
    }
    
    
    
    
    /**
     *   @RestController  等同于 @Controller && @ResponseBody
     */
    @RestController
    public class HelloDiscoveryClient {
    
        @Autowired
        DiscoveryClient discoveryClient;
    
        @GetMapping("/hi")
        public String sayHello(){
            String services = "Applications: " + discoveryClient.getServices();
            System.out.println(services);
            return  services;
        }
    
    
    }
    

      配置文件

    spring.application.name=euraka-client
    
    server.port=2001
    eureka.client.service-url.defaultZone=http://localhost:1001/eureka/

    eureka_consumer 

    @EnableDiscoveryClient
    @SpringBootApplication
    public class EurekaConsumerApplication {
    
    	@Bean
    	public RestTemplate restTemplate(){
    		return new RestTemplate();
    	}
    
    
    	public static void main(String[] args) {
    		SpringApplication.run(EurekaConsumerApplication.class, args);
    	}
    }
    
    
    
    
    @RestController
    public class HelloConsumerController {
    
        /**
         *  注入 LoadBalancerClient ,它是Spring cloud 提供的 负载均衡 客户端
         */
    
        @Autowired
        LoadBalancerClient loadBalancerClient;
    
        @Autowired
        RestTemplate restTemplate;
    
    
        /**
         *   @GetMapping("/consumer")
         *   @RequestMapping(value = "/consumer",method = RequestMethod.GET)
         *   这2种写法 是一个意思
         *
         * @return
         */
        @GetMapping("/consumer")
        //@RequestMapping(value = "/consumer",method = RequestMethod.GET)
        public String hi(){
            //获得服务的事例,通过loadBalancerClient的choose函数来负载均衡的选出一个eureka-client的服务实例
            ServiceInstance serviceInstance = loadBalancerClient.choose("euraka-client");
    
            String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hi";
    
            System.out.println(url);
            //这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/dc接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用
            return  restTemplate.getForObject(url,String.class);
    
        }
    }
    

      配置文件

    1 spring.application.name=eureka-consumer
    2 server.port=2101
    3 
    4 eureka.client.service-url.defaultZone=http://localhost:1001/eureka/

    最后希望,对您有帮助!

    其中遇到的坑:

    eureka.client.service-url.defaultZone=http://localhost:1001/eureka/

    这个配置文件 教程给出的是
    eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

    最为小白基本懵逼了,还好,自己摸索出来




     

  • 相关阅读:
    linux编程:删除文件夹下的空文件
    设置vim的显示颜色
    LVM的实现流程
    LVM(逻辑卷管理器)原理
    Ext2文件的访问与日志文件系统
    Linux系统的Ext2文件系统
    linux 磁盘分区的理解
    postgresql在Linux下的安装
    内存泄漏工具VLD
    关于 正交投影 与 透视投影
  • 原文地址:https://www.cnblogs.com/Profound/p/7458641.html
Copyright © 2011-2022 走看看