Ribbon 配置初步|学习笔记

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

开发者学堂课程【微服务框架 Spring Cloud 快速入门Ribbon 配置初步】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/614/detail/9354


Ribbon配置初步

 

内容介绍

一、 具体过程

二、 测试

三、 总结

 

一、具体过程

学习 Ribbon 时要考虑的思路:

GAV-maven 添加新的 maven 路标。

@EnableXXXXXXRubbon有关。

1、修改 pom.xml 文件

Ribbon 是客户端,所以应该找到

mincroservicecloud-consumer-dept-80修改 pom.xml 文件,添加 Ribbon 相关的内容。

80 的 pom.xml 中添加相应的 Ribbon 配置和 GAV 坐标,如下:

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-ribbon</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

<dependency>

// eureka 后没加 server 说明它是客户端。理由:Ribbon 需要和 eureka 整合,类似于 java 访问 mysql 数据库,中间必须加. JDBC 驱动包 starter-ribbon  ribbon 的自身,eureka 和starter-config 之间存在联系

在书写代码时,形成先修改 pom.yml 的习惯,这样先保证架子的正确,再填写 role 

2、修改 application.yml,追加 eureka 的服务注册地址

找到 mincroservicecloud-consumer-dept-80,80要先找到 eureka 才能返回微服务。之前80只有一个端口。现在要求80,客户端模式和访问路线改变了,不能直接寻找 mincroservicecloud-provider -dept-8001,要先通过mincroservicecloud-eureka -7001mincroservicecloud-eureka -7002mincroservicecloud-eureka -7003

代码如下:

Server:

Port:80

server:eureka:

client:

register-with-eureka:false

service-url:

defaultZone:http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

// eureka client 端,自己不能注册。现在 eureka 不是单机版,是集群。这里全部用集群讲解,比如7001,7002,7003

完成配置后,打开80,DeptConsumer80.App.java 是主启动类,在 DeptController. Consumer.java 中:

//80后直接 DeptController_Consumer

@RestController

public class DeptController_Consumer

//restTemplate 没有业务逻辑,只通过 rest 调用访问

@Autowired

private RestTemplate restTemplate;

Controller 只是外面的架子,发挥作用的是 RestTemplateRestTemplate 来源于 ConfigBean.java中的 Public RestTemplate get RestTemplate()

//要求客户端通过 rest 访问微服务时自带负载均衡,通过配置@LoadBalanced 注解即可。Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端,负载均衡的工具。

@LoadBalanced

Public RestTemplate get RestTemplate()

以上,完成真正的通过微服务名字从 eureka 上找到并访问。

3、主启动类Deptconsumer80_App添加@EnableEurekaClient

现在需要和 eureka 整合,而且是在 Client 端。

@EnableEurekaClient

Public class Deptconsumer80_App

{

Public ststic void main(String[ ] args)

{

SpringApplication.run(Deptconsumer80_App.class,args);

}

}

4、修改 DeptController_consumer 客户端访问类

之前的代码书写是从简单到复杂,从类似于 ACOA 的调服务到真正的通过微服务: 

private ststic final String

REST_URL_PREFIX=http://localost:8001;

这种写法是错误的。http://localost:8001; 是写死的端口地址加Ip,在spring Eureak网站中有 MICRSEVICECLOUD-DEPT 名字,所以这里的访问类是把 http://MICRSEVICECLOUD-DEPT改为微服务名。

//标准的微服务访问代码书写:

private ststic final String

REST_URL_PREFIX=http://MICRSEVICECLOUD-DEPT;

先启动3个 eureka 集群后,再启动microservicecloud-provider-dept-8001并注册进 eureka。如果注册成功,集群环境就没有问题。

5、启动 microservicecloud-consumer -dept-80消费端

测试能否通过微服务的真实名字获得访问。按照7001,7002,7003,8001微服务,80客服端的顺序 Run As。启动这五个微服务可能会耗光8G的内存。

 

二、测试

进入网站:http://localhost/consumer/dept/get/1

访问结果如下,表示这段代码通过修改后的微服务名可以获得访问。

image.png

刷新 eureka ,在 eureka7003.com7003中出现了以下结果。

image.png

表面上 rest 的地址还是http://localhost/consumer/dept/get/1但是现在不再使用写死的地址找8001调用。在 eureka 上查找到名字为 MICRSEVICECLOUD-DEPT 的微服务获得答案。在以下网站中演示都可以成功,这里不做具体演示。

http://localhost/consumer/dept/get/1

http://localhost/consumer/dept/list

http://localhost/consumer/dept/add?dname=大数据部

 

三、总结

Ribbon 和 Eureka  整合后 Consumer可以直接调用服务而不用关心地址和端口号。

地址变成微服务名进行访问: private ststic final String REST_URL_PREFIX=http://MICRSEVICECLOUD-DEPT;

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
负载均衡 Java Spring
Ribbon的超时配置会覆盖OpenFeign的超时配置吗
该文章详细分析了OpenFeign与Ribbon之间的超时配置关系,解释了Ribbon如何覆盖OpenFeign的默认超时配置,并探讨了OpenFeign超时配置的动态修改方案。
|
6月前
Springcloud-ribbon和hystrix配置
Springcloud-ribbon和hystrix配置
42 0
|
6月前
|
负载均衡 算法 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
121 0
|
缓存 负载均衡 算法
十四.SpringCloud源码剖析-Ribbon的初始化配置
前面我们分析了Eureka的源码,接下来这一章我们来研究一下Ribbon,本篇文章主要是对Ribbon的相关组件做一个认识,以及它的初始化配置做一个分析。
|
Java Spring
Spring Cloud Alibaba - 09 Ribbon 饥饿加载及其他配置参数解读
Spring Cloud Alibaba - 09 Ribbon 饥饿加载及其他配置参数解读
160 0
|
负载均衡 算法 Java
Spring Cloud Alibaba - 08 Ribbon 两种方式实现细粒度自定义配置控制微服务的负载均衡策略
Spring Cloud Alibaba - 08 Ribbon 两种方式实现细粒度自定义配置控制微服务的负载均衡策略
129 0
|
负载均衡 网络协议 Java
Spring Cloud 学习笔记04----服务消费者(RestTemplate+Ribbon(客户端负载均衡))
上一篇《Spring Cloud 学习笔记02----服务治理》我们讲到了服务的注册与发现,在微服务框架中,我们将服务拆分成一个个独立部署的子服务,这些服务通过http rest 来通讯的,Spring Cloud有两种服务调用方式,一种是 RestTemplate+Ribbon, 另外一种是Feign 。
154 0
Spring Cloud 学习笔记04----服务消费者(RestTemplate+Ribbon(客户端负载均衡))
|
负载均衡 算法 Java
自定义 Ribbon 的负载均衡策略(上)|学习笔记
快速学习自定义 Ribbon 的负载均衡策略(上)
144 0
自定义 Ribbon 的负载均衡策略(上)|学习笔记
|
负载均衡 算法 Java
Ribbon 负载均衡|学习笔记
快速学习 Ribbon 负载均衡
Ribbon 负载均衡|学习笔记
|
负载均衡 算法
03、SpringCloud之Ribbon(netflix)学习笔记(二)
03、SpringCloud之Ribbon(netflix)学习笔记(二)
03、SpringCloud之Ribbon(netflix)学习笔记(二)