自定义实现负载均衡|学习笔记

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 快速学习自定义实现负载均衡

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段:自定义实现负载均衡】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/684/detail/11865


自定义实现负载均衡

 

内容介绍:

一、代码实现负载均衡

二、随机数的设置

 

一、代码实现负载均衡

1、简单介绍

最终我们决定在微服务中采用客户端的负载均衡,即在服务的消费者一方采取负载均衡的效果。

下面具体写代码实现负载均衡。在写代码之前,我们需要再模拟出一台服务的提供者,也就是8082的商品微服务,这个功能的实现是非常简单的。

2、实际操作

首先打开 OrderApplication ,选择编辑器的配置,添加一个 Spring Boot 的配置,然后将名字改为 ProductApplication2 ,主类项选择 ProductApplication ,再将 VM options 项输入 -Dserver.port=8082 ,点击应用,然后就可以发现出现了一个ProductApplication2 ,将其启动。

启动完毕之后来到控制台刷新,就可以看到在 server-product 项之后有两个实例了,而且都是健康状态的,还可以点击详情进行进一步的查看,两台 IP 地址都是在109.1上,端口号一个8081一个8082,由此我们就准备好了两个服务提供者。

image.png

3、服务提供者选用

接下来我们在服务消费者这一方决定到底使用哪一个服务提供者。下一步找到服务调用的地方,现在默认的调用策略是每次都会选择第一个服务实例,接下来我们要改变这种服务策略。

在两台实例中我们随机挑选一台进行调用,为保证代码的完整性,我们还是复制一份。

 

二、随机数的设置

1、自定义负载均衡

接下来我们输入 //下单--自定义负载均衡,下一步进行实现,位置就在 //调用商品微服务,查询商品信息处,此时的 instance 里面一经调用就有两个实例了,分别是8081和8082.然后输入 //随机选择 ,实际上就是改变 instances.get(0).; 中的数字,现在是0,意为每次调用第一台,我们只需每次调用的不一样即可,使数字在0和1之间波动就可。

2、随机数的创建

我们通过创建一个随机数,

输入 newRandom().nextInt(bound:2);// 的话有问题,如果我们继续添加一个商品微服务,代码中的数值还得改动,方法是我们只要改动此集合的长度即可

即:

intindex=newRandom().nextInt(bound:instance.size);//,

然后把 index 放到 instance.get(index) 中,这样代码就填写完毕了。

在38处打一个断点,然后选择订单微服务重新跑一次,启动成功之后重新访问一次,点开网页对网址刷新断点就过来了,继续往下走一步,观察实例发现确实是两个,一个8081一个8082,下一步随机数产生,第一次产生的是0那么就会调用第一台了,将断点放一下看效果就知道第一成功了。

然后将 ProductApplication:8081 和 ProductApplication:8082 分别清空,刷新界面并将断点放掉,发现服务端到达了8081上,再次刷新发现没有到8081上,那势必就是到达了8082上,点开8082处发现确实如此,经过多次测试得出结果我们的随机数是完全没有任何问题的。由此我们就实现了自定义的负载均衡。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
负载均衡 算法 Java
So easy! 教你实现自定义负载均衡策略!
So easy! 教你实现自定义负载均衡策略!
864 0
|
4月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
68 1
|
5月前
|
负载均衡 算法 Nacos
SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重
ReactorLoadBalancer接口,实现自定义负载算法需要实现该接口,并实现choose逻辑,选取对应的节点。
431 0
|
6月前
|
负载均衡 算法 Java
Ribbon自定义负载均衡算法
Ribbon自定义负载均衡算法
55 1
|
负载均衡 Java 索引
Spring Cloud:自定义 Ribbon 负载均衡策略
Spring Cloud:自定义 Ribbon 负载均衡策略
|
负载均衡 算法 Nacos
Ribbon自定义负载均衡策略
如何Ribbon自定义负载均衡策略
102 0
|
负载均衡 算法 Java
Ribbon 的负载均衡策略和自定义负载均衡
Ribbon 的负载均衡策略和自定义负载均衡
251 0
|
负载均衡 Java Spring
如果想自定义负载均衡策略如何实现 ?
如果想自定义负载均衡策略,可以通过继承Ribbon提供的IRule接口,并实现自定义的负载均衡策略。
217 0
|
负载均衡 算法 容灾
Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)
Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)
193 0
|
负载均衡 算法 Java
Spring Cloud Alibaba - 10 Ribbon 自定义负载均衡策略(权重算法)
Spring Cloud Alibaba - 10 Ribbon 自定义负载均衡策略(权重算法)
254 0