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

  1. /**
  2. * @EnableDiscoveryClient 激活Eureka 中DiscoveryClient实现,这样才能
  3. * 在Controller中 输出服务
  4. */
  5. @EnableDiscoveryClient
  6. @SpringBootApplication
  7. public class EurekaClientApplication {
  8.  
  9. public static void main(String[] args) {
  10. SpringApplication.run(EurekaClientApplication.class, args);
  11. }
  12. }
  13.  
  14. /**
  15. * @RestController 等同于 @Controller && @ResponseBody
  16. */
  17. @RestController
  18. public class HelloDiscoveryClient {
  19.  
  20. @Autowired
  21. DiscoveryClient discoveryClient;
  22.  
  23. @GetMapping("/hi")
  24. public String sayHello(){
  25. String services = "Applications: " + discoveryClient.getServices();
  26. System.out.println(services);
  27. return services;
  28. }
  29.  
  30. }

  配置文件

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

eureka_consumer

  1. @EnableDiscoveryClient
  2. @SpringBootApplication
  3. public class EurekaConsumerApplication {
  4.  
  5. @Bean
  6. public RestTemplate restTemplate(){
  7. return new RestTemplate();
  8. }
  9.  
  10. public static void main(String[] args) {
  11. SpringApplication.run(EurekaConsumerApplication.class, args);
  12. }
  13. }
  14.  
  15. @RestController
  16. public class HelloConsumerController {
  17.  
  18. /**
  19. * 注入 LoadBalancerClient ,它是Spring cloud 提供的 负载均衡 客户端
  20. */
  21.  
  22. @Autowired
  23. LoadBalancerClient loadBalancerClient;
  24.  
  25. @Autowired
  26. RestTemplate restTemplate;
  27.  
  28. /**
  29. * @GetMapping("/consumer")
  30. * @RequestMapping(value = "/consumer",method = RequestMethod.GET)
  31. * 这2种写法 是一个意思
  32. *
  33. * @return
  34. */
  35. @GetMapping("/consumer")
  36. //@RequestMapping(value = "/consumer",method = RequestMethod.GET)
  37. public String hi(){
  38. //获得服务的事例,通过loadBalancerClient的choose函数来负载均衡的选出一个eureka-client的服务实例
  39. ServiceInstance serviceInstance = loadBalancerClient.choose("euraka-client");
  40.  
  41. String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hi";
  42.  
  43. System.out.println(url);
  44. //这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/dc接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用
  45. return restTemplate.getForObject(url,String.class);
  46.  
  47. }
  48. }

  配置文件

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

最后希望,对您有帮助!

其中遇到的坑:

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

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

  1.  

【Spring Cloud 系列】 二、Spring Cloud Eureka 的第一印象的更多相关文章

  1. Spring Boot系列二 Spring @Async异步线程池用法总结

    1. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncT ...

  2. Spring Boot系列(二) Spring Boot 之 REST

    Rest (Representational Stat Transer) 是一种软件架构风格. 基础理论 架构特性 性能 可伸缩 简化的统一接口 按需修改 组件通信透明 可移植 可靠性 架构约束 C/ ...

  3. Spring Cloud系列教程第九篇-Eureka自我保护机制

    Spring Cloud系列教程第九篇-Eureka自我保护机制 本文主要内容: 1:自我保护介绍 2:导致原因分析 3:怎么禁止自我保护 本文是由凯哥(凯哥Java:kagejava)发布的< ...

  4. Spring Cloud(二):Eureka 服务注册中心

    前言 服务治理 随着业务的发展,微服务应用也随之增加,这些服务的管理和治理会越来越难,并且集群规模.服务位置.服务命名都会发生变化,手动维护的方式极易发生错误或是命名冲突等问题.而服务治理正是为了解决 ...

  5. Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)

    上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...

  6. Spring框架系列(2) - Spring简单例子引入Spring要点

    上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...

  7. Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计

    在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解.本文将帮助你站在设计者的角度去看IOC最顶层的结构设计.@pdai Spring框架系列(6) - Spring IOC实现原理详解 ...

  8. Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程

    上文,我们看了IOC设计要点和设计结构:紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的. ...

  9. Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现

    前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...

  10. Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建

    上文我们介绍了Spring AOP原理解析的切面实现过程(将切面类的所有切面方法根据使用的注解生成对应Advice,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor).本文在此基 ...

随机推荐

  1. Java Concurrent包初探

    同步容器: Vector/Hashtable:jdk1.0就已经存在,jdk1.2改写实现List/Map接口.作为ArrayList/HashMap在并发场景中的替代类出现.注意:Hashtable ...

  2. CSS3面试题

    1.隐藏网页中的元素有几种方式?这些方法有什么区别? 答案:三种方法. display:none;脱离文档流,不占页面空间,会改变页面布局. visivility:hidden;不会脱离文档流,不会改 ...

  3. day07:集合的使用0220

    list_1=set([4,5,6,7])list_2=set([4,8,9])list_3=set([4,5])list_4=set([6,7])a = (2,3)b = (2) #list_3是l ...

  4. 06.drf(django)的权限

    默认配置已经启用权限控制 settings 'django.contrib.auth', 默认 migrate 会给每个模型赋予4个权限,如果 ORM 类不托管给django管理,而是直接在数据库中建 ...

  5. 取经四人组SQL

    一.表结构与数据 1.create table user1 (id int not null,user_name varchar(20) not null,over varchar(20) defau ...

  6. jsp获取当前日期

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>  <jsp: ...

  7. Java——java.lang.NullPointerException

    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = ...

  8. 第7章 PCA与梯度上升法

    主成分分析法:主要作用是降维 疑似右侧比较好? 第三种降维方式: 问题:????? 方差:描述样本整体分布的疏密的指标,方差越大,样本之间越稀疏:越小,越密集 第一步: 总结: 问题:????怎样使其 ...

  9. 解决 appium 当中 uiautomator2 无法启动的问题

    在启动 appium 程序中,有时候会出现 uiautomator2 服务无法启动的错误,appium 的日志截图如下: image.png 错误信息: ActivityManager: Unable ...

  10. Java中的集合(十三) 实现Map接口的Hashtable

    Java中的集合(十三) 实现Map接口的Hashtable 一.Hashtable简介 和HashMap一样,Hashtable采用“拉链法”实现一个哈希表,它存储的内容是键值对(key-value ...