springcloud 之 Eureka

1、简介

       在分布式微服务里面CAP 定理又称CAP 原则,指的是在一个分布式系统中, 一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)(这个特性是不可避免的),这三个要素最多只能同时实现两点,不可能三者兼顾,只能是AP和CP。

        zk(CP,注重数据一致性),Eureka注重可用性(AP)

2、Eureka 使用
2.1、Eureka服务端

        eureka注册中心,可以注册自己也可以注册别人。

1、引入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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
        <!-- 实质还是springboot 项目-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
	</parent>
    
    <groupId>com.bjpowernode</groupId>
    <artifactId>eureka-server</artifactId>
    <version>1.0</version>
    <name>eureka-server</name>
    <description>Demo project for Eureka-Server</description>
    <properties>
        <java.version>1.8</java.version>
        <!-- 这里控制了springcloud 的版本-->
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
	</properties>
    <dependencies>
<!-- eureka 注册中心的服务端-->
        <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>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
<!-- 依赖管理,cloud 的依赖-->
    <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、主启动类

@SpringBootApplication
@MapperScan(basePackages = {"com.test.mapper"})
@EnableEurekaServer  // eureka-server 服务端注解
public class AppEurekaPlusMain {
    public static void main( String[] args ) {
        SpringApplication.run(AppEurekaPlusMain.class, args);
    }
}

3、配置文件 application.yml

server:
	port: 8761
spring:
	application:
		name: eureka-server
eureka:
	client:
		service-url: # eureka 服务端和客户端的交互地址,集群用逗号隔开,集群中没有主从概念,节点都是对等的,只要有一台存活,服务就能注册和调用。
			defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka
		fetch-registry: true    # 是否拉取服务列表
# Eureka-Server 不仅提供让别人注册的功能,它也能注册到别人里面,自己注册自己所以,在启动项目时,默认会注册自己,我们也可以关掉这个功能。
		register-with-eureka: true      # 是否注册自己(单机eureka 一般关闭注册自己,集群注意打开)
	server:
		eviction-interval-timer-in-ms: 30000   # 清除无效节点的频率(毫秒)--定期删除
		enable-self-preservation: true #server自我保护机制,避免因网络原因造成误剔除,生产中建议打开
		renewal-percent-threshold: 0.85 #85%,如果在一个机房的client端,15分钟内有85%的client没有续约,那么则可能是网络原因,认为服务实例没有问题,不会剔除他们,宁可放过一万,不可错杀一个,确保高可用
	instance:
		hostname: localhost # 服务主机名称
		instance-id:${eureka.instance.hostname}:${spring.application.name}:${server.port} # 实例id
		prefer-ip-address: true # 服务列表以ip 的形式展示
		lease-renewal-interval-in-seconds: 10 # 表示eureka client 发送心跳给server 端的频率
		lease-expiration-duration-in-seconds: 20 #表示eureka server 至上一次收到client 的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该实例
2.2、Eureka 客户端

1、引入依赖,pom.xml文件中添加依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2、主启动类:

@SpringBootApplication
@MapperScan(basePackages = {"com.test.mapper"})
@EnableEurekaClient    // eureka-client 客户端注解
public class AppEurekaPlusMain {
    public static void main( String[] args ) {
        SpringApplication.run(AppEurekaPlusMain.class, args);
    }
}

3、配置文件 application.yml

server:
	port: 8080
spring:
	application:
		name: eureka-client
eureka:
	client:
		service-url: #eureka 服务端和客户端的交互地址,集群用,隔开
			defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka
		fetch-registry: true #拉取服务列表
		registry-fetch-interval-seconds: 5 # 表示eureka-client 间隔多久去拉取服务注册信息
	instance:
		hostname: localhost # 服务主机名称
		instance-id:${eureka.instance.hostname}:${spring.application.name}:${server.port} # 实例id
		prefer-ip-address: true # 服务列表以ip 的形式展示
		lease-renewal-interval-in-seconds: 10 # 表示eureka client 发送心跳给server 端的频率
		lease-expiration-duration-in-seconds: 20 #表示eureka server 至上一次收到client 的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该实例
3、解释说明

        Eureka 服务端是提供注册中心的功能,使用 Eureka 客户端的一个个微服务可以注册到 Eureka 服务端,Eureka 服务端可以集群部署,不分主次节点,节点之间地位平等,可以自己注册自己。通过配置设置Eureka 服务端和客户端相应参数。

4、总结

        本文介绍 Eureka 注册中心的使用,相对来说,使用较少,使用方式了解即可。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值