SpringCloud微服务学习----------Ribbon负载均衡

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
//格式 实例名字.固定格式
//这个是测试了一个随机服务

测试真的按照了随机来调用服务=。=

猜你喜欢

转载自blog.csdn.net/jiulanhao/article/details/82624731