最新版 !快速掌握 JDK17 + springboot3 + springcloud Alibaba : 3、远程调用负载均衡 Ribbon

0 背景铺垫

微服务项目有一个重要的功能:可以很容易动态扩缩容

这里我们不谈容器技术(docker/k8s这些),传统的扩缩容简单理解就是服务集群。

**扩:**特定时期(比如促销,天灾人祸)一个微服务可能容易挂掉(撑不住/宕机),那么多开几个就行,此为扩。

**缩:**特定时期过后,多开的微服务可以适当关掉多余的,此为缩

这里考虑扩的问题,以订单与商品服务为例子,

设想一种场景:如果某天公司要促销,单一的订单服务,商品服务不一定能撑得住,该怎么扩容。

扩容常用的手段就是集群,如下:

在这里插入图片描述

集群存在一个很大问题,客户端发起的请求让哪个微服务处理?

解决方案:负载均衡服务器

1 什么是负载均衡

通俗的讲, 负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。

根据负载均衡发生位置的不同,一般分为服务端负载均衡客户端负载均衡

在这里插入图片描述

服务端负载均衡指的是发生在服务提供者一方,比如常见的Nginx负载均衡

在这里插入图片描述

客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求

在这里插入图片描述

微服务调用关系中一般会选择客户端负载均衡,也就是在服务调用的一方来决定服务由哪个提供者执行。

那问题来:代码上如何实现?

2 自定义负载均衡

需求:开启2个商品客户端(localhost:8081/localhost:8082),这里说明一下,真实开发服务器可定是部署在不同的服务器中,ip不一样,端口可以一样。此时为学习,只有一台电脑,使用不同端口模拟一下。

2.1 通过idea再启动一个 shop-product 微服务,设置其端口为8082: -Dserver.port=8082

在这里插入图片描述

2.2 通过nacos查看微服务的启动情况

在这里插入图片描述

2.3 修改 OrderServiceImpl 的代码,实现负载均衡

package com.example.server.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.domain.Order;
import com.example.domain.Product;
import com.example.server.mapper.OrderMapper;
import com.example.server.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.List;
import java.util.Random;

@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
   
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private DiscoveryClient discoveryClient;

    @Override
    public Order createOrder(Long pid, Long uid) {
   
        Order order = new Order()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云上凯歌

好活,当赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值