Ribbon

Ribbon是什么?
是netflix 开发的基于 客户端 的 负载均衡工具。

Load Balance 负载均衡

HA 高可用
常用的LB ngix LVS

Ribbon的负载均衡方法,除了给我们提供的之外。我们可以自定义

LB 在消费方。 进程内LB

因为是客户端的负载均衡,其实客户端也是在服务端,就是发起者
现在pom中引入第一部

 <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>

第二部,配置类上的配置

@Configuration
public class ConfigBean //boot -->spring   applicationContext.xml --- @Configuration配置   ConfigBean = applicationContext.xml
{ 
	@Bean
	@LoadBalanced//Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端       负载均衡的工具。
	public RestTemplate getRestTemplate()
	{
		return new RestTemplate();
	}
	}

只有一个注解@LoadBalance

第三部,main启动类配置

@EnableEurekaClient

在controller中将路径改掉

	//private static final String REST_URL_PREFIX = "http://localhost:8001";
	private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";

域名改成微服务名称。 这是因为Ribbon和Eureka 的整合
整个过程就是为了实现这个。
Ribbon默认的负载方式,就是轮询,和图片轮询一样

我们将微服务的提供者也分布式。也即是建立多个一样的。
注册与发现应该就是为了方便管理,集群的目的是可靠
主要修改的是yml文件。一个是端口号。一个是数据库。 端口号的修改是计算机冲突问题,数据库修改,减轻数据库压力。
但是applicationname不能变,因为这三个都是一个功能。

测试顺序
先自己自测
然后通过注册, 再测
客户端 和服务端的理解 对于Eureka来说 ,其他都是客户端, 对于两个服务来说,调用者就是客户端,被吊着就是服务。

Ribbon是从Eureka中找到可用服务,然后轮询,也就是客户端负载。

默认的7种
RoundRobinRule 轮询
RandomRule 随机
如果现在不用默认的用随机

@Configuration
public class ConfigBean //boot -->spring   applicationContext.xml --- @Configuration配置   ConfigBean = applicationContext.xml
{ 
	@Bean
	@LoadBalanced//Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端       负载均衡的工具。
	public RestTemplate getRestTemplate()
	{
		return new RestTemplate();
	}
	
	@Bean
	public IRule myRule()
	{
		//return new RoundRobinRule();
		//return new RandomRule();//达到的目的,用我们重新选择的随机算法替代默认的轮询。
		return new RetryRule();
	}
}

就是在配置文件中处理因为主要用的就是RestTemplate这个对象。所以 创建已经实现的对象,随机

@Configuration
public class MySelfRule
{
@Bean
public IRule myRule()
{
//return new RandomRule();// Ribbon默认是轮询,我自定义为随机
//return new RoundRobinRule();// Ribbon默认是轮询,我自定义为随机

	return new RandomRule_ZY();// 我自定义为每台机器5次
}

}

如果你想给一个服务自定义负载均衡的机制
我们需要新建一个包。和main包并列
否则,还是全体生效。

package myrule;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;

@Configuration
public class MySelfRule
{
	@Bean
	public IRule myRule()
	{
		//return new RandomRule();// Ribbon默认是轮询,我自定义为随机
		//return new RoundRobinRule();// Ribbon默认是轮询,我自定义为随机
		
		return new RandomRule_ZY();// 我自定义为每台机器5次
	}
}

main类上添加

@RibbonClient(name="MICROSERVICECLOUD-DEPT",configuration= MySelfRule.class)

可以自己定义规则
在源码上改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值