【1.4】Java微服务:服务注册和调用(Eureka和Ribbon实现)

news2024/11/18 17:18:21

✅作者简介:大家好,我是 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请求到其他接口,实现代码如下:

    @Autowired
    private 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到Order
        order.setUser(user);
        // 4.返回
        return order;
    }

j结果截图:

2)使用restTemplate的方式进行微服务的远程调用,会哪些缺点?

  1. 首先,使用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负载均衡策略

  1. RoundRobinRule:简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡策略。
  2. AvailabilityFilteringRule:对两种服务器进行忽略:
    1. 在默认情况下。这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态持续20秒,如果再次连接失败,短路的持续时间就会几何级地增加。
    2. 并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数上限,可以由客户端的<clientName><clientConfigNameSpace>.ActiveConnectionsLimit属性进行设置。
  3. WeightedResponseTimeRule:为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
  4. ZoneAvoidanceRule:以区域可用的服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内多个服务做轮询。
  5. BestAvailableRule:忽略哪些短路的服务器,并选择并发数较低的服务器。
  6. RandomRule:随机选择一个可用的服务器。
  7. 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/eureka

 4)进入服务中心

 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服务_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p=11&spm_id_from=pageDriver&vd_source=d0dc59eeb02e4e4b81ee32c868da3cfe

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

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

相关文章

小研究 - JVM GC 对 IMS HSS 延迟分析(一)

用户归属服务器&#xff08;IMS HSS&#xff09;是下一代通信网&#xff08;NGN&#xff09;核心网络 IP 多媒体子系统&#xff08;IMS&#xff09;中的主要用户数据库。IMS HSS 中存储用户的配置文件&#xff0c;可执行用户的身份验证和授权&#xff0c;并提供对呼叫控制服务器…

ARTS Activity -- Using Java

About ARTS - Complete one ARTS per week: ● Algorithm: Do at least one LeetCode algorithm per week Review: Read and comment on at least one technical article in English ● Tips: Learn at least one technical trick ● Share: Share a technical article with op…

1.2 eureka注册中心,完成服务注册

目录 环境搭建 搭建eureka服务 导入eureka服务端依赖 编写启动类&#xff0c;添加EnableEurekaServer注解 编写eureka配置文件 启动服务,访问eureka Euraka服务注册 创建了两个子模块 在模块里导入rureka客户端依赖 编写eureka配置文件 添加Services 环境搭建 创建父…

08-向量的范数_范数与正则项的关系

⛳向量的范数 范数的公式是向量每个分量 绝对值 P 次方 再用幂函数计算 P 分之一&#xff0c;这里 P 肯定是整数 1&#xff0c;2&#xff0c;3…到正无穷都是可以的 向量的范数就是把向量变成一个标量&#xff0c;范数的表示就是两个竖线来表示&#xff0c;然后右下角写上 P&a…

LeetCode36.Valid-Sudoku<有效的数独>

题目&#xff1a; 思路&#xff1a; 这题并不难&#xff0c;它类似于N皇后问题。在N皇后问题中&#xff0c;行&#xff0c;列&#xff0c;对角线&#xff0c;写对角线&#xff0c;都不能出现连续的皇后。 本题类似&#xff0c;不过他是行&#xff0c;列&#xff0c;还有一个B…

【数据结构篇C++实现】- 图

友情链接&#xff1a;C/C系列系统学习目录 文章目录 &#x1f680;一、图的基本概念和术语1、有向图和无向图3、基本图和多重图4、完全图5、子图6、连通、连通图和连通分量7、强连通图、强连通分量8、生成树、生成森林9、顶点的度、入度和出度10、边的权和网11、稠密图、稀疏图…

【点云处理教程】00计算机视觉的Open3D简介

一、说明 Open3D 是一个开源库&#xff0c;使开发人员能够处理 3D 数据。它提供了一组用于 3D 数据处理、可视化和机器学习任务的工具。该库支持各种数据格式&#xff0c;例如 .ply、.obj、.stl 和 .xyz&#xff0c;并允许用户创建自定义数据结构并在程序中访问它们。 Open3D 广…

介绍壹牛NFT数字艺术藏品数藏源码

这个版本新增了不少功能&#xff0c;也修复了一些地方。 1.平台新增用户找回密码功能 2.平台新增短信注册&#xff08;实名制功能&#xff09; 3.平台新增主图后台添加功能 4.平台修复相关问题&#xff0c;系统高效运行 5、H5端与APP端在新UI完美适配 6、加入宝盒功能&…

04-导数判断凹(concave)凸(convex)性_导数用于泰勒展开

导数与函数凹凸性的关系 函数的二阶导数是和函数的凹凸性是有关系的&#xff0c;凹凸性怎么定义的&#xff1f; 先来做简单的回顾&#xff0c;更多的会在最优化方法里面给大家讲&#xff0c;这里先记住凸函数是向下凸的&#xff0c; 反正就是凹的&#xff0c;是否是凸函数可以…

Linux——平台设备及其驱动

目录 前言 一、平台设备 二、平台驱动 三、平台驱动简单实例 四、 电源管理 五、udev 和驱动的自动加载 六、使用平台设备的LED 驱动 七、自动创建设备节点 前言 要满足 Linux 设备模型&#xff0c;就必须有总线、设备和驱动。但是有的设备并没有对应的物理总线&#x…

【双评价笔记】农业指向之水资源评价

农业指向水资源单项评价是基于区域内及邻近地区气象站点长时间序列降水观测资料,通过空间插值得到多年平均降水量分布图层,降水量按照200,400,800,1200这个间断点分为好(很湿润),较好(湿润),一般(半湿润),较差(半干旱),差(干旱)5 个等级。 本次实验过程采用的评价分…

谷粒商城第七天-商品服务之分类管理下的分类的拖拽功能的实现

目录 一、总述 1.1 前端思路 1.2 后端思路 二、前端实现 2.1 判断是否能进行拖拽 2.2 收集受影响的节点&#xff0c;提交给服务器 三、后端实现 四、总结 一、总述 这个拖拽功能对于这种树形的列表&#xff0c;整体的搬迁是很方便的。但是其实现却并不是那么的简单。 …

CMU15-213 课程笔记 01-课程概览

知识点 这门课的目的&#xff1a;深入理解当你执行代码时&#xff0c;计算机在做什么 LLDB&#xff1a;基于 LLVM 的命令行调试器&#xff0c;类似 GBD 内存引用 Bug typedef struct {int a[2];double d; } struct_t;double fun(int i) {volatile struct_t s;s.d 3.14;s.a…

Flowable-服务-邮件任务

目录 定义图形标记XML内容邮件服务器配置界面操作 定义 Flowable 支持通过自动的邮件服务任务&#xff08;Email Task&#xff09;增强业务流程&#xff0c;它可以向一个或多个收信人发送 邮件&#xff0c;支持 cc&#xff0c;bcc&#xff0c;HTML 内容等。 流程流转到邮件任务…

xshell连接liunx服务器身份验证不能选择password

ssh用户身份验证不能选择password 只能用public key的解决办法 问题现象 使用密码通过Workbench或SSH方式(例如PuTTY、Xshell、SecureCRT等)远程登录ECS实例时&#xff0c;遇到服务器禁用了密码登录方式错误. 可能原因 该问题是由于SSH服务对应配置文件/etc/ssh/sshd_config中…

【软件安装】MATLAB_R2021b for mac 安装

Mac matlab_r2021b 安装 下载链接&#xff1a;百度网盘 下载链接中所有文件备用。 我所使用的电脑配置&#xff1a; Macbook Pro M1 Pro 16512 系统 macOS 13.5 安装步骤 前置准备 无此选项者&#xff0c;自行百度 “mac 任何来源”。 1 下载好「MATLAB R2021b」安装文…

stm32 舵机 cubemx

文章目录 前言一、cubemx配置二、代码1.serve.c2.serve.h3.主函数 总结 前言 stm32对舵机进行控制&#xff0c;很简单直接一个pwm就可以实现 pwm的周期是50HZ占空比分别对应 一个0.5ms的高电平对应于0度 一个1.5ms的高电平对应于90度 一个2.5ms的高电平对应于180度 因此&#…

【C语言】扫雷(保姆级教程+内含源码)

C系列文章目录 前言 一&#xff0c;模块化编程 二&#xff0c;游戏思路与逻辑 三&#xff0c;实现游戏步骤/过程 1&#xff0c;菜单界面(menu) 2&#xff0c;实现多行多列扫雷 3&#xff0c; 实现多个雷 4,棋盘初始化 5&#xff0c;棋盘的打印 6&#xff0c;布置雷…

连接器信号完整性仿真教程 六

连接器信号完整性仿真教程五中,讲了波导端口中同轴波导端口及多Pin波导端口的设置。本将继续以实例演示的方式讲解波导端口中的微带(Microstrip Line)波导端口的设置及其在连接器信号完整性仿真中的应用。 一 微带线(Microstrip Line) 由介基材(Dielectric Substrate)及…

正则表达式速通

简介 正则表达式&#xff0c;我们可以看作通配符的增强版&#xff0c;可以帮我们匹配指定规则的字符串&#xff0c;在计算机中应用广泛&#xff0c;比如说爬虫、网站的登录表单等。 原视频&#xff1a;https://www.bilibili.com/video/BV1da4y1p7iZ 学习正则表达式的常用工具…