目录

一、前言:

二、新建一个Eureka-Server:

三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能。

四、编写application.yml文件:主要配置一些端口号、应用名称、以及服务注册中心地址等等。

五、搭建Eureka Client服务提供者

六、启动类加上@EnableDiscoveryClient注解,使其成为Eureka的一个服务提供者。

七、编写application.yml配置文件:

八、新建测试Controller:TestController.java:

九、启动项目:

十、扩展


一、前言:

本文主要搭建Spring Cloud Eureka服务注册中心(单节点),不过一般生产环境都是多节点负载均衡,形成一个服务注册中心集群,这样一个注册中心崩了不会影响整个系统的运行以及接口的调用。本文基于SpringBoot 1.5.2,Spring Cloud Camden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:

二、新建一个Eureka-Server:

首先引入依赖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>com.springcloud.wsh</groupId><artifactId>springcloud_eureka_server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springcloud_eureka_server</name><description>Spring Cloud Eureka服务提供者</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.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>Camden.SR6</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-eureka-server</artifactId></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>

三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能。

@SpringBootApplication
//@EnableEurekaServer注解的作用: 开启Eureka服务发现的功能
@EnableEurekaServer
public class SpringcloudEurekaServerApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudEurekaServerApplication.class, args);}
}

四、编写application.yml文件:主要配置一些端口号、应用名称、以及服务注册中心地址等等。

server:port: 1111  #服务端口号
eureka:client:fetch-registry: false  #是否检索服务register-with-eureka: false  #表示不向Eureka注册自身服务service-url: #服务注册中心地址,其他服务可以通过指定eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/注册到Eureka上defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/instance:#主机名hostname: localhost
spring:application:#服务名称name: eureka-server

到此,Eureka服务发现者已经搭建好。

五、搭建Eureka Client服务提供者

首先引入依赖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>com.springcloud.wsh</groupId><artifactId>springcloud_eureka_client</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springcloud_eureka_client</name><description>Spring Cloud Eureka服务提供者</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.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>Camden.SR6</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-eureka</artifactId></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>

六、启动类加上@EnableDiscoveryClient注解,使其成为Eureka的一个服务提供者。

@SpringBootApplication
//@EnableEurekaClient
@EnableDiscoveryClient //注册Eureka客户端
public class SpringcloudEurekaClientApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudEurekaClientApplication.class, args);}
}

七、编写application.yml配置文件:

主要是要指定服务注册中心的地址,端口号等等

server:port: 2222 #服务端口号
spring:application:#服务名称,对应注册到Eureka的实例名称,后续Zuul路由映射的serviceId也是根据这个name:  eureka-client
eureka:instance:#主机名hostname: localhostclient:serviceUrl:#服务注册中心的地址,指定这个会向Eureka注册一个名叫eureka-client的客户端#单节点Eureka服务注册中心,不适用与生产环境,实际生产会用到Eureka Server集群defaultZone: http://localhost:1111/eureka/#这里可以定义一些自定义的参数,可以使用@Value("${com.springcloud.author}")获取自定义参数的值
com:springcloud:author: weixiaohuaidate: 2018-09-07 10:10

八、新建测试Controller:TestController.java:

注意:可以引入discoveryClient获取当前服务实例的一些信息。可以使用@Value注解获取在配置文件自定义的一些参数。

//@RestController注解是一个组合注解, @RestController = @Controller  + @ResponseBody
@RestController
public class TestController {private static Logger logger = LoggerFactory.getLogger(TestController.class);@Autowiredprivate DiscoveryClient discoveryClient;//获取配置文件中的自定义参数@Value("${com.springcloud.author}")private String author;@Value("${com.springcloud.date}")private String date;@GetMapping("/test")public String test() {//获取当前服务的实例ServiceInstance serviceInstance = discoveryClient.getLocalServiceInstance();String info = "hello eureka, 主机名:" + serviceInstance.getHost() + ", service_id:" + serviceInstance.getServiceId() + " 作者: " + author + " / 日期: " + date;logger.info(info);return info;}}

九、启动项目:

浏览器访问http://localhost:1111/,如下图。可以看到eureka-client已经成功注册到Eureka上面。

接着我们访问http://localhost:2222/test,可以访问到TestController中定义的测试方法:如下图

十、扩展

Eureka内部维护服务节点的机制:

【a】服务下线

迭代更新终止访问某一个或者多个服务节点时,在正常关闭服务节点的情况下,Eureka Client会告诉Eureka Server我要下线了,Eureka Server收到请求后会将该服务实例运行状态UP修改为DOWN

【b】失效剔除

Eureka Server在启动完成后会创建一个定时器每隔60秒检查一次服务健康状况,如果其中一个服务节点超过90秒未检查到心跳,那么Eureka Server会自动从服务实例列表内将该服务剔除。(内存溢出杀死进程服务器宕机非正常流程关闭服务节点)

【c】自我保护

Eureka Server自我保护机制会检查最近15分钟内所有Eureka Client正常心跳的占比,如果低于85%就会被触发保护机制,当触发自我保护机制Eureka Server就会锁定服务列表,不让服务列表内的服务过期,不过这样我们在访问服务时,得到的服务很有可能是已经失效的实例,如果是这样我们就会无法访问到期望的资源,会导致服务调用失败,所以这时我们就需要有对应的容错机制熔断机制

关闭自我保护: 在application.properties配置文件中加入代码:

eureka.server.enable-self-preservation=false

到此,我们单节点的Eureka服务注册中心已经搭建完成,本文是笔者在学习SpringCloud的时候的一些总结,仅供参考,大家一起学习,共同进步!

Spring Cloud Eureka服务注册中心 单节点搭建(学习总结)相关推荐

  1. eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心

    Sping boot Eureka是服务中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等.Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装. 在du ...

  2. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  3. spring cloud eureka服务注册和调用

    SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目 访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目. 将下载 ...

  4. spring cloud微服务注册中心EurekaServer

    注册中心EurekaServer pom文件: <?xml version="1.0" encoding="UTF-8"?> <project ...

  5. 新 Spring Cloud (一) 之 Eureka 服务注册中心

    文章目录 一.前言 0. 之前写过两篇Spring Cloud,但是感觉不够具体,所以重新写了一份. 1. SpringCloud 2. 什么是Eureka 3. 原理图 二.基本使用实例 1. 场景 ...

  6. Spring Cloud Eureka(二)注册一个服务的提供者

    Spring Cloud Eureka(二)注册一个服务的提供者 注册一个服务的提供者 在上一篇中,当启动项目并访问localhost:1111时,发现该注册中心还没有注册任何服务.所以现在来搞一个服 ...

  7. 天荒地老修仙功-第六部:Spring Cloud Eureka——服务发现

    文章目录 前言 1.Eureka 1.1.Spring Cloud Netflix 1.2.样例项目结构 1.3.服务注册中心 1.4.客户端(服务提供者) 1.5.高可用 1.5.1.Region ...

  8. Eureka服务注册中心---SpringCloud

    Eureka服务注册中心 5.1 什么是Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一.Eureka是基于REST ...

  9. Spring Cloud之服务注册与发现机制

    一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...

  10. Eureka服务注册中心

    Eureka服务注册中心 最近在研究Spring Cloud,发现其中的组件实在是太多了,真的是头大,只能一块一块看,像盲人摸象一样.要想很短时间内掌握Spring Cloud是不可能的,小编就学习一 ...

最新文章

  1. java 中的单元测试_浅谈Java 中的单元测试
  2. 厦大肝癌研究成果登《细胞》顶刊背后:一作中途离世,捐献遗体用于医学研究...
  3. matlab-绘制分叉与混沌分支图
  4. js,html条码生成
  5. java nio改造io,java – 将NIO与IO混合
  6. 【TC10738】TheContest【Hall 定理】【贪心】【二分图匹配】
  7. Leetcode 19. 删除链表的倒数第N个节点
  8. db设计专用excel_独家|自卸车如何实现侧板结构快速设计,减少重复工作?
  9. 用ibatis.net简单的数据更新
  10. LVDS原理及设计指南
  11. gin框架-2-返回是html格式的网页数据
  12. 库缓存(Library Cache)内存结构
  13. 熟练的mescroll
  14. 百度地图兴趣点抓取工具
  15. mysql busy buffer_buffer busy waits 等待事件
  16. html语言em,html中em单位 网页代码的问题:em是什么单位?
  17. dsolve 的 用法
  18. UOS系统中安装x11vnc远程桌面
  19. 什么是ARPU与ARPPU ?
  20. rad+xray漏洞扫描工具

热门文章

  1. 2021-08-24fine-tuning 模型
  2. 451.根据字符出现频率排序
  3. Ubuntu16.04实现定时免密远程拷贝脚本
  4. mysql 子查询 性能_mysql子查询性能
  5. 腾讯云安装javaweb环境
  6. 随机过程(二):更新过程的详细理解
  7. Maven scope中import的作用
  8. 实现一个定时任务管理器
  9. ucla计算机科学和数学专业,UCLA的CS「加州大学洛杉矶分校计算机科学系」
  10. mysql etimedout_Node.js获取请求ETIMEDOUT和ESOCKETTIMEDOUT