EureKa:服务注册与发现
GitHub地址
1.简介
EureKa在Spring Cloud全家桶中担任着服务的注册与发现的落地实现。Netflix在设计EureKa时遵循着AP原则,它基于R
EST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,功能类似于Dubbo的注册中心Zookeeper。
2.实现原理
EureKa采用C-S的设计架构,即包括了Eureka Server(服务端),EureKa client(客户端)。
1.EureKa Server 提供服务注册,各个节点启动后,在EureKa server中进行注册;
2 EureKa Client 是一个Java客户端,用于和服务端进行交互,同时客户端也是一个内置的默认使用轮询负载均衡算法的负载均衡器。在应用启动后,会向Eueka Server发送心跳(默认30秒)。如果EUR额卡 Server在多个心跳周期内没有接受到某个节点的心跳,EureKa Server将会从服务注册表中将这个服务移出(默认90秒)。
3.SpringCloud Eureka的使用步骤
3.1Eureka Service端(服务端)
3.1.1.POM.XML
导入相依的依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
3.1.2.application.yml
配置文件的的配置demo
server:port: 7002 #启动端口eureka:instance:#单机hostname: localhosthostname: eureka7002.com #eureka服务端的实例名称client:register-with-eureka: false #false表示不向注册中心注册自己。fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:#单机设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/#Eureka高复用时设置其他的Eureka之间通信#defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7004.com:7004/eureka/defaultZone: http://eureka7003.com:7002/eureka/#server:#enable-self-preservation: false #Eureka服务端关闭心跳连接测试
3.1.3.主程序类
添加注解
@EnableEurekaServer
demo
package com.mark.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}
启动后访问设置的端口eg http://127.0.0.1:7002/
3.2Eureka Clinet(客户端)
3.2.1 pom.XMl
<!-- 将微服务provider侧注册进eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency>
3.2.2application.yml
server:port: 8001eureka:client: #客户端注册进eureka服务列表内service-url:#单机defaultZone: http://localhost:7002/eureka#集群是#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/,http://eureka7004.com:7004/eureka/defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8001prefer-ip-address: true #访问路径可以显示IP地址info: #在Eure页面访问info返回的信息的配置app.name: atguigu-microservicecloudcompany.name: www.mark.combuild.artifactId: $project.artifactId$build.version: $project.version$
3.2.3主程序类
添加注解:(注意和服务端区分开)
@EnableEurekaClient
@EnableDiscoveryClient
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class Deptprovider8003_App {
3.3补充
如果是Eureka Client的消费者,如果获取注册中心中的微服务,那么还需要在配置类中注入一个组件RestTemplate
demo
package com.mark.springcloud.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** Created by Choisaaaa on 2018/7/7.* 自定义配置类*/@Configuration
public class MyConfig {@Bean@LoadBalanced//使用负载均衡public RestTemplate restTemplate(){return new RestTemplate();}
}
调用的demo
package com.mark.springcloud.controller;import com.mark.springcloud.entities.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.List;/*** Created by Choisaaaa on 2018/7/7.**/
@RestController
@RequestMapping("/consumer/dept")
public class DeptControler_Consumer {//private static final String REST_URL_PREFIX = "http://localhost:8001";//MICROSERVICECLOUD-DEP:为Eureka Server中心的微服务实例名称private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/add")public boolean add(Dept dept) {return restTemplate.getForObject(REST_URL_PREFIX+"/dept/add",Boolean.class,dept);}@RequestMapping(value = "get/{id}")public Dept get(@PathVariable("id") Long id) {return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id,Dept.class);}@RequestMapping(value = "/list")public List<Dept> list(){return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list",List.class);}//消费者调用服务发现@RequestMapping("/discovery")public Object discovery() {return restTemplate.getForObject(REST_URL_PREFIX+"/dept/discovery",Object.class);}}
EureKa:服务注册与发现相关推荐
- 详解Eureka服务注册与发现和Ribbon负载均衡【纯理论实战】
Eureka服务注册与发现 Eureka简介 在介绍Eureka前,先说一下CAP原则 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability ...
- 二、Eureka服务注册与发现
SpringCloud系列目录: 一.SpringCloud简介 二.Eureka服务注册与发现 三.Eureka注册与发现之Eureka Comsumer 四.Eureka.Server Provi ...
- SpringCloud[01]Eureka服务注册与发现
文章目录 Eureka服务注册与发现 1. Eureka基础知识 1. 什么是服务治理 2. 什么是服务注册与发现 3. Eureka包含两个组件:**Eureka Server** 和 **Eure ...
- 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)
跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...
- 【夯实Spring Cloud】Spring Cloud中的Eureka服务注册与发现详解
本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...
- springcloud Eureka服务注册和发现
一,Eureka基本介绍: Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构 ...
- Eureka服务注册与发现:什么是服务注册与发现,Server注册中心
Eureka服务注册与发现 一套微服务架构的系统由很多单一职责的服务单元组成,而每个服务单元又有众多运行实例.例如,世界上最大的收费视频网站Netflix的系统是由600多个服务单元构成的,运行实例的 ...
- eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解
一.Eureka概述 (1)Eureka是什么 Eureka是一个用于服务注册与发现的框架,本身是一个基于Rest的服务. (2)Eureka的组件有哪些? Eureka的组件可分为Eureka Se ...
- SpringCloud与微服务Ⅴ --- Eureka服务注册与发现
一.Eureka是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构 ...
- SpringCloud笔记(Hoxton)——Netflix之Eureka服务注册与发现
基础应用 Eureka简介 Eureka是一个基于REST的服务,主要在AWS云中使用,定位服务来进行中间层服务器的负载均衡和故障转移. SpringCloud封装了Netflix公司开发的Eurek ...
最新文章
- 动态内存管理和智能指针 2.0 -- shared_ptr
- 【好资源】全网第一份,OpenCV 4-Contrib扩展模块中文教程
- 头条二面:宕机后,Redis如何实现快速恢复?
- svn的merge,解决冲突
- 手撕 CNN 之 AlexNet(PyTorch 实战篇)
- 基于ffmpeg和libvlc的视频剪辑、播放器
- 【2020牛客NOIP赛前集训营-提高组(第一场)题解】( 牛牛的方程式,牛牛的猜球游戏,牛牛的凑数游戏,牛牛的RPG游戏)
- Cookie 解说(分类、用途、缺陷、功能 ...)
- linux重定向命令是干嘛的,Linux系统下重定向命令应用及其语法有什么?
- STM32学习笔记之一(初窥STM32)
- 哲学家就餐 linux实现_Linux哲学的9个主要原则如何影响您
- Optional的巧用
- 【动态规划 回文串13】LeetCode 647. Palindromic Substrings
- MUI Picker选择器 自定义省市地址三级联动
- PATHLOSS.4.0 无线电设计软件
- 注册表右键取得管理员权限
- xp计算机无法正常启动,Windows XP电脑开机出错无法正常启动的解决方法
- java空指针异常是什么、怎么发生、如何处理
- 数据页和数据行(翻译)
- php对接腾讯云直播,聊天,im,云录制产生回放