【1.4】Java微服务:服务注册和调用(Eureka和Ribbon实现)
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏: 微服务
✨特色专栏: 知识分享
🥭本文内容:【1.4】Java微服务:服务注册和调用(Eureka+Ribbon)
📚 ** ps ** : 阅读这篇文章如果有问题或者疑惑,欢迎各位在评论区提问或指出!
----------------------------------------------------- 目录 ----------------------------------------------------------
目录
一、介绍
1. 问题
2.关于Eureka的介绍
介绍:
组成:
3. 关于Ribbon的介绍
介绍
常见的Ribbon负载均衡策略
二、相关代码的实现
1. 搭建Eureka服务
1) 导入依赖
2)在主函数内开启Eureka注解编辑
3)编写yml文件
4)进入服务中心
5)页面说明
2. Eureka服务注册
1)导入服务端依赖
2)在yml文件中,添加配置
3)添加多个服务
4)简单的使用
3.Ribbon的使用
--------------------------------------------------------------------------------------------------------------------------------
一、介绍
1. 问题
在介绍Eureka与Ribbon实现服务注册和调用功能之前,我们需要先回答一些问题:
1)微服务的远程调用,在使用注册中心之前,是怎么实现的?
一种比较多的方式是通过HTTP请求实现,像前端一样访问另一个服务的接口。
而具体的实现方式,像通过通过SpringBoot框架内的RestTemplate组件,发送HTTP请求到其他接口,实现代码如下:
@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);// 2.利用RestTemplate发起http请求,查询用户// 2.1.url路径String url = "http://localhost:8081/user/" + order.getUserId();// 2.2.发送http请求,实现远程调用User user = restTemplate.getForObject(url, User.class);// 3.封装user到Orderorder.setUser(user);// 4.返回return order;}j结果截图:
2)使用restTemplate的方式进行微服务的远程调用,会哪些缺点?
- 首先,使用restTemplate不能解决许多微服务的许多问题。如服务的管理,服务调用的的负载均衡实现、发生故障或下线的即时处理
2.关于Eureka的介绍
介绍:
- Eureka是Netflix开源的一个用于服务发现和注册中心的组件。它是基于RESTful风格的微服务框架,主要用于在分布式系统中管理和监控服务实例的状态。
- 服务管理:Eureka允许服务在启动时向注册中心注册自己的信息,并周期性地发送心跳来更新状态。
- 其他服务可以通过查询注册中心来获取可用服务的信息,以实现服务的调用和负载均衡。
组成:
- EurekaServe:服务端,注册中心
- 记录服务信息
- 心跳监控
- EurekaClient:客户端
- Provider:服务提供这,例如案例中的user-service
- 注册自己的信息到EurekaServe
- 每隔20秒向EurekaServer发送心跳请求
- consumer:服务消费者,例如案例中的order-server
- 根据服务名称从EureksServer拉取服务列表
- 基于服务列表做负载均衡,选中一个微服务后发起远程调用
3. 关于Ribbon的介绍
介绍
- Ribbon 是SpringCloud的其中一个组件,用于实现客户端负载均衡。它提供了负载均衡、故障转移和重试等功能,可以与服务注册中心(如 Eureka)集成使用。
- 通过使用 Ribbon,可以实现负载均衡的客户端,使服务消费者能够可靠高效的访问多个服务提供者
- Ribbon 提供了各种负载均衡策略,如轮询、随机、加权随机等,开发者可以根据需求选择合适的策略。
常见的Ribbon负载均衡策略
- RoundRobinRule:简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡策略。
- AvailabilityFilteringRule:对两种服务器进行忽略:
- 在默认情况下。这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态持续20秒,如果再次连接失败,短路的持续时间就会几何级地增加。
- 并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数上限,可以由客户端的<clientName><clientConfigNameSpace>.ActiveConnectionsLimit属性进行设置。
- WeightedResponseTimeRule:为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
- ZoneAvoidanceRule:以区域可用的服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内多个服务做轮询。
- BestAvailableRule:忽略哪些短路的服务器,并选择并发数较低的服务器。
- RandomRule:随机选择一个可用的服务器。
- RetryRule:重试机制的选择逻辑
二、相关代码的实现
1. 搭建Eureka服务
1) 导入依赖
<!--eureka服务端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>2)在主函数内开启Eureka注解
3)编写yml文件
server:port: 10086 # 服务端口 spring:application:name: eurekaserver # eureka的服务名称 eureka:client:service-url: # eureka的地址信息defaultZone: http://127.0.0.1:10086/eureka4)进入服务中心
5)页面说明
2. Eureka服务注册
1)导入服务端依赖
在服务模块(如userServiece)的pom文件中导入:
<!--eureka客户端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>2)在yml文件中,添加配置
userService的配置文件中:
orderService的配置文件中:
3)添加多个服务
=
4)简单的使用
3.Ribbon的使用
在服务中自定义负载均衡注解:
最后,
后续文章会陆续更新,希望文章对你有所帮助..!
参考文献:
Spring CloudLevel up your Java code and explore what Spring can do for you.
https://spring.io/projects/spring-cloud/
09-Eureka-搭建eureka服务_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1LQ4y127n4?p=11&spm_id_from=pageDriver&vd_source=d0dc59eeb02e4e4b81ee32c868da3cfe
相关文章:
【1.4】Java微服务:服务注册和调用(Eureka和Ribbon实现)
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…...
QT中使用ffmpeg的api进行视频的播放
在了解ffmpeg使用api进行视频的播放之前,我们首先了解一下视频的播放流程。 一、视频的播放流程 首先是我们最常见的视频文件,在播放流程中首先是要打开视频文件,将视频文件中的数据进行解封装,之后再将解封装之后的视频进行解码…...
使用idea实现git操作大全(在项目开发中遇到的实际情况
使用idea实现git操作大全(在项目开发中遇到的实际情况) 1.安装git插件2.在开发中切记拉一个自己的分支 1.安装git插件 2.在开发中切记拉一个自己的分支 选中需要拉的分支,右键该分支,选中new breach from “分支”,点…...
SQL面试题:一个优化案例
问题描述 假如存在以下两个表: CREATE TABLE customer ( C_CUSTKEY int NOT NULL, C_NAME varchar(25) NOT NULL, C_ADDRESS varchar(40) NOT NULL, C_NATIONKEY int NOT NULL, C_PHONE char(15) NOT NULL, C_ACCTBAL decimal(15,2) NOT NULL, C_MKTSEGMENT char(…...
链表的总体涵盖以及无哨兵位单链表实现——【数据结构】
😊W…Y:个人主页 在学习之前看一下美丽的夕阳,也是很不错的。 如果觉得博主的美景不错,博客也不错的话,关注一下博主吧💕 在上一期中,我们说完了顺序表,并且提出顺序表中的问题 1. 中…...
网页版Java五子棋项目(一)websocket【服务器给用户端发信息】
网页版Java五子棋项目(一)websocket【服务器给用户端发信息】 一、为什么要用websocket二、websocket介绍原理解析 三、代码演示1. 创建后端api(TestAPI)新增知识点:extends TextWebSocketHandler重写各种方法 2. 建立…...
企业大数据可视化案例专题分享-入门
一、什么是数据可视化? 基本概念:数据可视化是以图示或图形格式表示的数据。让决策者可以看到以直观方式呈现的分析,以便他们可以掌握困难的概念或识别新的模式。借助交互式可视化,可以使用技术深入挖掘图表和图形以获取更多详细…...
GoogLeNet卷积神经网络-笔记
GoogLeNet卷积神经网络-笔记 GoogLeNet是2014年ImageNet比赛的冠军, 它的主要特点是网络不仅有深度, 还在横向上具有“宽度”。 由于图像信息在空间尺寸上的巨大差异, 如何选择合适的卷积核来提取特征就显得比较困难了。 空间分布范围更广的…...
腾讯云TencentOS Server镜像系统常见问题解答
腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统,完全兼容CentOS生态和操作方式,TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境,TencentOS可以运行在腾讯云CVM全规格实例上,包括黑石物理…...
【项目 进程13】2.28共享内存(1) 2.29共享内存(2)
文章目录 2.28共享内存(1)共享内存(效率最高,比内存映射更高。因为内存映射还需一个文件做载体)共享内存使用步骤共享内存操作函数头文件 2.29共享内存(2)共享内存相关问题共享内存和内存映射的…...
Flask框架-流量控制:flask-limiter的使用
一、flask使用flask-limiter存在版本问题 Flask1.1.4 Flask-Bootstrap3.3.7.1 Flask-Caching1.9.0 Flask-Cors3.0.10 Flask-Limiter1.4 Flask-Migrate2.5.3 Flask-RESTful0.3.8 Flask-Script2.0.6 Flask-SocketIO5.0.1 Flask-Sockets0.2.1 Flask-SQLAlchemy2.4.4 Jinjia22.11.…...
【机器学习】西瓜书习题3.5Python编程实现线性判别分析,并给出西瓜数据集 3.0α上的结果
参考代码 结合自己的理解,添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt导入数据,进行数据处理和特征工程 得到数据集 D { ( x i , y i ) } i 1 m , y i ∈ { 0 ,…...
Elasticsearch:通过动态修剪实现更快的基数聚合
作者:Adrien Grand Elasticsearch 8.9 通过支持动态修剪(dynamic pruning)引入了基数聚合加速。 这种优化需要满足特定的条件才能生效,但一旦实现,通常会产生惊人的结果。 我们观察到,通过此更改࿰…...
Webpack5 生产模式压缩图片ImageMinimizerPlugin
文章目录 一、 ImageMinimizerPlugin是什么?二、已经有了asset,为什么需要ImageMinimizerPlugin?三、怎么使用ImageMinimizerPlugin?四、ImageMinimizerPlugin压缩的成果 一、 ImageMinimizerPlugin是什么? 它的实际依…...
时序预测 | Matlab实现基于BP神经网络的电力负荷预测模型
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 时序预测 | Matlab实现基于BP神经网络的电力负荷预测模型 BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。B...
基于回溯算法实现八皇后问题
八皇后问题是一个经典的计算机科学问题,它的目标是将8个皇后放置在一个大小为88的棋盘上,使得每个皇后都不会攻击到其他的皇后。皇后可以攻击同一行、同一列和同一对角线上的棋子。 一、八皇后问题介绍 八皇后问题最早由国际西洋棋大师马克斯贝瑟尔在18…...
Linux【网络编程】之深入理解TCP协议
Linux【网络编程】之深入理解TCP协议 TCP协议TCP协议段格式4位首部长度---TCP报头长度信息 TCP可靠性(确认应答)&& 提高传输效率确认应答(ACK)机制32位序号与32为确认序号 16位窗口大小---自己接收缓冲区剩余空间的大小16位紧急指针---紧急数据处…...
如何克服看到别人优于自己而感到的焦虑和迷茫?
文章目录 每日一句正能量前言简述自己的感受怎么做如何调整自己的心态后记 每日一句正能量 行动是至于恐惧的良药,而犹豫、拖延,将不断滋养恐惧。 前言 虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的…...
浅谈React中的ref和useRef
目录 什么是useRef? 使用 ref 访问 DOM 元素 Ref和useRef之间的区别 Ref和useRef的使用案例 善用工具 结论 在各种 JavaScript 库和框架中,React 因其开发人员友好性和支持性而得到认可。 大多数开发人员发现 React 非常舒适且可扩展,…...
Linux C 获取主机网卡名及 IP 的几种方法
在进行 Linux 网络编程时,经常会需要获取本机 IP 地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。 方法一:使用 ioctl() 获取本地 IP 地址 Linux 下可以使用…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...














