SpringCloud 基础——Eureka服务注册中心

源码地址:https://pan.baidu.com/s/1Hmvh1Bbss_Z1w1I7I1mwDw 提取码:e41h

Eureka 服务注册中心可以说是微服务架构中最为核心和基础的组件,主要用来实现各个微服务实例的自动化注册和发现。

每个服务单元向服务注册中心登记自己提供的服务,将主机与端口号等信息告知服务注册中心,服务注册中心按服务名称组织服务清单,并以心跳的方式去监测服务是否可用,若不可用,需要从服务清单中剔除,达到排除故障服务的效果。

搭建一个 Eureka 服务注册中心很简单

1. pom.xml

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.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>
	</properties>

	<dependencies>
		<!--eureka server -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
			<version>1.4.1.RELEASE</version>
		</dependency>
		<!-- spring boot test -->
		<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>Finchley.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

主要引入 eureka-server 依赖、springboot 依赖和 springcloud 依赖

2. application.properties

#不给服务取名则默认为UNKNOWN
#不注册自己不用命名了
#spring.application.name=eureka-server  
server.port=7070

#fasle 表示不让服务注册中心注册自己为服务,该值默认为true
eureka.client.register-with-eureka=false
#fasle 表示不需要去检索服务
eureka.client.fetch-registry=false
#注册地址,可用 ${ } 动态取配置的属性值
eureka.client.service-url.defaultZone=http://localhost:7070/eureka/
#eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

#驱逐下线的服务,间隔5秒,默认是60,建议开发和测试环境配置
#eureka.server.evictionIntervalTimerInMs=5000

#关闭自我保护机制
#eureka.server.enable-self-preservation=false

最后两个配置不理解的朋友可以看效果图后面的解释

3. 启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApp {
	public static void main(String[] args) {
		SpringApplication.run(EurekaApp.class, args);
	}
}

@SpringBootApplication 标记为 SpringBoot 应用;
@EnableEurekaServer 标记为注册服务中心

运行启动类,在网页地址栏输入 localhost:7070 ,可以看到如下页面,说明服务注册中心搭建完成
在这里插入图片描述等注册了服务后,可能由于网络延迟或关闭服务,使得服务在规定时间没有返回心跳,则出现提示
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
表示已经启动了自我保护措施,即保留了服务的名称、ip、端口等信息,使得服务可以被调用,但是会调用失败(如果是服务被关闭不存在的话),好处是如果只是暂时的网络延迟,保留信息则意味着不用再次注册就能继续提供服务。
上面的配置文件中的最后两个配置的作用就是关闭自我保护
在这里插入图片描述

扩展

在实际生产项目中,服务数量巨多,为了安全起见,须配置集群,服务注册中心也不例外。Eureka 服务注册中心,同其他服务注册中心一样,支持高可用配置。Eureka Server 的高可用,其实就是每个服务注册中心将自己作为服务向其他服务注册中心注册自己,这样就形成了一组相互注册的服务注册中心,以实现服务清单的相互同步,达到高可用的效果。
再建几个 maven 项目,在配置文件中修改地址或端口,并去掉以下两个配置就行,或者该为 true。

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

ps:当然,以后的各个微服务也应当同时注册到所有服务注册中心。

博主经验尚浅,也暂无微服务相关项目经验,如果理解不到位甚至理解错误,希望评论区讨论,请多指教!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值