Spring Cloud Eureka服务注册中心 单节点搭建(学习总结)
目录
一、前言:
二、新建一个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服务注册中心 单节点搭建(学习总结)相关推荐
- eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心
Sping boot Eureka是服务中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等.Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装. 在du ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- spring cloud eureka服务注册和调用
SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目 访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目. 将下载 ...
- spring cloud微服务注册中心EurekaServer
注册中心EurekaServer pom文件: <?xml version="1.0" encoding="UTF-8"?> <project ...
- 新 Spring Cloud (一) 之 Eureka 服务注册中心
文章目录 一.前言 0. 之前写过两篇Spring Cloud,但是感觉不够具体,所以重新写了一份. 1. SpringCloud 2. 什么是Eureka 3. 原理图 二.基本使用实例 1. 场景 ...
- Spring Cloud Eureka(二)注册一个服务的提供者
Spring Cloud Eureka(二)注册一个服务的提供者 注册一个服务的提供者 在上一篇中,当启动项目并访问localhost:1111时,发现该注册中心还没有注册任何服务.所以现在来搞一个服 ...
- 天荒地老修仙功-第六部:Spring Cloud Eureka——服务发现
文章目录 前言 1.Eureka 1.1.Spring Cloud Netflix 1.2.样例项目结构 1.3.服务注册中心 1.4.客户端(服务提供者) 1.5.高可用 1.5.1.Region ...
- Eureka服务注册中心---SpringCloud
Eureka服务注册中心 5.1 什么是Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一.Eureka是基于REST ...
- Spring Cloud之服务注册与发现机制
一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...
- Eureka服务注册中心
Eureka服务注册中心 最近在研究Spring Cloud,发现其中的组件实在是太多了,真的是头大,只能一块一块看,像盲人摸象一样.要想很短时间内掌握Spring Cloud是不可能的,小编就学习一 ...
最新文章
- java 中的单元测试_浅谈Java 中的单元测试
- 厦大肝癌研究成果登《细胞》顶刊背后:一作中途离世,捐献遗体用于医学研究...
- matlab-绘制分叉与混沌分支图
- js,html条码生成
- java nio改造io,java – 将NIO与IO混合
- 【TC10738】TheContest【Hall 定理】【贪心】【二分图匹配】
- Leetcode 19. 删除链表的倒数第N个节点
- db设计专用excel_独家|自卸车如何实现侧板结构快速设计,减少重复工作?
- 用ibatis.net简单的数据更新
- LVDS原理及设计指南
- gin框架-2-返回是html格式的网页数据
- 库缓存(Library Cache)内存结构
- 熟练的mescroll
- 百度地图兴趣点抓取工具
- mysql busy buffer_buffer busy waits 等待事件
- html语言em,html中em单位 网页代码的问题:em是什么单位?
- dsolve 的 用法
- UOS系统中安装x11vnc远程桌面
- 什么是ARPU与ARPPU ?
- rad+xray漏洞扫描工具