前言

Eureka是一个注册中心,在以前的记录中,两个服务之间的调用需要使用硬编码的方式,即把ip和端口号等地址写死在程序中,使用Eureka可解决此问题,但不知能解决这个问题,还有其他的作用。

Eureka的作用

1.消费者该如何获取服务提供者的信息?

服务提供者启动时,向Eureka注册自己的信息

eureka保存这些信息

消费者根据服务名称向eureka拉取提供者信息

2.如果有多个服务提供者,消费者该如何选择?

服务消费者利用负载均衡算法,从服务列表中选择一个

3.消费者如何感知服务器供着健康状态?

服务提供者会每隔30s向Eureka注册中心发送心跳请求,报告健康状态

eureka会更新记录服务器列表信息,心跳不正常的进行剔除

消费者就可以拉取到最新的信息

搭建Eureka服务

创建项目

引入依赖

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>3.1.1</version>
</dependency>

编写main函数

package ptiv.sinoam.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class,args);
}
}

编写配置文件(application.yml)

server:
port: 9003 spring:
application:
name: eureka-server eureka:
client:
service-url: # eureka徐娅注册自己的信息
defaultZone: http://127.0.0.1:9003/eureka

启动eureka

发现报错Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

这是因为该项目在父级pom中引入了jdbc,springboot启动时会自动装配,这个时候发现没有配置数据库所以会报错,在main方法中添加以下代码即可:

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

即可启动成功,打开页面可以看到

服务注册

将demo-user注册到eureka

引入依赖

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

编写配置文件

添加以下代码即可

eureka:
client:
service-url: # eureka徐娅注册自己的信息
defaultZone: http://127.0.0.1:9003/eureka

使用同样方式将demo-order注册到eureka中,启动后会看到注册的服务列表

如果同一个服务启动多个会怎样

复制一个user服务,然后通过-Dserver.port=9004修改端口

启动后发现user多了服务

Eureka服务发现

在消费者中修改写死的url,用服务名代替ip和port

        //调用demo-user里面的请求
// String url = "http://localhost:9001/demouser/user/test";
//用服务名进行替换
String url = "http://demo-user/demouser/user/test";

然后添加负载均衡

找到restTemplate添加注解

    /**
* 创建RestTemplate并注入Spring容器
* @return
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}

重启order项目,调用接口后

不断刷新后,可以在两个user项目的日志中发现都有走,说明实现了负载均衡

结束

1.搭建Eureka

引入server依赖

添加@EnableEurekaServer注解

在配置文件中配置eureka地址

2.服务注册

引入client注解

在配置文件中配置eureka地址

3.服务发现

引入client注解

在配置文件中配置eureka地址

在restTemplate添加@LoadBalanced实现负载均衡

学习spring cloud记录4-Eureka的更多相关文章

  1. Spring Cloud 入门 之 Eureka 篇(一)

    原文地址:Spring Cloud 入门 之 Eureka 篇(一) 博客地址:http://www.extlight.com 一.前言 Spring Cloud 是一系列框架的有序集合.它利用 Sp ...

  2. Spring Cloud 系列之 Eureka 实现服务注册与发现

    如果你对 Spring Cloud 体系还不是很了解,可以先读一下 Spring Cloud 都有哪些模块 Eureka 是 Netflix 开源的服务注册发现组件,服务发现可以说是微服务架构的核心功 ...

  3. 基于Spring cloud Ribbon和Eureka实现客户端负载均衡

    前言 本案例将基于Spring cloud Ribbon和Eureka实现客户端负载均衡,其中Ribbon用于实现客户端负载均衡,Eureka主要是用于服务注册及发现: 传统的服务端负载均衡 常见的服 ...

  4. spring cloud config与eureka配合使用

    前面两篇介绍了Spring Cloud Config服务端和客户端的简单配置,本篇介绍Spring Cloud Config与Eureka配合使用 前言 默认情况下,配置客户端启动时,都是通过配置属性 ...

  5. Spring Cloud中,Eureka常见问题总结

    Spring Cloud中,Eureka常见问题总结. 1 eureka.environment: 指定环境 参考文档: 1 eureka.datacenter: 指定数据中心 参考文档: 使用配置项 ...

  6. 【spring cloud】spring cloud分布式服务eureka启动时报错:java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V

    spring cloud分布式服务eureka启动时报错:java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApp ...

  7. SpringCloud学习笔记(2)----Spring Cloud Netflix之Eureka的使用

    1.  Spring Cloud Netflix Spring Cloud Netflix 是Spring Cloud 的核心子项目,是对Netflix公司一系列开源产品的封装.它为Spring Bo ...

  8. kubernetes部署spring cloud注册中心 Eureka

    系统环境 java JDK 1.8 Docker 18.09.6 kubernetes 1.16 创建Eureka Server 1.Maven引入相应的jar 引入 SpringBoot 做基础框架 ...

  9. Spring Cloud系列之Eureka服务治理

    写在前面 Spring Cloud Eureka是基于Netflix Eureka做的二次封装.主要包含两部分: 服务注册中心 eureka server 服务提供者 eureka client ps ...

  10. Spring Cloud认知学习(一):Spring Cloud介绍与Eureka使用

    目录 Spring Cloud的介绍 微服务的介绍 Spring Cloud出现的原因: 常见场景: 微服务的优劣势: Spring Cloud版本问题 版本介绍 与Spring Boot版本对应关系 ...

随机推荐

  1. redis的作用:高性能和高并发

    一.高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作mysql,半天查出来一个结果,耗时600ms.但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用 ...

  2. 通过PHP实现获取访问用户IP

    在php中自带了一个非常的简单的获取IP地址的全局变量,很多初学都获取IP都使用它了,但是对于这些我们一般用法是满足了,但是对于要求高精度这个函数还是不行的. 这个是最简单的方法,对于开了透明代理之类 ...

  3. grafana最新任意文件读取

    一.Grafana简介 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知.它主要有以下六大特点: 1.展示方式:快速灵活的客户端图表,面板插 ...

  4. 21.7K star!全流程研发项目管理神器,开源免费不限商用!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 「禅道开源版」作为国内首个开源项目管理软件,已为100万+团队提供专业研发管理解决方案.从需 ...

  5. SpringBoot错误处理

    SpringBoot错误处理 1 SpringMVC写法 1.1 在单独的Controller写一个处理异常的方法处理 @Slf4j @RestController public class Hell ...

  6. 【经验】VMware|Win11的Ubuntu虚拟机启动虚拟化,报错此平台不支持虚拟化的 Intel VT-x/EPT(方案汇总+自己的解决方案)

    2024/04/24说明:这篇暂时修改为粉丝可见,因为正在冲粉丝量,等到我弄完了粉丝量的要求,我就改回来!不方便看到全文的小伙伴不好意思!! 我开虚拟化是为了在虚拟机中运行VirtualBox,如果不 ...

  7. 如何用IDEA 生成JavaDoc新版

    用IDEA生成JavaDoc 左上角四横杠点击,唤出工具栏(快捷键 alt+\) 左键单击工具选项 下拉框选 生成Javadoc 在弹出框选好参数立刻导出啦 1.JavaDoc 作用域: 选要导出的文 ...

  8. 基于Photon与Unreal Engine的VR协作平台开发实战教程

    引言 在数字化转型加速的今天,虚拟现实(VR)技术正在重塑远程协作模式.本教程将带领读者从零开始构建一个支持多人协同的VR办公平台,通过Unreal Engine 5的强大渲染能力与Photon引擎的 ...

  9. RBMQ案例五:主题模式

    在之前的教程中,我们改进了日志系统.我们没有使用只能进行虚拟广播的扇出交换器,而是使用了直接交换器,并获得了选择性接收日志的可能性. 虽然使用直接交换改进了我们的系统,但它仍然有局限性--它不能基于多 ...

  10. AWK用法全解

    一.awk介绍 awk是Linux自带的一个逐行扫描的文本处理工具,支持正则表达式.循环控制.条件判断.格式化输出.AWK自身带有一些变量,可以在书写脚本时调用. 二.基本语法格式 2.1.在shel ...