4、Spring Cloud-负载均衡 Ribbon
4.1、RestTemplate 简介
4.2、Ribbon 简介
4.3、使用RestTemplate和Ribbon来消费
ProviderService.java
package com.cr.eurekaclient.service;
import org.springframework.stereotype.Service; @Service
public class ProviderService { public String port(){
return "";
}
}
PortController.java
package com.cr.eurekaclient.controller; import com.cr.eurekaclient.service.ProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class PortController { @Autowired
ProviderService providerService; @GetMapping("/port")
public String getPort(){
return providerService.port();
}
}
配置文件:
server.port=
spring.application.name=CLINET
#应用起名字spring.application.name=provider
#注册服务时使用服务的ip地址
eureka.instance.prefer-ip-address=true
#服务中心地址
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/
访问:
去注册中心可以看到此时的服务已经在注册中心注册:
这里的Application将会是消费者中引用的地址!!!
服务的消费者:
RibbonConfig.java
@Configuration
public class RibbonConfig { @Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
RibbonController.java
@RestController
public class RibbonController {
@Autowired
RibbonService ribbonService; @GetMapping("/port")
public String port(){
return ribbonService.port();
}
}
@Service
public class RibbonService { @Autowired
RestTemplate restTemplate; public String port(){
return restTemplate.getForObject("http://CLINET/port",String.class);
}
}
http://CLINET/port中的CLIENT为注册中心中的Application中的值
@EnableEurekaClient
@SpringBootApplication
public class EurekaRibbonClientApplication { public static void main(String[] args) {
SpringApplication.run(EurekaRibbonClientApplication.class, args);
}
}
配置文件:
spring.application.name=eureka-ribbon-client
server.port=
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/
@LoadBalanced开启负载均衡功能
测试实现:
同时也将8090换成8089,使用maven进行打包
在cmd中运行两个项目:
此时8089、8090端口都可以进行访问
http://localhost:8088/port页面进行刷新请求
4.4、loadBalancerClient 简介
在工程中进行测试:
RibbonController.java
package com.cr.eurekaribbonclient.controller; import com.cr.eurekaribbonclient.service.RibbonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class RibbonController {
@Autowired
RibbonService ribbonService; @GetMapping("/port")
public String port(){
return ribbonService.port();
} @Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/testRibbon")
public String testRibbon(){
ServiceInstance instance = loadBalancerClient.choose("CLINET");
return instance.getHost()+ ":" + instance.getPort();
}
}
spring.application.name=eureka-ribbon-client
server.port=
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/
stores.ribbon.listOfServers:example.com,google.com
ribbon.eureka.enabled=false
package com.cr.eurekaribbonclient.controller; import com.cr.eurekaribbonclient.service.RibbonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class RibbonController {
@Autowired
RibbonService ribbonService; @GetMapping("/port")
public String port(){
return ribbonService.port();
} @Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/testRibbon")
public String testRibbon(){
ServiceInstance instance = loadBalancerClient.choose("CLINET");
return instance.getHost()+ ":" + instance.getPort();
} //进一步说明
@GetMapping("/hi")
public String hi(){
ServiceInstance instance = loadBalancerClient.choose("stores");
return instance.getHost()+ ":" + instance.getPort();
}
}
4、Spring Cloud-负载均衡 Ribbon的更多相关文章
- spring Cloud负载均衡Ribbon
Ribbon饥饿加载 默认情况下Ribbon是懒加载的.当服务起动好之后,第一次请求是非常慢的,第二次之后就快很多. 解决方式:开启饥饿加载 ribbon: eager-load: enabled: ...
- Spring Cloud 负载均衡初体验
目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...
- Spring Cloud负载均衡:使用zuul作服务器端负载均衡
1.目的: 本文简述Spring Cloud负载均衡之服务器负载均衡模式,使用组件为zuul. zuul作为Spring Cloud中的网关组件,负责路由转发.身份验证.请求过滤等等功能,那么我们可以 ...
- Spring Cloud负载均衡:使用Feign作客户端负载均衡
有了一篇服务端负载均衡后,再来一篇客户端负载均衡,客户端负载均衡很简单,无需在zuul中做多余配置(本示例不引入zuul),只需要在客户端进行Feign引入和配置即可. 准备工作很简单,实现客户端负载 ...
- Spring Cloud 客服端负载均衡 Ribbon
一.简介 Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署, ...
- Spring Cloud(Dalston.SR5)--Ribbon 中间层负载均衡
Spring Cloud 集成了 Ribbon 并结合 Eureka 可以实现客户端的负载均衡,使用 @LoadBalanced 修饰的 RestTemplate 类拥有了负载均衡功能,在 Sprin ...
- Spring Cloud:使用Ribbon实现负载均衡详解(下)
在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...
- Spring Cloud第四篇 | 客户端负载均衡Ribbon
本文是Spring Cloud专栏的第四篇文章,了解前三篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...
- 2.【Spring Cloud Alibaba】实现负载均衡-Ribbon
负载均衡的两种方式 如何实现负载均衡 目前已经实现让A总能找到B,如何实现负载均衡 负载均衡的两种方式 服务器端负载均衡 客户端负载均衡 使用Ribbo实现负载均衡 Ribbon是什么 ==Netfl ...
- SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解
前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...
随机推荐
- 错误:Attempted to load applicationConfig: [classpath:/application.yml] but snakeyaml was not found on the classpath
MyEclipse导入工程,报错如下: ::42.187 [main] ERROR org.springframework.boot.SpringApplication - Application r ...
- Runtime 打开记事本
package com.direct.str; import java.io.IOException; public class RunTimeDemo { /** * @param args */ ...
- django框架中form表单Post方法无法提交 Forbidden (403) CSRF verification failed. Request aborted.
问题如图: 解决方法: 在视图函数中引入并使用装饰器 from django.views.decorators.csrf import csrf_exempt @csrf_exempt
- BZOJ1149 [CTSC2007]风玲
Description Input Output 输出仅包含一个整数.表示最少需要多少次交换能使风铃满足Ike的条件.如果不可能满足,输出-1. Sample Input 6 2 3 -1 4 5 6 ...
- Liunx一些命令
1.设置管理员的密码:sudo passwd root2.获取管理员权限su root3.查看IP地址sudo ifconfig -a4.创建一个文件sudo touch test.txt5.创建一个 ...
- 用CSS3/JS绘制自己想要的按钮
我认为按钮的绘制分以下三个步骤 第一步,绘制按钮的轮廓 选择合适的html标签,设置轮廓的CSS /* html代码 */ <a href="#" class="b ...
- layui-table渲染不出来
通过方法渲染 页面代码: <table id="tableList" lay-filter="clublist"></table> js ...
- 使用Hugo搭建个人博客站点
Hugo是个什么东东这里直接忽略,想了解的请查阅其他资料,我们直接上手操作. 安装Hugo 到 Hugo Releases 下载对应的操作系统版本的Hugo二进制文件 解压后得到 hugo_0.17_ ...
- Angular1.x 基础总结
官方文档:Guide to AngularJS Documentation w3shools angularjs教程 wiki <AngularJS权威教程> Introd ...
- qss 对子控件的设置样式 使用setProperty --Qt 之 QSS(动态属性)
https://blog.csdn.net/liang19890820/article/details/51693956 学习了 代码: 当鼠标划过控件时,设置样式 void CustomLabelW ...