ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springCloud—Eureka知识点总结

2021-05-29 20:33:35  阅读:171  来源: 互联网

标签:知识点 服务 springCloud eureka 注册 ip Eureka cloud


前言:学习挺折磨人的,不过撑过去学完看看学完的“战利品”也挺爽的。(手动狗头)

springcloud

废话不多说先上官网

Spring Cloud简介

Spring Cloud将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。

Note:

1.springCloud和Springboot上版本是有要求的。见博客

2.微服务中需要一个父项目同时有多个子项目

Eureka注册中心

问题提出:

user-service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦。
简单点说就是需要有工具帮忙自动管理地址!

解决:Eureka做什么?

Eureka负责管理、记录服务提供者的信息。
服务调用者无需自己寻找服务,而是把自己的需求告诉 Eureka,然后Eureka会把符合你需求的服务告诉你。
同时,服务提供方与Eureka之间通过 “心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服 务列表中剔除。 这就实现了服务的自动注册、发现、状态监控。

原理
在这里插入图片描述
编写Eureka所需的依赖

<!--作用: 能进入Eureka界面 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>

<!--作用: 服务注册(提供服务端写) -->
<!-- Eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<!--作用: 服务发现(客户端) -->
<!-- Eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

启动类需要添加@EnableDiscoveryClient

//提供服务端
@SpringBootApplication
@MapperScan("com.lxs.user.mapper")
@EnableDiscoveryClient //开启Eureka客户端发现功能
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}

//客户端(即comsumer)
@SpringBootApplication
@EnableDiscoveryClient // 开启Eureka客户端
public class UserConsumerDemoApplication {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate(new OkHTTP3ClientHTTPRequestFactory());
}
public static void main(String[] args) {
SpringApplication.run(UserConsumerDemoApplication.class, args);
}
}

Eureka详解:

Eureka架构中的三个核心角色:

  • 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server
  • 服务提供者 提供服务的应用,可以是Spring Boot应用,也可以是其它任意技术实现,只要对外提供的是REST风格服务即可。本例中就是我们实现的user-service
  • 服务消费者 消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。本例中就是我们实现的consumer

高可用的Eureka Server

如果有三个Eureka,则每一个EurekaServer都需要注册到其它几个Eureka服务中。
例如:有三个分别为10086、10087、10088,则:
10086要注册到10087和10088上
10087要注册到10086和10088上
10088要注册到10086和10087上

Eureka客户端工程
在这里插入图片描述

user-service 服务提供

  • 服务地址使用ip方式
    服务提供者在启动时,会检测配置属性中的 eureka.client.register-with-erueka=true 参数是否为true。默认注册时使用的是主机名或者localhost,如果想用ip进行注册,可以在 user-service 中添加配置如下:
eureka:
instance:
ip-address: 127.0.0.1 # ip地址
prefer-ip-address: true # 更倾向于使用ip,而不是host名
  • 续约
    在注册服务完成以后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer:“我还活着”。这个我们称为服务的续约(renew);有两个重要参数可以修改服务续约的行为;可以在 user-service 中添加如下配置项:
eureka:
instance:
lease-expiration-duration-in-seconds: 90
lease-renewal-interval-in-seconds: 30

consumer-demo 服务消费

  • 获取服务地址的频率
    -当服务消费者启动时,会检测 eureka.client.fetch-registry=true 参数的值,如果为true,则会从Eureka Server服
    务的列表拉取只读备份,然后缓存在本地。

Eureka服务端工程 eureka-server

  • 失效剔除
  • 自我保护
    当一个服务未按时进行心跳续约时,Eureka会统计最近15分钟心跳失败的服务实例的比例是否超过了85%,Eureka就会把当前实例的注册信息保护起来,不予剔除。一 般开发阶段关闭自我保护
eureka:
server:
enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)

标签:知识点,服务,springCloud,eureka,注册,ip,Eureka,cloud
来源: https://blog.csdn.net/zhang_an_cheng/article/details/117389946

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有