服务注册Eureka

目录

一、背景

1、概念

2、CAP 理论

3、常见的注册中心

二、Eureka

三、搭建 Eureka Server

1、搭建注册中心

四、服务注册

五、服务发现

六、Eureka 和 Zooper 的区别


一、背景

1、概念

远程调用就类似于一种通信

例如:当游客与景区之间进行通信(电话的方式),此时游客需要得到景区的电话,例如通过景区官网或者 114 查号台进行查询

那么 114 平台又是如何知道景区和电话的关系的呢?

景区当创建和修改的时候告诉 114 平台,由 114 平台对信息进行维护,游客就可以通过 114 查询电话,再向景区进行通讯

上述的解决方案同样也适用于微服务中

在微服务中,有两个角色:服务消费者和服务提供者

当订单服务调用商品服务,从中获取到对应的商品信息,此时订单服务就是服务消费者,商品服务就是服务提供者

服务提供者在启动之初,向平台进行注册,告诉平台 应用 和 IP 的关系,服务消费者可以从平台中根据应用获取到 IP 地址,然后根据 IP 地址进行远程调用

服务提供者和注册中心的关系我们称之为服务注册,服务消费者和注册中心的关系称为服务发现

我们来看一下这三种角色分别的作用

注意:服务提供者和服务消费者是相对的概念!!!

服务注册和服务发现的解释:


2、CAP 理论

CAP 理论是分布式系统中最基础、最关键的理论

我们来看一下 CAP 理论的图:

C:Consistency 一致性(此处的一致性指的是强一致性)

A:Availability 可用性 (对所有请求都有响应,这个响应可能是错误的数据)

P:Partition tolerance 分区容错性(在网络分区的情况下,我们的系统依然可以对外提供服务)

例如:银行利率下调,这个通知需要下发到各个银行的工作人员,通知下发需要一定的时间

一致性:在相同的时间点,所有的工作人员对客户讲的利率都是一样的

可用性:不论何时,所有的银行工作人员对客户咨询利率都是有回复的(回复也有可能是旧利率)

分区容错性:如果其中一个工作人员请假了,银行仍然可以对外提供服务

在分布式系统中,P 必须要保证,所以 C 和 A 只能二选一,因此我们的架构就是 AP / CP 架构

CP架构: 为了保证分布式系统对外的数据⼀致性, 于是选择不返回任何数据

AP架构: 为了保证分布式系统的可⽤性, 节点2返回V0版本的数据(即使这个数据不正确)

什么是强一致性?

数据库集群分为主库和从库

客户端向数据库集群发送了一个数据修改的请求,数据库集群需要向客户端进行响应,响应的时机分为以下两种:

1、主库接收到请求,并处理成功,此时数据还未完全同步到从库,随着时间的推移,主库和从库的数据最终达到一致性

2、主库接收到请求,并且所有从库数据同步成功时,数据库集群才进行响应 

强一致性:主库和从库,无论何时对外提供的服务都是一致的【第二种情况】

弱一致性:随着时间的推移,最终达到了一致性【第一种情况】


3、常见的注册中心


二、Eureka

官方文档: https://github.com/Netflix/eureka/wiki
Eureka主要分为两个部分:
Eureka Server: 作为注册中心Server端, 向微服务应用程序提供服务注册, 发现, 健康检查等能力.
Eureka Client: 服务提供者, 服务启动时, 会向Eureka Server 注册自己的信息(IP,端口,服务信息
等),Eureka Server 会存储这些信息

三、搭建 Eureka Server

1、搭建注册中心

(1)创建项目

(2)pom 中加入 Eureka 的依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

(3)配置文件增加 Eureka 相关配置

# Eureka相关配置
# Eureka 服务
server:port: 10010
spring:application:name: eureka-server
eureka:instance:hostname: localhostclient:fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这里设置为falseregister-with-eureka: false # 表示是否将自己注册到Eureka Server,默认为true.由于当前应用就是Eureka Server,故而设置为false.service-url:# 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

(4)启动类,开启 Eureka 功能

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


四、服务注册

服务注册分为以下几步:

1、加入 Eureka 的依赖

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

2、修改配置信息

#Eureka Client
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka/
spring:application:name: product-service # 自定义名字

3、启动,测试


五、服务发现

服务发现分为以下几步:

1、加入 Eureka 依赖

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

2、修改配置信息

配置信息与上面的一样

3、修改远程调用代码

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate DiscoveryClient discoveryClient;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);// String url = "http://127.0.0.1:9090/product/"+orderInfo.getProductId();List<ServiceInstance> instances = discoveryClient.getInstances("product-service");String uri = instances.get(0).getUri().toString();String url = uri + "/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

4、启动,测试


六、Eureka 和 Zooper 的区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xubuntu24.04之设置高性能模式两种方式(二百六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

苍穹外卖--新增员工

代码开发 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; import com.sky.properties.JwtProperties; import com.sky.result.Result…

Springboot各个版本维护时间

Springboot各个版本维护时间

MQTT教程--服务器使用EMQX和客户端使用MQTTX

什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎&#xff0c;能够实现传感器、执行器和其它设备…

jmeter持续学习之----性能初级一些概念和指标

服务端为什么要进行性能测试 大量用户下&#xff0c;系统能否稳定运行&#xff08;比较多&#xff09; 用于硬件服务器的选型 用于软件技术的选型 性能测试关注的点 用户角度:响应时间 资源占用:并发用户数,TPS,资源占用(cpu,内存,JVM) 性能测试策略 基准测试:单用户测试,对…

去了字节跳动,才知道年薪40W的测试有这么多?

最近脉脉职言区有一条讨论火了&#xff1a; 哪家互联网公司薪资最‘厉害’&#xff1f; 下面的评论多为字节跳动&#xff0c;还炸出了很多年薪40W的测试工程师 我只想问一句&#xff0c;现在的测试都这么有钱了吗&#xff1f; 前几天还有朋友说&#xff0c;从腾讯跳槽去了字节&…

8.8.8.8 IP地址的作用

在跟着韦东山老师的学习手册中看见了关于8.8.8.8 IP用于检测网络状态&#xff0c;然后搜索了关于此IP的相关作用如下&#xff1a; 公共DNS服务&#xff1a;8.8.8.8是Google提供的两个公共DNS服务器地址之一&#xff08;另一个是8.8.4.4&#xff09;。DNS&#xff08;域名系统&a…

强化基石,引领未来:完善配套设施与提升服务水平

完善配套设施与提升服务水平对于产业园运营具有重要意义。它们不仅能够提升园区的硬件环境和整体形象&#xff0c;增强园区的吸引力和竞争力&#xff1b;还能够优化营商环境&#xff0c;降低企业运营成本&#xff0c;提高运营效率&#xff1b;同时推动园区创新&#xff0c;形成…

基于Java技术的网吧管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…

【技术追踪】DiffuMatting:使用抠图级别注释合成任意对象(ECCV-2024)

万物生&#xff1a;Diffusion与绿幕抠图&#xff0c;影视领域的福音~ 论文&#xff1a;DiffuMatting: Synthesizing Arbitrary Objects with Matting-level Annotation 代码&#xff1a;https://github.com/HUuxiaobin/DiffuMatting &#xff08;即将开源&#xff09; 0、摘要 …

(补充):java各种进制和文本、图像、音频在计算机中的存储方式

文章目录 前言一、进制1 逢几进一2 常见进制在java中的表示3 进制中的转换(1)任意进制转十进制(2)十进制转其他进制二、计算机中的存储1 计算机的存储规则(文本数据)(1)ASCII码表(2)编码规则的发展演化2 计算机的存储规则(图片数据)(1)分辨率、像素(2)黑白图与灰度…

Knife4j的介绍与使用

目录 一、简单介绍1.1 简介1.2 主要特点和功能&#xff1a; 二、使用步骤&#xff1a;2.1 添加依赖&#xff1a;2.2 yml数据源配置2.3 创建knife4j配置类2.4 注解的作用 最后 一、简单介绍 1.1 简介 Knife4j 是一款基于Swagger的开源文档管理工具&#xff0c;主要用于生成和管…

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中&#xff0c;有时候需要以Java作为客户端来调用SOAP方式的WebService服务&#xff0c;本文通过分析不同的调用方式&#xff0c;以Demo的形式&#xff0c;帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…

拆分pdf文件最简单的方法,pdf怎么拆成一页一张

在数字化的时代&#xff0c;pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而&#xff0c;有时候我们可能需要对一个大的pdf文件进行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何将一个pdf文件拆分成多个pdf呢&#xff1f;本文将为你推荐一种好用的拆分…

AFT:Attention Free Transformer论文笔记

原文链接 2105.14103 (arxiv.org) 原文翻译 Abstract 我们介绍了 Attention Free Transformer (AFT)&#xff0c;这是 Transformer [1] 的有效变体&#xff0c;它消除了点积自注意力的需要。在 AFT 层&#xff0c;键key和值value首先与一组学习的位置偏差position biases相结…

Lab1 论文 MapReduce

目录 &#x1f339;前言 &#x1f985;2 Programming Model &#x1f33c;2.1 Example &#x1f33c;2.2 Types &#x1f33c;2.3 More Examples &#x1f985;3 Implementation(实现) &#x1f33c;3.1 ~ 3.3 &#x1f33c;3.4 ~ 3.6 &#x1f985;4 Refinemen…

Anaconda+Pycharm 项目运行保姆级教程(附带视频)

最近很多小白在问如何用anacondapycharm运行一个深度学习项目&#xff0c;进行代码复现呢&#xff1f;于是写下这篇文章希望能浅浅起到一个指导作用。 附视频讲解地址&#xff1a;AnacondaPycharm项目运行实例_哔哩哔哩_bilibili 一、项目运行前的准备&#xff08;软件安装&…

BN的 作用

1、背景&#xff1a; 卷积神经网络的出现&#xff0c;网络参数量大大减低&#xff0c;使得几十层的深层网络成为可能。然而&#xff0c;在残差网络出现之前&#xff0c;网络的加深使得网络训练变得非常不稳定&#xff0c;甚至出现网络长时间不更新或者不收敛的情形&#xff0c;…

ER模型理论和三范式

ER模型理论和三范式 各种关系多对一一对一一对多多对多 三范式理论函数依赖完全函数依赖部分函数依赖传递&#xff08;间接&#xff09;函数依赖 第一范式&#xff1a;属性&#xff08;表字段&#xff09;不可切割第二范式&#xff1a;不能存在 部分函数依赖(都存在完全函数依赖…

2款一键word生成ppt的AI工具,让职场办公更为简单!

在当下主打异步沟通的职场办公环境中&#xff0c;我们与很多人的沟通&#xff0c;都是通过书面材料来达成的&#xff0c;这就让 Word 或文档编辑软件变得更为重要&#xff0c;与此同时&#xff0c;有时为了凸现书面材料中的重点&#xff0c;我们还要将 word 文档转换为 ppt 来进…