Spring Cloud Netflix之Euraka Server注册中心
Spring Cloud简介
Spring Cloud是基于Spring Boot的一套实现微服务架构的生态组件。生态组件中包含Spring Cloud NetFlix,Spring Cloud Feign,Spring Cloud Config,Spring Cloud CloudFoundry,Spring Cloud Bus,Spring Cloud Security,Spring Cloud Stream等生态组件,用于解决微服务架构中的一系列问题。Dubbo等组件也能实现微服务构建,但对比与Spring Cloud来说,Spring Cloud的生态组件较完善,不必花像Dubbo等构建要去花精力选择其余框架。Spring Cloud文档较为完善,且组件一直在优化。所以,当前对于构建微服务架构来说,Spring Cloud是较好的选择。
服务的注册中心
Spring Cloud Netflix提供Euraka Server来实现注册中心。注册中心在整个微服务架构中是最核心的模块,用于提供注册中心给微服务实例实现自动化注册与发现。为实现注册中心的高可用,一般会创建多个注册中心,并相互注册(一般创建2个),避免单点故障导致服务不可用。
以下介绍如何搭建高可用的服务注册中心,并实现实例下线时注册中心对实例列表的动态删除。
说明:搭建基于Spring Cloud Netflix 2.0.2版本,开发工具为Idea。
1、创建Euraka Server,配置pom.xml依赖(可以使用Spring Initializr来创建)
<?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</groupId>
<artifactId>server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>SCServer</name>
<description>Demo project for Spring Cloud Server</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.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.RELEASE</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-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>
注意:在2.0版本中,依赖jar为 spring-cloud-starter-netflix-eureka-server,而在1.0版本中为 spring-cloud-starter-eureka-server。
2、配置application.yml
我们这里统一采用yml来作为配置文件,相对于properties来说,yml能支持自动补全提示,且格式更为清晰(使用yml是注意缩进)。
spring:
application:
name: eureka-server0
server:
port: 11110
eureka:
instance:
hostname: peer0
client:
register-with-eureka: false
service-url:
defaultZone: http://peer1:11111/eureka
fetch-registry: false
server:
enable-self-preservation: false
主要几个配置的说明:
- eureka.instance.hostname:注册中心的注册名。
- euraka.client.register-with-euraka:配置为false,表示不将自己注册到注册中心。
- euraka.client.serviceUrl.defaultZone:配置defaultZone中的注册地址,该项用于配置注册中心高可用时,需要向另一台注册中心注册自己。(此配置为key-value类型,defaultZone为默认Zone的key)
- euraka.client.fetch-registry:配置为false,表明该注册中心只负责管理实例,不负责去检索实例服务。
- euraka.server.enable-self-preservation:配置为false,用处是为了注册中心能及时删除下线服务,而不是保留,配置禁止其保护模式。(根据项目实际需求配置)
3、在入口程序中使用@EnableEurakaServer声明为euraka server
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer
@SpringBootApplication
public class ScServerApplication { public static void main(String[] args) {
SpringApplication.run(ScServerApplication.class, args);
}
}
说明:也可使用@EnableDiscoveryClient来注释,@EnableEurakaServer是使用Euraka作为注册中心时使用的注释,使用其它类型的注册中心,可使用@EnableDiscoveryClient。
4、同理配置另一个注册中心,application.yml如下(需要在hosts文件中增加127.0.0.1 peer0 127.0.0.1 peer1)。
spring:
application:
name: eureka-server1
server:
port: 11111
eureka:
instance:
hostname: peer1
client:
register-with-eureka: false
service-url:
defaultZone: http://peer0:11110/eureka
fetch-registry: false
server:
enable-self-preservation: false
5、启动程序,访问http://localhost:11110与http://localhost:11111可查看到两注册中心启动成功,且相互注册。至此,高可用的Eureka注册中心搭建完成。


Spring Cloud Netflix之Euraka Server注册中心的更多相关文章
- spring cloud 学习(2) - eureka server注册中心高可用及安全认证
接上节继续,注册中心单点肯定是不牢靠的,可以参考下面的方案做成注册中心集群: 弄成3个节点,每个节点向其它节点注册,这样只要集群中有一个节点正常工作即可.为了方便在本机弄出这种效果,我们先修改下hos ...
- Spring Cloud 系列之 Alibaba Nacos 注册中心(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Alibaba Nacos 注册中心(一) 本篇文章讲解 Nacos 注册中心集群环境搭建. Nacos 集群环境搭建 ...
- spring cloud 专题一 (spring cloud 入门搭建 之 Eureka注册中心搭建)
一.前言 本文为spring cloud 微服务框架专题的第一篇,主要讲解如何快速搭建spring cloud微服务及Eureka 注册中心 以及常用开发方式等. 本文理论不多,主要是傻瓜式的环境搭建 ...
- Spring cloud搭建Eureka高可用注册中心
注册中心在微服务中是必不可少的一部分,主要用来实现服务自治的功能,本文则主要记载使用Netflix提供的Eureka作为注册中心,来实现服务自治的功能. 实际上Eureka的集群搭建方法很简单:每一台 ...
- spring cloud深入学习(二)-----服务注册中心spring cloud eureka
服务治理 主要用来实现各个微服务实例的自动化注册与发现,为啥需要这玩意呢?在一开始比如A系统调用B服务,可能通过手工维护B服务的实例,并且还得采用负载均衡等方式,这些全部都得需要手工维护,等后面系统越 ...
- SpringCloud微服务实战一:Spring Cloud Eureka 服务发现与注册中心(高可用实列为两个注册中心)
微服务架构: 微服务架构的核心思想是,一个应用是由多个小的.相互独立的.微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖.不同服务通过一些轻量级交互机制来通信,例如 RPC.HTTP 等, ...
- Spring Cloud 系列之 Alibaba Nacos 注册中心(一)
前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...
- 使用Spring Cloud搭建高可用服务注册中心
我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...
- Spring Cloud之整合ZK作为注册中心
Eureka已经闭源了,用zk可以替代之 Eureka 作为注册中心 Dubbo也是zk作为注册中心的 Zookeeper简介 Zookeeper是一个分布式协调工具,可以实现服务注册与发现.注册中心 ...
随机推荐
- bayaim_mysql_忘记密码 [仅限 5.6以下]
bayaim_mysql_忘记密码 [仅限 5.6以下] 原创 作者:bayaim 时间:2017-12-26 10:47:41 8 0删除编辑 忘记root密码------------------- ...
- 抓包工具Fiddler的简单使用
HTTP代理 http代理,就是代理客户机的http访问,主要代理浏览器访问页面 代理服务器是介于浏览器和web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务 ...
- [Go] gocron源码阅读-通过第三方cli包实现命令行参数获取和管理
gocron源码中使用的是下面这个第三方包来实现的,下面就单独的拿出来测试以下效果,和官方flag包差不多 go get github.com/urfave/cli package main impo ...
- postman---postman参数化
我们在做接口测试的过程中,都会遇到同一个接口不同的数据,每次去一个个填写数据就太麻烦了,今天我们一起学习下如何通过postman进行参数化 参数化 参数化就是1个接口请求不同的数据,我们可以通过把请求 ...
- nignx环境搭建
国产化 环境可以支持,中标麒麟 龙芯 银河麒麟
- Python基础之猜数游戏
例题一:猜数游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”:小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜 ...
- luoguP5227 [AHOI2013]连通图(线性基做法)
题意 神仙哈希做法. 随便找个生成树,给每个非树边赋一个值,树边的值为所有覆盖它的边的值得异或和. 删去边集使得图不联通当且即当边集存在一个子集异或和为0,可以用线性基. 证明的话好像画个图挺显然的 ...
- 【洛谷4045】[JSOI2009] 密码(状压+AC自动机上DP)
点此看题面 大致题意: 给你\(n\)个字符串,问你有多少个长度为\(L\)的字符串,使得这些字符串都是它的子串.若个数不大于\(42\),按字典序输出所有方案. 状压 显然,由于\(n\)很小,我们 ...
- Linux上error while loading shared libraries问题解决方法
在Linux环境执行程序时经常会遇到提示程序依赖动态库.so文件不存在的情况,出现报错"error while loading shared libraries: XXXX.so.XX: c ...
- 小白专场-FileTransfer-python语言实现
目录 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.h ...