现来说一些Eureka的概念:

1、服务注册 Register

就是Client向Server注册的时候提供自身元数据,比如IP和Port等信息。

2、服务续约 Renew

Client默认每隔30s发送一次心跳来服务续约,如果90s没有收到Client的心跳包,Server会将Client从注册列表中移除。

3、获取服务注册信息 Fetch Register

Eureka Client会从Eureka Server获取服务注册表信息,并将其缓存在本地。默认每30s更新一次。

4、下线 Cancel

Eureka Client在程序关闭的时候可以向Eureka Server发送下线请求立即移除注册表信息,需要手动调用代码:

5、LoadBalancer缓存

Ribbon在客户端维护了缓存定时刷新,避免每个请求都从Server获取注册信息,所以新注册的Provider可能会出现延迟。

DiscoveryManager.getInstance().shutdownComponent();

搭建Eureka Server

配置文件:

server:
port: 9001
eureka:
instance:
hostname: localhost
prefer-ip-address: true
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:9001/eureka/

启动类加注解@EnableEurekaServer:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication { public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}

访问:http://localhost:9001/

Eureka服务注册

配置文件:

server:
port: 9006
spring:
application:
name: hi-service
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/

启动类加注解@EnableEurekaClient:

@SpringBootApplication
@EnableEurekaClient
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

Eureka服务发现

配置文件:

server:
port: 9008
spring:
application:
name: eureka-consumer
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/

启动类加注解@EnableEurekaClient:

@SpringBootApplication
@EnableEurekaClient
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

Service层访问:

@Service
public class RibbonService {
@Autowired
RestTemplate restTemplate; public String hi() {
return restTemplate.getForObject("http://hi-service/hi", String.class);
}
}

可以看到,url已经使用application name去代替了ip+port的信息去请求服务。如果Eureka Service provider在配置文件中没有配置serviceId,则默认为配置文件中的服务名,也就是${spring.application.name}。

创建Eureka Server服务集群

多profile格式配置文件application.yml

spring:
application:
name: discovery-cluster
---
spring:
profiles: discovery1
server:
port: 8761
eureka:
instance:
hostname: discovery1
client:
service-url:
default-zone: http://discovery2:8762/eureka ---
spring:
profiles: discovery2
server:
port: 8762
eureka:
instance:
hostname: discovery2
client:
service-url:
default-zone: http://discovery1:8761/eureka

配置文件是通过两个Eureka Server互相注册,这里有三段配置,第一段配置为公共配置,配置了应用名称,第二段为名discovery1的配置,第三段为discovery2的配置。在项目启动可以通过 
--spring.profiles.active={配置名称} 来启动不同的配置。

java -jar discovery-cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=discovery1 
java -jar discovery-cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=discovery2 

在client端,只需要把 eureka.client.serviceUrl.defaultZone 改成相应的集群地址即可,多个服务用逗号分隔:

eureka
client
serviceUrl
defaultZone = http://discovery1:8761/eureka,http://discovery2:8761/eureka

微服务深入浅出(3)-- 服务的注册和发现Eureka的更多相关文章

  1. 小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战

    笔记 5.服务注册和发现Eureka Server搭建实战     简介:使用IDEA搭建Eureka服务中心Server端并启动,项目基本骨架介绍          官方文档:http://clou ...

  2. SpringCloud-微服务的注册与发现Eureka(二)

    一.SpringCloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  3. Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】

    Spring Cloud(二):服务注册与发现 Eureka[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  上一篇主要介绍了相关理论,这一篇开始我们 ...

  4. SpringCloud-微服务的注册与发现Eureka

    一.SpringCloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  5. SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(转载)

    SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本) 转载请标明出处:http://blog.csdn.net/forezp/article/details ...

  6. spring cloud 学习之 服务注册和发现(Eureka)

    一:服务注册和发现(Eureka) 1:采用Eureka作为服务注册和发现组件 2:Eureka 项目中 主要在启动类加上 注解@EnableEurekaServer @SpringBootAppli ...

  7. 微服务注册与发现 —— eureka

    基础概念 在微服务系统中,服务的注册和发现是第一步,常用的有: Eureka:https://github.com/Netflix/eureka Zookeeper:https://zookeeper ...

  8. 微服务之服务注册与发现--Eureka(附代码)

    该贴为入门贴,看完可快速知道服务注册与发现是什么?怎么用?至于深入的内容不在此篇文章所述之内,请自行百度. 内容来自:https://blog.csdn.net/nanbiebao6522/artic ...

  9. spring cloud微服务快速教程之(二)服务注册与发现 eureka

    0.为什么需要eureka 当我们从当体系统拆分为多个独立服务项目之后,如果aaa.com/uer.aaa.com/order;:相互之间调用,如果只是一个服务一个实例,那还可以直接通过固定地址(如h ...

  10. springcloud~服务注册与发现Eureka的使用

    服务注册与发现是微服务里的概念,也是一个基本的组件,负责服务组件的认证,即实现『你是谁』的功能,在服务注册与发现里,存在两种模式,即服务端发现和客户端发现,咱们今天说的eureka属于客户端发现! 下 ...

随机推荐

  1. excel文件怎么使用php进行处理

    1.可以通过phpmyadmin导入csv文件 2.也可以直接使用php 处理已经将excel另存为.csv后缀的文件, 通过php专门处理csv文件的函数 如 fgetcsv() <?php ...

  2. Fastqc使用说明

    用FastQC检查二代测序原始数据的质量 2013-01-28 21:28:10|  分类: Bioinformatics |  标签:bioinformatics  deep-seq   |举报 | ...

  3. ZooKeeperACL机制

    官网:http://zookeeper.apache.org/doc/r3.4.6/zookeeperProgrammers.html#sc_ZooKeeperAccessControl 项目中不同的 ...

  4. 使用 Idea 打 scala程序的 jar 包 - 02

    Artifact ——>+  ——>JAR ——>From modules with dependencies 选择 Module,选择主函数,OK——>OK 勾选Includ ...

  5. Tomcat 启动流程

  6. Java并发编程:线程池

    一.为什么使用线程池 使用线程的时候直接就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降 ...

  7. 【BZOJ4059】Non-boring sequences

    Solution 记序列为\(a\),计算出与\(a_i\)相等的前一个元素的位置\(pre_i\),以及后一个元素的位置\(nex_i\),显然,对于那些左端点处于\((pre_i,i]\)以及右端 ...

  8. Moonraker:1靶机入侵

      0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...

  9. Html5 drag&drop

    下面是一个拖放例子 定义如下的两个div,分别是用于拖放后放置新元素的容器和可拖动的元素: <body> <div id="holder" style=" ...

  10. UESTC--1468

    题目:A Coin Problem 原题链接:http://acm.uestc.edu.cn/problem.php?pid=1468 分析:满足裴波纳契数列,打表找周期. #include<i ...