1 Eureka知识点

  按照功能划分:

    Eureka由Eureka服务端和Eureka客户端组成

  按照角色划分:

    Eureka由Eureka Server、Service Provider、Service Consumer组成

      Eureka Server:提供服务注册和发现(即:服务注册中心)

      Service Provider:服务提供方(即:为其他微服务提供数据资源的服务),将自身的服务信息注册到 Eureka Server 中去供 Service Consumer 使用

      Service Consumer:服务消费方(即:需要其他服务提供的数据资源进行逻辑处理的服务),从 Eureka Server 中获取 Service Provider 的信息,从而获取Service Provider提供的数据资源

      技巧01:其实大部分微服务可能既是服务提供方也是服务消费方

  1.1 Eureka服务端

    Eureka服务器用作服务注册服务器,相当于阿里系微服务架构中的Zookeeper。

  1.2 Eureka客户端

    Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

2 Eureka服务端创建【单例模式】

  创建Eureka相关项目时需要引入SpringCloud的依赖管理器和Eureka服务端依赖

  2.1 利用IDEA创建

    版本说明:

      JDK:1.8

      MAVEN:3.5

      IDEA:2017.2 旗舰版

    2.1.1 创建一个SpingBoot项目

    2.1.2 选择相关依赖

      选择依赖时只需要选择Eureka Server的依赖就可以,我这里选择其他两个依赖只是为了开发方便而已

      技巧01:SpringBoot的版本默认会是最新的,由于我们创建的是SpringCloud相关的项目,所以IDEA会自动为我们引入SprngCloud的依赖管理器;但是SpringCloud依赖管理器的版本和SpringCloud提供的组件的版本是由严格的要求,详情请参见官网;版本对应关系如下:

    2.1.3 根据官网的版本要求修改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> <groupId>cn.xinagxu</groupId>
<artifactId>eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>eureka</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency> <!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-web</artifactId>-->
<!--</dependency>--> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</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>

pom.xml

    2.1.4 在启动类上添加@EnableEurekaServer注解

      @EnableEurekaServer是指明这个项目作为一个Eureka服务端使用

    2.1.5 启动应用

      启动应用后会报错,错误信息如下:

      报错原因:Eureka服务端也会像Eureka客户端一样可以向一个注册中心进行注册,从Eureka的源码中可以看到 Eureka Server 默认的注册中心为:http://localhost:8761/eureka/,由于我们并没有创建这个项目所以创建的Eureka Server项目会不断向这个不存在的注册中心进行注册,所以上面这个错误会不断的出现控制台

      解决办法01:关闭Eureka Server向另外注册中心或者只身进行注册的功能【即:关闭Eureka Server的的Eureka Client功能】,在配置文件中添加下面的配置就可以实现这个功能【PS:官方推荐】

        技巧01:虽然关闭了Eureka Server向另外注册中心或者自身进行注册的功能,但是控制台还是会报错;但是这次只会出现两次错误信息了,可能我们配置的信息在 Eureka Server 已经向默认的注册中心发起注册请求后才生效才造成的这两次报错信息

        技巧02:关闭了Eureka Server向另外注册中心或者只身进行注册的功能后启动Eureka Server后的效果

      解决办法02:向另外注册中心或者只身进行注册(由于现在没有其他注册中心,所以本博文将其注册到自身),在配置文件中添加下面的配置就可以实现这个功能:

        技巧01:虽然配置Eureka Server向自身进行注册的功能,但是控制台还是会报错;但是这次只会出现两次错误信息了,可能我们配置的信息在 Eureka Server 已经向默认的注册中心发起注册请求后才生效才造成的这两次报错信息

        技巧02:配置Eureka Server向自身进行注册的功能后启动Eureka Server后的效果

  2.2 利用Maven创建

    根据官方文档进行创建即可,待更新......2018年8月25日14:15:10

3 Eureka Server集群

  3.1 创建三个Eureka Server项目

    按照2.1的步骤进行创建即可,当然直接复制创建好的项目也可以,假设三个Eureka Server节点分别为 peer1, peer2, peer3

  3.2 修改各个项目的配置文件

    技巧01:启动第一个节点 peer1 时会报错,因为这个节点需要注册到其它两个节点peer2, peer3,而其它两个节点还没启动,所以报找不到注册中心的错误

    技巧02:peer1节点的两个注册中心节点peer2,peer3都会成为registered-replicas

    技巧03:没有启动的节点 peer2, peer3 会成为 unavailable-replicas,当peer2或者peer3启动后就会成为available-replicas

  3.3 Eureka Server集群配置时需要注意的地方

    每个Eureka Server 节点的应用名称必须相同,而且每个节点必须开启Eureka Server的注册功能;注册中心必须通过实例名进行连接,不能用localhost;注册中心的实例名通过eureka.client.instance.hostname进行设置

4 Eureka Client创建

  4.1 利用IDEA创建

    4.1.1 新建一个SpringBoot项目

    4.1.2 选择依赖

      选择Eureka Client依赖和Web依赖即可

      技巧01:如果不选择web相关依赖,那么这个项目就运行不起来

    4.1.3 根据SpringCloud官网查看SpringCloud和SpringBoot的版本是否匹配

<?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> <groupId>cn.xinagxu</groupId>
<artifactId>client02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>client02</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties> <dependencies>
<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> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</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>

pom.xml

    4.1.4 设置项目类型

      在启动类上添加@EnableEurekaClient是其为一个Eureka Client项目

    4.1.5 配置注册中心

    4.1.6 启动Eureka Client

      打开实例名为peer1的注册中心管理页面可以看到启动的项目已经注册到注册中心去啦

      技巧01:虽然在Eureka Client只配置了一个注册中心,但是在其他的注册中心节点中仍然可以Eureka Client的注册信息,这就是使用注册中心集群的好处;而且当Eureka Client配置的那个注册中心挂掉后其余的注册中心节点任然拥有Eureka Client的注册信息(前提是Eureka Client已经通过配置的那个注册中心注册成功啦);如果关掉所有的注册中心和Eureka Client后重新启动Eureka Client没有配置的所有注册中心和Eureka Client,那么Eureka Client将不会注册成功。

    4.1.7 Eureka Client 高可用注册

      为了保证Eureka Client能在只要有一台注册中心工作正常的情况下都可以注册成功,就必须在Eureka Client中配置好所有的注册中心,各个注册中心之间用逗号隔开

 

  4.2 利用MAVEN创建

    根据官网配置进行搭建接口,待更新......

5 本博文参考源码

  点击获取

      

    

SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册的更多相关文章

  1. 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)

    在使用RestTemplate来消费spring boot的Restful服务示例中,我们提到,调用spring boot服务的时候,需要将服务的URL写死或者是写在配置文件中,但这两种方式,无论哪一 ...

  2. 『集群』004 Slithice 集群分布式(多个客户端,基于中央服务器的集群服务)

    Slithice 集群分布式(多个客户端,基于中央服务器的多个集群服务端) 案例Demo展示: 集群架构图 如下: 如上图,上图 展示了 这个集群 的 结构: >一个中央服务器(可以有多个),负 ...

  3. 使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock

    使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock 在上一篇<electron快速开始>里讲述了如何快速的开始一个electron的应用程序,既然electr ...

  4. zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。

    zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的.

  5. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

  6. (转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

    主要包含4个章节: 1. Java 领域的即时通信的解决方案 2. 搭建 Openfire 服务器 3. 使用客户端测试我们搭建的 Openfire 服务器 4. Smack 和 ASmack 一.J ...

  7. Lodop不要把客户端的打印机共享到服务器上 再在客户端打印

    客户端打印需要每个客户端都安装,Lodop插件方式和C-Lodop方式,都是安装一次后,无需再次安装,c-lodop默认也是开机自启动的.集中打印方式,可以打印到某台电脑(作为云主机)上,但是不能打印 ...

  8. redis集群与分片(1)-redis服务器集群、客户端分片

    下面是来自知乎大神的一段说明,个人觉得非常清晰,就收藏了. 为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型 ...

  9. CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案

    CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...

随机推荐

  1. Python之属性、特性和修饰符

    作为面对对象的核心内容,将从以下一个方面进行总结: 1. property和@property 2. __getattribute__().__getattr__().__setattr__().__ ...

  2. win7C盘不够用怎么办

    Windows 7 是由微软公司(Microsoft)开发的操作系统,核心版本号为Windows NT 6.1.Windows 7 可供家庭及商业工作环境.笔记本电脑.平板电脑.多媒体中心等使用. 工 ...

  3. linux上编写运行 dotnet core api

    安装 Ubuntu        dotnet core 跨平台已不再是梦,它带来的意义非凡,比如api接口可以在linux上编写及部署,也可以在windows上编写好,打包发布,然后copy到lin ...

  4. C# 程序部署、调试时间长的解决办法

    最近在做数控折弯机项目时,VS2008环境下采用C#..NET Compact Framework开发WinCE.Windows Mobile程序时,编译项目非常慢,看着进度条慢慢刷,有时候需要几分钟 ...

  5. WCF服务引用时错误: 无法导入 wsdl:portType详细信息

    WCF服务发布到IIS后,在客户端或WCFTestClient添加引用的时候报错如下: 错误: 无法导入 wsdl:portType详细信息: 在运行 WSDL 导入扩展时引发异常: System.S ...

  6. [BZOJ5297][CQOI2018]社交网络

    bzoj luogu sol 就是求以\(1\)为根的生成树的数量. 直接矩阵树定理. code #include<cstdio> #include<algorithm> #i ...

  7. hdu 5730 Shell Necklace——多项式求逆+拆系数FFT

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 可以用分治FFT.但自己只写了多项式求逆. 和COGS2259几乎很像.设A(x),指数是长度,系数 ...

  8. linux系统无法挂载U盘

    插上U盘 [ 2407.650440] usb 1-3.3: new high speed USB device number 7 using s5p-ehci [ 2407.887332] usb ...

  9. Memcached的限制和使用建议

    1. 在Memcached中可以保存item数据量没有限制的,只要内存足够 2. Memcached单进程最大使用内存2G,要使用更多内存,可以分多个端口开启多个Memcached进程 3. Memc ...

  10. Scanner的小实例

    package com.b; import java.util.Random; import java.util.Scanner; //猜拳游戏 1.人从键盘输入 2.计算机从电脑随机输入 3.条件判 ...