Spring Cloud (三) - Eureka

Eureka

Eureka概述:

管理服务,核心是有一个服务注册表,这个服务注册表会依据心跳机制来维护

在这里插入图片描述

  1. Register:client通过发送http请求将自己的ip,port等发送到server中,server会将这些信息保存到服务注册表中
  2. Renew:client通过心跳机制来告诉server自己存活,client会每隔30s向server发送一次http请求,向server说明自己存活,当server检测到一个client 90s没有发送请求,并且没有进入保护模式,那么会将这个client清除掉
  3. Get Registy:client会每隔30s从server拉去注册表,会与本地缓存的列表进行合并
  4. Make Remote Call:服务之间进行调用可使用Feign和RestTemplete
  5. Cannel:client下线
  6. Replicate:Server集群之间的数据同步

保护机制:EurekaServer在运行期间会统计EurekaClient心跳失败的比例,若15分钟内失败比例大于85%,会将这个EurekaClient保护起来,不会清除这个服务

Eureka特点:

  1. 可以自己向自己注册
  2. 注册到注册中心的服务,在使用Feign或restTemplete跨服务调用时不需要得到其真是地址,只需要
    根据注册到注册中心的服务名称进行通讯
  3. 可以实现高可用,一个服务可以同时注册到多个注册中心,指的是服务一直可用,而且是正常的相应时间

注册中心、提供者、消费者关系

顾名思义提供者将服务注册到注册中心,消费者在注册中心的管理下选择相应的服务进行消费,注册中心来管理服务

服务注册中心搭建:

  1. pom文件导包:
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
		<relativePath/>
	</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.SR5</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-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>
  1. 配置文件中配置
# 解决windows下运行时无法识别主机名的问题
spring.boot.admin.client.prefer-ip=true
#服务名称
spring.application.name=eureka-server
#端口号
server.port=9192
eureka.instance.hostname=127.0.0.1
## 是否注册自身到Eureka服务器
eureka.client.register-with-eureka=false
## 是否从Eureka上获取注册信息
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
#关闭自我保护,保证不可用服务可以及时踢出
eureka.server.enable-self-preservation=false

  1. 在启动类添加注解@EnableEurekaServer

消费者配置:

  1. pom配置,直接使用idea创建即可,需要的其他的jar包会自动配置

在这里插入图片描述

  1. 启动类添加@EnableEurekaClient和@EnableFeignClient注解
  2. 配置文件中配置:
#端口号配置
server.port=8186
#注册中心地址配置
eureka.client.service-url.defaultZone=http://ip:port/eureka/
#注册到注册中心的名称
spring.application.name=client
  1. 使用
//接口
@FeignClient(value = "provider", fallback = UserServiceHystrix.class)//提供者的注册名称
public interface UserService {
    //重写提供者的controller层,必须一致否则访问不通
    @RequestMapping(value = “/user/init", method = RequestMethod.GET)
    HttpResult getInit(@RequestParam(value = "code",required = false)String code);
}
//需要重写UserService
@Component
public class UserServiceHystrix implements UserService {

    @Override
    public HttpResult getInit(String code,String name) {
        HttpResult httpResult=new HttpResult();
        httpResult.setCode(ResultCode.DEF_ERROR.getCode());
        httpResult.setMessage(CommonConstant.EXTERNALL_ERROR);
        return httpResult;
    }
}
	说明:
	实际上使用Feign是不用重写的,在这里重写的原因是接口中使用了fallback,使用fallback的目的是进
	行容错,就是若调用另一个工程时,调用的工程报错了,就会调用重写的就行容错,具体的会在后面的
	Hystrix中具体介绍
  1. 在使用的工程中注入UserService ,调用方法即可

提供者配置:

与消费者配置相同,不需要配置@FeignClient相关内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值