Spring Cloud 分布式入门 使用 Spring Cloud Eureka 服务治理以及高可用

Java中Spring Cloud的服务监控与治理方法 随着微服务架构的普及,服务数量呈指数级增长,服务间的依赖关系也变得越来越复杂。在这样的背景下,服务监控与治理成为保证系统稳定性的关键环节。本文旨在全面介绍Spring Cloud框架中提供的服务监控与治理解决方案,帮助开发者构建高可用、易维护的分布式系统。首先介绍服务监控与治理的核心概念然后深入分析Spring Cloud的相关组件和技术原理接着通过实际案例展示具体实现方法最后探讨最佳实践和未来发展趋势服务监控:对微服务运行状态的实时观测和度量数据收集服务治理。 阅读详情

    Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分, 它基于 NetflixEureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。 Spring Cloud 通过为Eureka 增加了 Spring Boot 风格的自动化配置,我们只需通过简单引入依赖和注解配置就能让 Spring Boot 构建的微服务应用轻松地与 Eureka 服务治理体系进行整合。

Eureka包含

    Eureka服务端: 服务注册中心

    Eureka客户端: 处理服务的注册和发现

基础架构

    服务注册中心: Eureka提供的服务端,提供服务注册与发现功能。

    服务提供者: 提供服务的应用,将自己提供的服务注册到Eureka,以供其他应用发现。

    服务消费者: 消费者应用从服务注册中心获取服务列表,从而使消费者可以知道去何处调用所需要的服务。

入门代码

Eureka服务端编写

   1、新建一个Spring Boot项目,名为eureka-server,引入依赖

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

    2、配置文件

spring:
  application:
    name: eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
    register-with-eureka: false # 不向注册中心注册自己
    fetch-registry: false # 不检索服务
server:
  port: 8761

   3、在启动类上添加注解 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

ok,启动eureka-server

打开浏览器访问 http://localhost:8761/

 可以看到Eureka服务端已经完成了。就这么简单

Eureka客户端编写

 1、新建一个Spring Boot项目,名为eureka-client,引入依赖

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

记住一定要引入spring-boot-starter-web依赖,,不然项目启动不起来自动停止。

  2、配置文件

spring:
  application:
    name: eureka-client
server:
  port: 8080
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

  3、启动类配置注解 @EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

 启动eureka-client客户端,刷新eureka服务端页面,已经显出注册的客户端了

ok,客户端也编写完成了。

到此就结束了,

但真的就结束了吗???

有人要问了,Spring Cloud Eureka服务端和客户端都写好了,但是怎么使用呢?

下面就讲各服务间怎么调用。

新建个controller层

@RestController
public class HelloController {

    @RequestMapping(value = "/hello")
    public String index() {
        System.out.println("请求到了");
        return "hello";
    }
}

通过访问 http://localhost:8080/hello  可以看到正常返回数据

新建一个Spring Boot项目,名为eureka-consumer 配置和eureka-client类似,端口改一下,这里改为8085,启动项目

再看一下eureka服务端的管理平台,eureka-consumer已经注册了。

微服务间调用这里讲两种方式,一种是通过RestTemplate,一种是使用Spring Cloud Feign

在这之前要说一下Spring Cloud Ribbon

Ribbon是一个基于HTTP和TCP的客户端负载均衡

如果微服务布置多台,就需要Ribbon进行负载均衡了。

eureka-client改下端口再启动一个, 可以看到这里已经有两个实例了。

引入Ribbon依赖

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

RestTemplate 方式

RestTemplate实现了对HTTP请求的封装处理

在启动类上加入创建RestTemplate  bean

@Bean
@LoadBalanced // 负载均衡注解
public RestTemplate restTemplate() {
    return new RestTemplate();
}

创建ConsumerController,

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/eureka-consumer")
    public String helloConsumer() {
        String result = restTemplate.getForEntity("http://eureka-client/hello", String.class).getBody();
        return result;
    }
}

访问 http://localhost:8085/eureka-consumer  正常数据返回

Ribbon既然是负载均衡工具,那当然也要测试一下了。eureka-client改下端口在起一台,然后访问接口多次,通过打印日志可以看出两台eureka-client都有被访问,而且是以线性轮询的方式被访问,Ribbon默认是线性轮询方式负载均衡。

 Spring Cloud Feign 方式

  Spring Cloud Feign是对RestTemplate进一步封装,由它来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它。

快速入门

  1、添加依赖

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

  2、启动类添加注解 @EnableFeignClients

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class RibbonConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonConsumerApplication.class, args);
    }
}

  3、定义接口ServiceClient  并添加注解@FeignClient("eureka-client") 参数为在Eureka注册的名称

@FeignClient("eureka-client")
public interface ServiceClient {

    @RequestMapping(value = "/hello")
    String index();
}

  4、在controller中注入ServiceClient  然后调用方法即可

@RestController
public class ConsumerController {
    
    @Autowired
    private ServiceClient serviceClient;

    @RequestMapping(value = "/eureka-consumer2")
    public String helloConsumer2() {
        String result = serviceClient.index();
        return result;
    }
}

访问  http://localhost:8085/eureka-consumer2  也能正常返回数据

 

Eureka的高可用,通过互相注册的方式实现。这里启动三台Eureka服务端信息如下

eureka-server1  8761

eureka-server2  8762

eureka-server3  8763

配置信息入下

// eureka-server1的配置信息
spring:
  application:
    name: eureka-server1
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka,http://localhost:8763/eureka
    register-with-eureka: false
    fetch-registry: false # 不检索服务
server:
  port: 8761



// eureka-server2的配置信息
spring:
  application:
    name: eureka-server2
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8763/eureka
    register-with-eureka: false
    fetch-registry: false # 不检索服务
server:
  port: 8762



// eureka-server3的配置信息
spring:
  application:
    name: eureka-server3
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    register-with-eureka: false
    fetch-registry: false # 不检索服务
server:
  port: 8763

eureka-client保持配置不变,依然注册在http://localhost:8761/eureka/ 上

浏览器分别访问 http://localhost:8761/    http://localhost:8762/  http://localhost:8763/,查看到这三台里的服务注册信息都有eureka-client, 那是因为这三台Eureka服务端之间互相注册,所以都有eureka-client的注册信息。

Eureka服务端配置了高可用,下面就是客户端配置了。

修改eureka-client的配置文件

spring:
  application:
    name: eureka-client
server:
  port: 8081
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/

这样就可以注册三台Eureka服务端了。

到这里是Spring Cloud Eureka入门和高可用讲完了。

Spring Cloud构建微服务架构(一):服务注册与发现(Eureka) 1. Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Cloud 全家桶: - Spring Cloud 服务注册中心 Spring Cloud... 阅读详情

相关推荐

后端必备:Spring Cloud Eureka的服务发现配置最佳实践

本文旨在为Java后端开发者提供Spring Cloud Eureka的全面配置指南和最佳实践。我们将覆盖从基础概念到高级配置的完整知识体系,特别关注生产环境中Eureka的优化配置和常见问题的解决方案。文章首先介绍Eureka的基本概念和架构原理,然后深入探讨服务注册与发现的实现细节。接下来提供详细的配置指南和代码示例,最后讨论高级主题如高可用配置、性能优化和安全加固。服务注册(Service Registration): 服务实例启动时向服务注册中心注册自身信息的过程。

架构师的AI之路,分享AI应用开发架构的学习与实践。 1270

spring boot eureak client为什么需要引入spring-boot-starter-web

<spring-boot.version>2.1.6.RELEASE <spring-cloud.version>Finchley.M9 <!-- spring boot web项目核心包 --> <dependency> <groupId>org.springframework.boot</groupId&g...

weixin_39802387的博客 651

9、spring cloud 微服之间的调用openfeign

在分布式中微服之间的调用通过openfeign进行调用,openfeign集成了Ribbon和Eureka以及Spring Cloud LoadBalancer,提供负载平衡的HTTP客户端 我们以项目magServer作为服务提供者 userServer作为服务消费端 在userServer的pom.xml中添加openfeign包 <dependency> <groupId>org.springframework.cloud</.

a13826548428的博客 309

Spring Cloud Eureka + Openfeign 搭建

要开新项目啦,哈哈哈 这回是个分布式微服务项目,所以先来实践一下。 架构使用spring boot2.1.1,  jdk8,其实想用JDK11的,但是考虑到后面有可能会应用到项目中,所以直接JDK8吧。 IDE用STS4. 1,注册中心eureka 现在的微服务不能保证每个节点永远不出现问题,所以我们需要注册和发现中心,我理解eureka主要作用就是进行微服务的自动注册和发现,以及心跳检测...

maybe的博客 2119

Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 2.1 Spring Cloud Eureka 入门

第二章 Spring Cloud Eureka Netflix Eureka是Netflix开源的一款基于REST提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。从2012年9月再Github上发布1.1.2版本依赖,目前已经发布了239个Release版本,目前最新版本是2019年6月14日发布的v1.9.12版本。期间Netfl...

极客挖掘机 4636

SpringCloud系列使用Netflix Eureka进行服务治理

Spring Cloud是一个分布式的整体解决方案的框架。基于Spring Boot开发。Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,负载,网关,消息总线,集群管理,安全管理,分布式锁,分布式事务等等)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。...

Nicky's blog 3907

关于SpringCloud项目使用Openfeign分布式调用的相关问题

SpringCloud项目分布式调用相关问题

老照片 978

UE5实战:用Cesium插件打造逼真湖泊效果(附波纹参数调优技巧)

本文详细介绍了在Unreal Engine 5中利用Cesium插件创建逼真区域水效果(如湖泊)的实战流程。重点解析了通过材质层混合机制,精细调整波纹参数(如DistanceScale、NearScale)来模拟不同水体状态,并提供了从资产创建、地形配置到视觉调优的一站式解决方案,帮助开发者高效实现非海洋水域的动态视觉效果。

weixin_29209805的博客 160

第四章:spring cloud分布式开发之openfeign

Spring Cloud中的openfeign整合了ribbon的负载均衡和熔断机制,还实现了微服务之间的相互调用 这章我们主要讲解openfeign实现一个feign客户端调用主客户端的接口 首先我们在原有项目基础上新建一个子项目moudule 起名为sc-feign pom文件内容为: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

前后端杂货铺 229

关于使用perfetto(systrace)对卡顿进行分析-实战分析

本文主要讲述了我在使用perfetto分析小米中桌面滑动卡顿的方法以及步骤。 这是我用的trace文件: 链接:https://pan.baidu.com/s/11EhCvu0pfR7Qfu6bDf_GLw?pwd=ic43 提取码:ic43Perfetto 是用于性能检测和跟踪分析的生产级开源堆栈。它提供用于记录系统级和应用级跟踪、本机 + java 堆分析、使用 SQL 分析跟踪的库以及用于可视化和浏览多 GB 跟踪的基于 Web 的 UI 的服务和库。在地址栏输入https://ui.perfe

qq_40494059的博客 1万+

PID调参避坑手册:用APM/PX4飞控让无人机稳如老狗

本文提供了一份针对APM/PX4飞控的PID调参实战指南。文章从理解PID控制原理出发,详细解析了级联控制结构,并给出了从内环到外环的五步调参流程与数据日志分析方法,帮助无人机爱好者避开常见误区,实现稳定飞行。

red88的博客 875

微服务,Spring Cloud 和 Eureka:服务发现工具

本文介绍了分布式架构中的微服务实现,重点讲解了SpringCloud框架和Eureka服务注册中心。主要内容包括:微服务架构的特点、SpringCloud版本管理、Eureka服务端与客户端的搭建与配置、Eureka集群原理与自我保护机制、SpringBoot应用的优雅关闭,以及分布式系统的CAP理论。文章通过具体示例展示了如何搭建单机版Eureka服务器和客户端,并详细说明了服务注册、续约、取消等核心交互过程,最后阐述了Eureka作为AP系统的特性及其在分布式环境中的应用价值。

2303_79101629的博客 2943

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

实战Spring Cloud微服务治理组件Eureka

文章目录背景一、Eureka Server搭建1.1 创建Spring Cloud工程1.2 修改启动类1.2 增加Eureka配置1.3 启动Eureka服务器二、搭建Eureka服务提供者2.1 创建商品服务项目2.2 修改启动类2.2 增加Eureka Client配置2.3 编写商品服务程序2.4 启动商品服务三、搭建Eureka服务消费者3.1 创建用户服务项目3.2 修改启动类3.3 配置Eureka消费者3.4 创建Restful测试接口,在接口中调用商品微服务3.5 调用Restful接口进

我的博客 854

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储

本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。

weixin_30363285的博客 376

HSPICE用户必看:用Sigrity Broadband SPICE解决复杂封装建模的3个技巧

本文为HSPICE用户分享了三个使用Sigrity Broadband SPICE解决复杂封装建模难题的实战技巧。通过将宽频带S参数高效转换为时域SPICE模型,能显著提升仿真速度、保障收敛性,并精准分析谐振、返回路径不连续及超多端口PDN等关键问题,助力实现高效稳定的系统级信号与电源完整性分析。

metal的博客 601

Spring Cloud Netflix Eureka:从微服务基础到高可用集群实战

本文系统介绍了SpringCloud Netflix Eureka在微服务架构中的核心作用与实践方法。文章首先回顾了从单体架构到微服务的演进过程,对比分析了不同架构的优缺点。随后详细讲解了Eureka的服务注册与发现机制,包括其AP架构特性、自我保护机制等核心原理。通过实操演示了单机版Eureka Server搭建、Client注册流程,以及高可用集群的配置方法。文章还特别强调了版本兼容性、优雅关闭等关键注意事项,并提供了生产环境的使用建议。系统性地展示了Eureka从理论到实践的完整知识体系。

a15585391608的博客 1566

基于STM32L4XX、HAL库的BQ27520YZFR-G4 电量监测计驱动程序设计

(可选) -------- TS (Pin 3) 连接温度传感器。(可选) -------- BAT (Pin 2) 连接电池正极。// 假设I2C1已初始化。// 每5秒更新一次。// 短暂延时确保数据准备好。支持Impedance Track™技术,提供高精度电量测量。适用于便携式设备如智能手机、平板电脑等。// 可添加初始化验证代码。// 初始化BQ27520。// 发送控制子命令。// 配置模拟滤波器。// 配置数字滤波器。// I2C1初始化函数。

zhusl6688的博客 245

Spring cloud之服务治理:Spring cloud Eureka

Spring cloud中的服务治理,大致分为两部分:服务注册,服务发现。 服务治理是微服务架构中最核心最基础的模块,主要用来实现各个微服务模块之间的自动化注册与发现。在传统的架构中,随着服务或者模块原来越多,需要大量的静态配置来维护实例清单。这种状况,无论对于开发还是运维,都是比较头疼的事。为了解决微服务架构中服务实例维护问题,产生了大量的服务治理框架和产品,这些框架和产品都是围绕着服务注册与...

jialiang的博客 305

Nature、science、cell旗下刊物

Nature\science\cell子刊说明

计算机视觉 5608

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Cloud服务治理精讲

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》、(架构篇)、作者、清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 939

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring Cloud微服务学习笔记之服务治理 Eureka

服务治理Eureka一、Spring Cloud Eureka的使用1.1 Eureka Server的使用1.2Eureka Client的使用1.3Eureka的高可用二、Eureka在分布式中的地位与原理2.1基础的微服务组件2.2 两大主流实现框架2.3 Spring Cloud是什么 一、Spring Cloud Eureka的使用 服务治理组件Spring Cloud Eureka是...

weixin_39356798的博客 404

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring Cloud 入门 -- 搭建Eureka注册中心 实现服务者与消费者的服务调用

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!程序员代码面试指南 IT名企算法与数据结构题目最优解这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!

q16974058的博客 1130

Eureka | Spring Cloud服务治理

注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

m0_59044499的博客 1060

Spring Cloud学习之四 Eureka组件 服务治理

目录 一、版本介绍 二、Eureka介绍 三、搭建服务注册中心 四、注册服务提供者 五、高可用注册中心 六、服务发现与消费 一、版本介绍 SpringBoot版本2.1.9;SpringCloud版本Greenwich.SR3 二、Eureka介绍 Spring Cloud Eureka 是使用Netfix Eureka 来实现服务注册和发现,其不仅包含服务端也包含客户端。 ...

伟哥 301
上一篇: SpringBoot-Dubbo 使用LCN-分布式事务管理
下一篇: 分布式配置中心 Spring Cloud Config
xxley
博客等级 码龄10年 24粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值