SpringCloud微服务学习----------Ribbon负载均衡
程序员文章站
2022-06-22 19:28:04
...
RIBBON实现软负载均衡如下三点
服务发现就是依据名字把所属的实例全部找出来,
服务规则就是如何从多个实例种选出一个实例来服务,
服务监听就是检查出失效的服务,高效剔除
流程如下
通过ServerList查出所有可用列表,然后通过ServerListFilter过滤掉一部分地址,最后再从IRule中选出一个服务为此次服务
默认的负载均衡策略是轮询下面建立一个小测试测试一下
首先建立两个服务 并注册一个名字,然后里面一个内容写1,一个写2
server.port=30525
#applications
spring.datasource.url=jdbc:oracle:thin:@192.168.66.226:1521:znjt
spring.datasource.username=znjtpostman
spring.datasource.password=znjtpostman
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#mybatis
#mybatis.mapper-locations=classpath:/mappers/postman/*Mapper.xml
mybatis.mapper-locations=classpath*:com/sola/mappers/**/*.xml
#mybatis.type-aliases-package=briliance.znjt.business.template.entity
spring.application.name=EurekaClient-PostMan
eureka.client.service-url.defaultZone: http://localhost:30520/eureka/,http://localhost:31520/eureka/
server.port=30522
#applications
spring.datasource.url=jdbc:oracle:thin:@192.168.66.226:1521:znjt
spring.datasource.username=znjtpostman
spring.datasource.password=znjtpostman
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#mybatis
#mybatis.mapper-locations=classpath:/mappers/postman/*Mapper.xml
mybatis.mapper-locations=classpath*:com/sola/mappers/**/*.xml
#mybatis.type-aliases-package=briliance.znjt.business.template.entity
spring.application.name=EurekaClient-PostMan
eureka.client.service-url.defaultZone: http://localhost:30520/eureka/,http://localhost:31520/eureka/
然后我们去建立个服务去调用测试
package com.sola.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import com.sola.dao.RoadWorkDao;
@Service
public class RoadWorkService {
@Autowired
private RoadWorkDao resourcesdao;
@Autowired
private RestTemplate resttemplate;
public Map<String, Object> findroadwork() {
// TODO Auto-generated method stub
List<Map<String, Object>> list = null ;
Map<String,Object> map = new HashMap<>();
list = resourcesdao.findroadwork();
String forObject = resttemplate.getForObject("http://EUREKACLIENT-POSTMAN/eurekaApi/test", String.class);
map.put("postman", forObject);
map.put("data", list);
return map;
}
}
SWAGGER测试结果
点一下换一次说明默认确实是轮询
可更换几种负载方式
https://blog.csdn.net/liuchuanhong1/article/details/54693124
代码示例
在调用服务的application.properties配置加入
EUREKACLIENT-POSTMAN.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
//格式 实例名字.固定格式
//这个是测试了一个随机服务
测试真的按照了随机来调用服务=。=
上一篇: 立哥版-无线电通讯简史
下一篇: 携手分布式存储 助力智慧城市建设
推荐阅读
-
SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)
-
[SpringCloud学习笔记3]SpringCloud服务调用(ribbon,openFeign)
-
SpringCloud微服务(二)Fegin负载均衡遇到的问题和解决方案
-
SpringCloud-客户端的负载均衡Ribbon
-
spring cloud系列学习(SpringCloud之服务注册之Ribbon负载均衡)
-
SpringCloud_4Ribbon负载均衡服务调用和OpenFeign服务接口调用学习笔记
-
SpringCloud学习笔记(六):Feign+Ribbon负载均衡
-
springCloud搭建微服务集群+Zuul服务器端负载均衡
-
SpringCloud(三):服务消费以及负载均衡(RestTemplate+Ribbon)
-
微服务架构实战学习笔记 第四章 Spring Cloud Netflix Ribbon与负载均衡