文章目录
简介快速入门测试
简介
Ribbon项目托管在 github 上,其对Ribbon的简介为:Ribbon是一个具有内置软件负载均衡器的进程间通信(远程过程调用)库。主要的使用模型涉及到支持各种序列化方案的REST调用。
快速入门
与学习eureka时类似,首先我们先创建一个ribbon-learn模块,然后在其中创建子模块,包括两个服务提供模块和一个消费模块。项目结构如下: 在provider模块,pom文件中除去暂时只有两个依赖(与前文的Eureka Client的依赖一致):
其中provider的配置文件如下:
server:
port: 8080 # providerB的端口为8081
spring:
application:
name: provider
eureka:
client:
service-url:
defaultZone: http://192.168.13.14:8761/eureka
register-with-eureka: true
fetch-registry: true
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true # 以 ip 形式显示具体的服务信息
两个provider模块中都有一个测试用的controller,他们简单的返回一个字符串,说明当前的服务名;
在consumer模块中,与provider模块不同,新增了ribbon的依赖:
在配置文件中,出应用名与端口号不同于provider外,其余都一致;
server:
port: 8082
spring:
application:
name: consumer
eureka:
client:
service-url:
defaultZone: http://192.168.13.14:8761/eureka
register-with-eureka: true
fetch-registry: true
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true # 以 ip 形式显示具体的服务信息
此外,在配置类中,注入了RestTemplate,我们在该Bean上加上了ribbon的 @LoadBalanced 注解,将resttemplate交给ribbon进行管理。 然后,在consumer模块中添加一个测试的controller类,如下: 说明:在引入ribbon后,它会拦截我们的请求,然后根据Eureka Server中服务的信息对请求的url进行重构,并进行负载均衡。更加深入的原理,后文会继续探究。
测试
前提:我们的Eureka Server服务已经部署至服务器且一致运行;
依次启动我们创建的三个模块;访问consumer的接口:http://localhost:8082/consumer?serverName=provider多重复几次
然后我们就可以看到每次访问都返回了不同的值,证明ribbon确实对访问请求进行了负载均衡,且采用了轮询的策略。
以上就是ribbon的一个入门使用介绍,想要继续了解ribbon,可以阅读本专栏后续更新文章。
好文阅读
发表评论