SpringCloud--1--服务治理Eureka
一、Eureka概述
1、Eureka特点
- 只需通过简单引入依赖和注解配置,就能让SpringBoot构建的微服务应用轻松地与Eureka服务治理体系进行整合。
- Eureka负责服务治理,即:微服务实例的自动化注册与发现。服务注册与发现都是以应用服务名的形式实现。
- 遵循AP原则(高可用,分区容错性),使用了自我保护机制保证了高可用。实现服务发现和故障转移。
2、Eureka两大组件三大角色
- 两大组件:Eureka Server(提供注册服务)、 Eureka Client(生产消费服务)。
- 三大角色:Service Provider和Service Consumer不是严格的概念,Service Consumer也可以随时向Eureka Server注册,来让自己变成一个Service Provider。Eureka Client启动后,马上向服务注册中心注册。同时,会从Eureka Server上获取所有实例的注册信息,包括IP地址、端口等,并缓存到本地。这些信息默认每30秒更新一次。如果与Eureka Server通信中断,Service Consumer仍然可以通过本地缓存与Service Provider通信。
- Eureka Server:服务的注册中心,负责维护注册的服务列表。
- Service Provider:服务提供方,作为一个Eureka Client,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等。
- Service Consumer:服务消费方,作为一个Eureka Client,向Eureka Server获取Service Provider的注册信息(获取所有服务的实例清单缓存本地),并通过远程调用与Service Provider进行通信。
- Eureka Client通过发送心跳请求实现服务注册、续约。另外,Eureka Server还需要以心跳的形式去监测服务清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。
二、搭建服务注册中心-Eureka Server
1、pom.xml
首先,创建一个基础的Spring Boot工程,并引入必要的pom依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent> <groupId>com.github.gavincoder</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server</name> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--eureka-server服务端引入 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
2、application.yml
#server
server:
port: 8888 #eureka
eureka:
instance:
hostname: localhost
client: #声明自己是个服务端
register-with-eureka: false #false表示不向注册中心注册自己
fetch-registry: false #false表示自己就是注册中心,职责是维护服务清单,不参与检索
service-url: #设置eureka server对外暴露的地址
default-zone: http://${eureka.instance.hostname}:${server.port}/eureka/
3、启动类
通过@EnableEurekaServer注解开启服务注册中心功能。
package com.github.gavincoder.server; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication
@EnableEurekaServer
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
} }
注:
- springboot与springcloud版本有严格约束
- Eureka artifactid发生变更:<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- 详细经验分享见我的另一篇博文:https://www.cnblogs.com/gavincoder/p/11032015.html
4、运行效果
访问Eureka Server对外暴露的注册中心地址:http://${eureka.instance.hostname}:${server.port}
三、搭建Eureka-Client---服务提供者
1、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.github.gavincoder</groupId>
<artifactId>product</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>product</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
注:
- 必须添加web依赖,不然Eureka Client启动时自动停止,报错:“Shutting down DiscoveryClient ...”
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、application.yml
#server
server:
port: 8886 #spring
spring:
application:
name: eureka-client-product-service #eureka
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8888/eureka/
#eureka:
# instance:
# service-url:
# default-zone: http://localhost:8888/eureka/
注:
- yml属性配置文件务必检查是否必要属性都是有效状态,无效状态无法读取该属性值。
- 示例:如下配置造成eureka client无法找到注册中心地址进行注册,注册失败。
启动报错:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
3、启动类
添加注解:@EnableEurekaClient
package com.github.gavincoder.product; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient
@SpringBootApplication
public class ProductApplication {
public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
} }
四、搭建Eureka-Client---服务消费方
1、pom.xml
---同服务提供方
2、application.yml
#server
server:
port: 8885 #spring
spring:
application:
name: eureka-client-order-service #eureka
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8888/eureka/
3、启动类
package com.github.gavincoder.order; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
} }
四、Eureka运行效果
五、实战代码
实战实例代码已经上传至我的代码库,地址见博客公告中的GitHub、Gitee。
SpringCloud--1--服务治理Eureka的更多相关文章
- SpringCloud微服务治理技术入门(SCN)
1.集群.分布式.微服务 首先先理解三个感念 什么是集群?: 同一个业务,部署在多个服务器上,目的是实现高可用,保证节点可用! 什么是分布式?: 一个业务分拆成多个子业务,部署在不同的服务器上,每个子 ...
- springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...
- springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig
原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服务实战:Eureka+Zuul+Ribbon+Hyst ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响
笔记 4.SpringCloud微服务核心组件Eureka介绍和闭源后影响 简介: SpringCloud体系介绍 官方地址:http://projec ...
- 老板让我重构项目,我想首先应该服务治理---eureka服务治理深入浅出
目录 什么是服务治理 Eureka调用过程 Eureka单机注册 Eureka 单机启动 单机注册 集群注册 客户调用 Eureka集群注册 idea 如何同一个项目启动多次 Eureka自我保护 为 ...
- SpringCloud开发学习总结(三)—— 服务治理Eureka
在最初开始构建微服务系统的时候可能服务并不多,我们可以通过做一些静态配置来完成服务的调用.比如,有两个服务A和B,其中服务A需要调用服务B来完成一个业务操作时,为了实现服务B的高可用,不论采用服务端负 ...
- 【Dalston】【第一章】 服务治理(Eureka)
Spring Cloud是一系列框架的集合,其基于Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(发现注册).配置中心.消息总线.负载均衡.断路器.数据监控.分 ...
- springcloud2 (三) 服务治理Eureka及其实现原理
代码地址:https://gitlab.com/showkawa/architect/tree/master/microservice/eurake 基于springcloud2分析eurake知识点 ...
- spring cloud 服务治理 - Eureka
前言 在分布式系统领域有个著名的CAP定理: C——数据一致性: A——服务可用性: P——服务对网络分区故障的容错性. 这三个特性在任何分布式系统中不能同时满足,最多同时满足两个. Zookeepe ...
- springcolud 的学习(四)服务治理. Eureka
什么是服务治理在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用.负载均衡.容错等,实现服务发现与注册.服务注册与发现 在服务 ...
随机推荐
- P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)
P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...
- PHP 之根据两个经纬度计算距离
一.函数代码 /** * @param $lng1 * @param $lat1 * @param $lng2 * @param $lat2 * @return float */ function g ...
- hdoj - 1342 Lotto
Problem Description In a Lotto I have ever played, one has to select 6 numbers from the set {1,2,... ...
- 【软工实践】Alpha冲刺(4/6)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 学习调用中国天气网API,接近实现天气推送功能 对天气推送的形式进行讨论及重确 ...
- 剑指offer:平衡二叉树
题目描述: 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 思路分析: 首先要明确平衡二叉树的定义.平衡二叉是左右子树的高度差小于等于1,且左右子树都为平衡二叉树.这里就存在一个递归判断左右子树是否为 ...
- spring4.x企业应用开发读书笔记1
第一章 概述 1 spring 以 ioc 和 aop 为内核,提供了展现层 springMVC.持久层SpringJDBC及业务层事务管理等一站式企业级应用技术. 2spring的特性 方便解耦,简 ...
- (4)Flask项目模板渲染初体验
一.准备静态资源 将项目使用到的静态资源拷贝到static目录 二.创建前台首页html 创建templates/home/home.html页面,内容包含导航和底部版权两部分,中间内容区域为模板标签 ...
- WMS开发环境
须安装以下三个软件: JASPER报表开发工具:TIB_js-studiocomm_6.5.1.final_windows_x86_64.exe UI开发工具:Studio_7.0.0.0_win32 ...
- oracle的merge语法
merge into trade.ttradeseat ausing trade.bs_zrt_tradeseat bon (a.L_FUND_ID = b.l_Fund_Id and a.l_bas ...
- MySQL二进制快速安装升级(待验证)
适合小版本的升级. 即 关闭当前的MySQL,替换当前的二进制文件或包,在现有的数据目录上重启MySQL,并运行mysql_upgrade. 特点:不改变数据文件,升级速度快:但,不可以跨操作系统,不 ...