前言

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. 抽离BlazorWebview中的.Net与Javascript的互操作库

    做这个的目的是想使用 Blazor 中的 Javascript 与 C#中的互操作,但是又不需要加载 Blazor 整个类库,另外 BlazorWebView 组件没有支持直接通过 Http 协议加载 ...

  2. 基于UPD的快速局域网聊天室

    UPD与TCP对比: UDP是无连接的协议,也不保证可靠交付,只在IP数据报服务之上增加了很少的功能,主要是复用和分用以及差错检测的功能.这适用于要求源主机以恒定速率发送数据,允许网络拥塞时丢失数据, ...

  3. Jmeter接口关联总结

    1.新建测试计划 输入相关接口如下: 本文以接口A(Phone Login)和接口B(Get ticket)两个接口为例进行关联 这两个接口的关系是:先执行接口A获取token作为参数,然后执行接口B ...

  4. ShardingSphere 解决关联表查询问题的详细方案

    一.基础概念 在分库分表场景下,关联表(JOIN)查询的复杂性主要源于数据分布在不同的数据库或表中.ShardingSphere 通过 绑定表(Binding Table) 和 广播表(Broadca ...

  5. Spring AOP面向切面编程 通知类型

    Spring AOP面向切面编程 通知类型 通知分为: 前置通知 执行方法之前通知 后置通知 执行方法之后通知 异常通知 相当于cache里面的内容 最终通知 相当于finally 环绕通知 前四种通 ...

  6. 从零到一:利用金仓社区数据,LoRa微调与Spring AI 构建私有化千问模型

    上次我们在Coze平台上成功搭建了一个针对金仓问题的解决助手.这个智能体的核心工作流程相对简单:每次它通过HTTP接口调用插件,在金仓平台内部进行搜索,随后利用大模型的推理能力对查询结果进行分析,从而 ...

  7. RocketMQ半消息对消费者不可见是如何实现的?——事务消息机制揭秘

    首发于工号[BiggerBoy],原文链接 --"半消息藏在这里,但为什么你偷看也没用?" 上篇<RocketMQ系列笔记(三):消息模型与高阶玩法,顺序事务消息拿捏指南&g ...

  8. 爬虫入门(urllib与requests)

    urllib与requests 一.urllib的学习 学习目标 了解urllib的基本使用 1.urllib介绍 除了requests模块可以发送请求之外, urllib模块也可以实现请求的发送,只 ...

  9. 【MySQL】字符串截取函数substring_index

    业务场景描述:如何根据分隔符切割字符串?使用函数SUBSTRING_INDEX()根据指定分隔符切割,分隔符可以是字符串等. 语法:substring_index(str,delim,count) 说 ...

  10. 长短期记忆(LSTM)网络模型

    一.概述   长短期记忆(Long Short-Term Memory,LSTM)网络是一种特殊的循环神经网络(RNN),专门设计用于解决传统 RNN 在处理长序列数据时面临的梯度消失 / 爆炸问题, ...