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

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

配置文件:

 spring.application.name= eureka-server
server.port=1001 eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
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); }
}

  配置文件

 spring.application.name=eureka-consumer
server.port=2101 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/

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


【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. React:Component

    web开发由web pages过渡到web app 后,开发的模式也发生了变化,由传统的主张结构.样式.行为分离到现在的组件化,把应用的各个部分看成解耦的部分,每部分自包含js.css和html,以方 ...

  2. C# 数据操作系列 - 12 NHibernate的增删改查

    0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前 ...

  3. Django之web框架和url路由

    一.web框架 1.什么是web框架 Web框架是用来进行Web应用开发的一个软件架构,开发者在基于Web框架实现自己的业务逻辑.Web应用本质上就是一个socket服务端,而用户的浏览器就是一个so ...

  4. 201771010128 王玉兰《面象对象程序设计 (Java) 》第六周学习总结

    ---恢复内容开始--- 第一部分:基础知识总结: 1.继承 A:用已有类来构建新类的一种机制,当定义了一个新类继承一个类时,这个新类就继承了这个类的方法和域以适应新的情况: B:特点:具有层次结构. ...

  5. mac OS和win7笔记本实现文件共享

    记录下macbook通过共享读取win7笔记本中文件的过程,条件是两台电脑处于同一无线网中 win7操作 点击网络图标--属性--更改高级共享设置 选择公用后选择以下选项:启动网络发现--启动文件和打 ...

  6. Identity Card(hdu2629)

    输入方式:先输入一个整型,再输入不带空格未知长度/已知长度的字符串. 思考:用scanf_s()函数输入整型,再循环输入不带空格未知长度的字符串,用gets_s()函数. 注意:scanf_s()函数 ...

  7. Excel中遇到的一些问题——持续更新

    Q1:excel2007表格里的数字在表格关闭后再打开经常会变成日期格式,怎么解决? A1: 1)打开Excel,选中任意单元格,单击鼠标右键,选择设置单元格格式2)在数字自定义类型中,找到类似[$- ...

  8. NodeJS——大汇总(一)(只需要使用这些东西,就能处理80%以上业务需求,全网最全node解决方案,吐血整理)

    一.前言 本文目标 本文是博主总结了之前的自己在做的很多个项目的一些知识点,当然我在这里不会过多的讲解业务的流程,而是建立一个小demon,旨在帮助大家去更加高效 更加便捷的生成自己的node后台接口 ...

  9. volatile关键字与内存可见性&原子变量与CAS算法

    1 .volatile 关键字:当多个线程进行操作共享数据时, 可以保证内存中的数据可见 2 .原子变量:jdk1.5后java.util.concurrent.atomic 包下提供常用的原子变量 ...

  10. 线程的同步机制:同步代码块&同步方法

    解决存在的线程安全问题:打印车票时出现重票,错票 使用同步代码块的解决方案 TestWindow2 package com.aff.thread; /* 使用实现Runnable接口的方式,售票 存在 ...