您现在的位置是:主页 > 数据库技术 > 数据库技术

Spring Cloud如何使用Ribbon

IDCBT2021-12-25服务器技术人已围观

简介这篇文章主要介绍了Spring Cloud如何使用Ribbon,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 8 Spring Cloud与

这篇文章主要介绍了Spring Cloud如何使用Ribbon,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

8 Spring Cloud与RibbonRibbon8.1 准备工作

        为了本小节的测试做准备,按顺序进行以下工作:

         新建Eureka服务器端项目,命名为“cloud-server”,端口8761,

            代码目录codes\04\4.4\cloud-server。

         新建Eureka服务提供者项目,命名为“cloud-provider”,

            代码目录codes\04\4.4\cloud-provider,该项目主要进行以下工作:

            1. 在控制器里面,发布一个REST服务,地址为“/person/{personId}”,

                请求后返回Person实例,其中Person的message为HTTP请求的URL。

            2. 服务提供者需要启动两次,因此在控制台中需要输入启动端口。

         新建Eureka服务调用者项目,命名为“cloud-invoker”,对外端口为9000,

            代码目录codes\04\4.4\cloud-invoker。本例的负载均衡配置主要针对服务调用者。

        以上项目准备完成并启动后,结构如图4-2所示。

图4-2 准备的项目结构图

        注意:Eureka相关项目的建立,可参见前面章节。

8.2 使用代码配置Ribbon

        在前面章节讲述了负载规则以及Ping,在Spring Cloud中,可将自定义的负载规则以及Ping类,放到服务调用者中,查看效果。新建自定义的IRule与IPing,两个实现类请见代码清单4-11。

        代码清单4-11:

        codes\04\4.4\cloud-invoker\src\main\java\org\crazyit\cloud\MyRule.java

        codes\04\4.4\cloud-invoker\src\main\java\org\crazyit\cloud\MyPing.java

package org.crazyit.cloud;

import java.util.List;

import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.Server;

public class MyRule implements IRule {
	
	private ILoadBalancer lb;

	public Server choose(Object key) {
		List<Server> servers = lb.getAllServers();
		System.out.println("这是自定义服务器定规则类,输出服务器信息:");
		for(Server s : servers) {
			System.out.println("        " + s.getHostPort());
		}
		return servers.get(0);
	}

	public void setLoadBalancer(ILoadBalancer lb) {
		this.lb = lb;
	}

	public ILoadBalancer getLoadBalancer() {
		return this.lb;
	}
}

标签:

很赞哦! ()

本栏推荐