Spring Cloud -- 1 服务注册中心,服务注册与发现

Nacos学习 阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。(用来实现配置中心和服务注册中心)1、refresh-enabled属性:用来开启、关闭动态刷新(值为false后nacos客户端无法感知配置的变化)refresh-enabled: false #用来开启、关闭动态刷新。 阅读详情

      Spring Cloud利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,给开发者留出一套简单易懂、易部署和易维护的分布式系统开发工具包。

   “微服务架构”在这几年非常的火热,什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。

正文:

    服务注册与发现用到了Spring Cloud Netflix。   Spring Cloud Netflix通过自动配置集成到Spring Boot应用中,用几个简单的注解可以快速启用和配置您的应用程序来构建大型分布式系统。提供包括服务发现、断路器、智能路由和客户端负载均衡等。Spring Cloud Netflix使用Eureka服务器来注册/发现服务建立SpringBoot应用程序 。

第一步:创建服务注册中心

   创建一个spring boot 工程,pom.xml中引入:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>


<groupId>com.sun</groupId>
<artifactId>eureka-server</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>


<name>eureka-server</name>
<description>Spring Cloud project</description>


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>


<dependencies>


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>


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


</dependencies>


<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

2.启动方法加上@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话


3.在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties中配置:


这样我们的注册中心就好了,启动工程访问:http://localhost:1111/可以看到如下画面没有任何服务


第二步:创建服务提供方

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>


<groupId>com.sun</groupId>
<artifactId>spring-cloud-compute-service</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>


<name>compute-service</name>
<description>Spring Cloud project</description>


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>


<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</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>Brixton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

2:写一个测试注册方法


3.启动类加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,才能实现Controller中对服务信息的输出。


4.application.properties配置,制定注册中心位置,名称也很重要,在后面调用服务的时候要用到,其次端口号不能重复


启动该工程后,再次访问:http://localhost:1111/,就可以看到我们定义的服务被注册了名称为SPRING-CLOUD-COMPUTE-SERVICE


第三步:创建消费者

这里要介绍一下Ribbon,Ribbon是一个基于HTTP和TCP客户端的负载均衡器,Ribbon可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到均衡负载的作用,可以与Eureka联合使用。

当有多个服务提供方的时候Ribbon可以实现负载均衡。

所以我们修改spring-cloud-compute-service中的server-port为2225,再启动一个服务提供方:compute-service,这时候我们可以从http://localhost:1111/看到名字一样,端口不一样的两个服务提供方。

编写消费者:pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>


<groupId>com.sun</groupId>
<artifactId>eureka-ribbon</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>


<name>eureka-ribbon</name>
<description>Spring Cloud project</description>


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>


<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>Brixton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>
2.启动类中

通过@EnableDiscoveryClient注解来添加发现服务能力。创建RestTemplate实例,并通过@LoadBalanced注解开启均衡负载能力。


3.创建ConsumerController来消费SPRING-CLOUD-COMPUTE-SERVICE的test服务。


4.application.properties中配置eureka服务注册中心


当我们启动项目并访问两次http://localhost:3333/test会发现端口2222和2225服务端被分别调用了一次服务,这样就实现了负载均衡。



我们一个简单的服务注册中心,提供与消费的demo就写好了!


番外篇:注册中心的高可用性

我们可以集群多个注册中心,创建两个注册中心项目。

创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2

spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

      创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1

spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

在/etc/hosts文件中添加对peer1和peer2的转换

127.0.0.1 peer1
127.0.0.1 peer2

通过spring.profiles.active属性来分别启动peer1和peer2

java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer2

在服务注册与发现中eureka.client.serviceUrl.defaultZone配置为:

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

就实现了注册中心的集群
【1.2 服务注册与发现(Consul)】分布式注册中心之Consul基本使用,与Spring Cloud整合 Consul 是一个支持多数据中心的分布式服务网格解决方案Consul 提供了服务发现、配置管理以及健康检查等功能。Spring Cloud 是一系列框架和工具集合,旨在简化基于 JVM 的云应用开发。将 Consul 与 Spring Cloud 整合可以为微服务架构提供强大的服务发现和配置管理能力。 阅读详情

相关推荐

CAN收发器选型避坑指南:TJA1051T与TJA1051T/3的硬件兼容性问题实录

本文详细解析了CAN收发器TJA1051T与TJA1051T/3的硬件兼容性问题,通过实测数据和故障案例揭示了VIO引脚的关键差异及其对系统的影响。提供从选型到验证的完整防坑方案,帮助开发者避免常见设计错误,确保CAN总线通信的稳定性。

weixin_42715608的博客 457

微服务注册/发现组件Eureka注册中心

3.心跳续约:微服务会周期性(默认30秒)地向Eureka Server 发送心跳以维持自己的注册状态,如果Eureka Server 在一定时间(默认90秒)没有接受到某个微服务实例的心跳,Eureka Server 将会注销该实例。心跳续约:微服务会周期性(默认30秒)地向Eureka Server 发送心跳以维持自己的注册状态,如果Eureka Server 在一定时间(默认90秒)没有接受到某个微服务实例的心跳,Eureka Server 将会注销该实例。

m0_70967938的博客 442

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

萌宠的定义

萌宠,现代流行词汇,指带有“萌"光环的宠物。传统的宠物是指养着用于玩赏、做伴的动物,也指特别偏爱的东西。宠物不一定单指动物,植物或其他事物也可以做为宠物,因人而异吧,毕竟每个人的喜好不一样。 ...

yumu374800834的博客 2349

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5951

【QNX+Android虚拟化方案】01 - 芯片介绍

【QNX+Android虚拟化方案】01 - 芯片介绍

|~~~热爱生活、努力学习的小伙汁~~~| 2945

Consul2-使用consul作为服务注册和发现中心

        在windows环境下搭建consul,可以参考我的上一篇博客:https://blog.youkuaiyun.com/j903829182/article/details/80960802         在这里进行一个小实战,使用consul作为我们的注册和配置中心,并实现RPC调用,利用Feign组件来实现RPC调用。     一:创建一个maven项目作为api   使用IDEA创建一...

wj903829182的专栏 8050

pdb文件删除杂原子 HETATM;保留或去除水分子

这样操作水分子也会跟着删除,如果需要保留水分子。

weixin_42357472的博客 2644

Nacos服务注册发现与配置中心

Nacos 服务注册与发现中心是一种可以用来实现微服务之间服务注册与发现的解决方案。需要注意的是consumer注册中心的IP端口不可以provider的端口一致,否则会无法启动consumer。(consumer发现服务的端口是provider的端口,端口不一致会导致页面失效)最新版的是2.4.2.1版本的,小编自己用的是2.0.3版本的,相差不大。此时的服务列表空无一物,那是因为我们还没有服务注册和发现服务。启动之后就可以在nacos的服务列表中看到我们启动的服务啦。

qianz_w的博客 1016

第4章-上下文管理-对话历史记忆系统与窗口优化-《Agentic AI 智能体应用开发》

当上下文窗口接近极限时,需要对已有内容进行压缩。压缩不是简单的截断——你需要保留核心语义,去除冗余。# Python: 对话摘要压缩# 使用 Haiku 做摘要任务,成本最低"""将一段对话历史压缩为摘要"""system="你是一个对话摘要专家。请生成简洁但有信息量的摘要。",f"'用户'

AI天才研究院 245

CATIA文件的网页预览方案

CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?

weixin_44211633的博客 1447

1、spring cloud----注册中心(eureka,zookeeper,consul)服务注册与发现

一、介绍 SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。 二、搭建springboot工程 搭建父工程(maven-site简单骨架) 字符编码 注解生效激活 java编译版本选8 File Type过滤不用看的文件 父工程的pom.xml <packaging>pom</packaging> <properties></properties>统一管理jar包

lylbell的博客 185

分立器件---电感介绍(7000字)

电感基础整理

HW-BASE的博客 2350

spring cloud基础学习1—服务发现注册中心(Eureka)

一:什么是spring CloudSpring Cloud是一系列框架的有序集合。由一些列组件(框架)组成,如服务发现注册配置中心Eureka、消息总线springCloudBus、断路器Hystrix、路由网关zuul、分布式配置中心springCloudConfig等。Spring Cloud是基于spring Boot,所以在学习Spring Cloud之前要先掌握Spring Boot。二...

流浪的程序员1993 414

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

第一篇: 服务的注册与发现Eureka(Greenwich版)

一、创建服务注册中心 新建个主工程(这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom)并删除掉src目录 父pom.xml代码如下 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi...

小布1994的博客 1584

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Eureka注册中心的基本使用

导包 新建一个工程或者模块 eureka-server 作为eureka服务器 注意:SpringBoot和SpringCloud的依赖就不提及了,相信你自己都导入了,注意版本对应关系 我这个版本是: Greenwich.SR1 服务端导包 <!-- Eureka服务器端 --> <dependencies> <dependency> <groupId>org.springframework.cloud</

weixin_44257023的博客 2630

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

黑马商城 Spring Cloud 微服务课程笔记 - 服务治理之注册中心原理(DAY1 - 12)

在黑马商城的 Spring Cloud 微服务架构体系中,DAY1 - 12 着重阐述了服务治理中注册中心的原理。注册中心是微服务架构的关键组件,它如同微服务世界的 “通讯录”,负责记录各个微服务的相关信息,如服务名称、实例地址、端口等。微服务在启动时向注册中心注册自己的信息,以便其他微服务能够发现并与之通信,同时也便于实现负载均衡等功能,是保障微服务之间有效协作的重要基础。

m0_57836225的博客 886

springCloud版本(Finchley.RC1)-服务注册与发现

一.spring cloud 简介 spring cloud 基于spring boot 为开发人员简化分布式系统基础设施的开发,它提供了一系列的组件 比如:服务注册和发现,负载均衡,断路器,restful风格的客户端,请求路由,消息总线等 二.服务注册中心eureka spring cloud eureka 是spring colud netflix 微服务套件中的一部分,它是基于Netf...

代码机器 4548

spring-clount学习打卡1|简单入门-服务注册【Greenwich.SR1版本】

spring-clound 学习打卡1:简单入门-服务注册 【Greenwich.SR1版本】 一、spring-clound 简介 简介 解决庞杂的系统带来的臃肿和耦合过高等的问题。如果一个系统耦合性比较高, 那么容灾性就可能比较差。spring-clound可以把一个繁杂的系统,切分成一个一个的 小系统,相当于一个由一个小的服务,也就是业界比较流行的微服务架构。 学习spring-clou...

一杯派蒙的博客 416

Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)

由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。都是流行的服务发现和注册中心的工具。

yueerba126的博客 739

Spring Cloud学习笔记(一) 服务注册中心Eureka

1 SpringCloud简介 SpringCloud(官网:https://spring.io/projects/spring-cloud)是SpringFramework全家桶的一员,主要是为开发人员提供了快速构建分布式系统中一些常见的工具集合(例如配置管理、服务发现、熔断器、智能路由、微代理、控制总线、一次性令牌、全局锁、决策竞选、分布式会话、集群状态),SpringCloud基于...

技术点滴 1540

Spring Cloud 快速入门esclipse快速搭建微服务框架 (一)-注册与发现

Spring-Cloud项目基本搭建(一)随着近几年微服务架构理念的流行,越来越多微服务架构也进入人们的视野,目前大部分公司用的比较多的是阿里的rcp框架Dubbo,Spring-Cloud等。下面本人简单的给分享一下关于Spring-Cloud 的基本技术心得:Spring-Clou可以说成对现有Spring-boot 封装和抽象 一下是关于Spring-Could Api文档地址中文文档:htt

jjc120074203的博客 6021

服务注册与发现

今年 Dubbo 活了,并且被 Apache 收了。同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了。。。但是之前的版本还是可以使用的。 服务注册中心 1、pom.xml 中引入需要的依赖内容: &amp;amp;lt;!--继承 1.5.4.RELEASE版本spring boot--&amp;amp;gt; &amp;amp;lt;parent&amp;amp;gt; &amp;

我弟是个程序员 860

Spring-cloud注册中心 Eureka

Eureka Server spring cloud已经帮我实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。 1、pom中添加依赖 org.springframework.cloud spring-cloud-starter org.springframework.cloud spring-cloud-starter-eureka-serv

ruoxuan25的博客 1272

Spring Cloud学习心得(一)注册中心Eureka

一、注册中心Eureka简介 其实Eureka仅仅是微服务注册与发现功能实现的一种组件之一,能够实现服务注册与发现的东西有很多,比如Consul、Zookeeper等等,还有一些名不见经传的小东西,我就不一一列举了。目前使用得比较火的注册中心也是Consul了,那为什么我还在写Eureka呢?好吧,其实是我还没时间去细细研究过Consul。不过后续打算换成Consul,据说代价也不大,仅仅是换个注...

super-zero的博客 272

二、服务注册与发现Eureka

Eureka服务治理、服务注册与发现的介绍以及Eureka Server、Eureka Client 的使用......

学习记录和总结 1万+
上一篇: Spring Boot11--使用Spring Security进行安全控制
下一篇: Spring Cloud -- 2 断路器
JavaMrSun
博客等级 码龄9年 27粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值