spring-cloud-ribbon负载均衡(一)
来源:互联网 发布:淘宝店usa商城是正品吗 编辑:程序博客网 时间:2024/06/13 22:23
在dubbo项目中, zookeeper即注册中心帮我们实现了调度和负载均衡的能力, 这种方式被称为服务器端的负载均衡, springcloud中, 使用ribbon实现的客户端负载均衡
1、Eureka为所有Netflix服务提供服务注册。Ribbon客户端的创建和配置为每个目标服务执行。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:
(1) 简单轮询负载均衡
(2) 加权响应时间负载均衡
(3) 区域感知轮询负载均衡
(4) 随机负载均衡
2、ribbon用以实现负载均衡;实现软负载均衡,核心有三点:
服务发现,发现依赖服务的列表
服务选择规则,在多个服务中如何选择一个有效服务
服务监听,检测失效的服务,高效剔除失效服务
3、代码结构
使用@RibbonClients注解 ,在getServerList方法中,首先获取ZoneAwareLoadBalancer,然后获取serverList,获取到serverList以后即可选择一个有效服务进行调度(默认轮询)
4、application
package com.wei.qin;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.ribbon.RibbonClients; /** * ribbon启动 * * @auther dwx * * 2017年8月21日 */@SpringBootApplication @RibbonClients public class RibbonApplication { public static void main(String[] args) { SpringApplication.run(RibbonApplication.class, args); } }
5、controller
package com.wei.qin;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.netflix.ribbon.SpringClientFactory;import org.springframework.util.CollectionUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import com.netflix.loadbalancer.Server;import com.netflix.loadbalancer.ServerList;import com.netflix.loadbalancer.ZoneAwareLoadBalancer;@RestControllerpublic class ConfigController { @Autowired private SpringClientFactory clientFactory; @SuppressWarnings("unchecked") @RequestMapping("/ribbon") @ResponseBody public String getServerList() throws Exception { ZoneAwareLoadBalancer<Server> lb = (ZoneAwareLoadBalancer<Server>) clientFactory.getLoadBalancer("myclient"); ServerList<Server> serverList = lb.getServerListImpl(); List<Server> serverDetailList = serverList.getInitialListOfServers(); StringBuilder sfd = new StringBuilder(); if (!CollectionUtils.isEmpty(serverDetailList)) { for (Server s : serverDetailList) { sfd.append(s.getHost()).append(",").append(s.getHost()).append("\n"); } } else { sfd.append("no message"); } return sfd.toString(); }}
6、application.properties
ribbon.client.name=myclientserver.port=8086server.tomcat.accept-count=5000 server.tomcat.max-threads=5000server.tomcat.max-connections=5000
7、config.properties
myclient.ribbon.ReadTimeout=3000myclient.ribbon.ConnectTimeout=3000myclient.ribbon.ServerListRefreshInterval=2000myclient.ribbon.OkToRetryOnAllOperations=truemyclient.ribbon.MaxAutoRetriesNextServer=1myclient.ribbon.MaxAutoRetries=1#\u8868\u660E\u6709\u6548\u7684\u670D\u52A1\u5217\u8868myclient.ribbon.listOfServers=www.baidu.com:80,www.163.com:80,www.csdn.net:80
8、pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wei.qin</groupId> <artifactId>springcloudribbon</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloudribbon</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix</artifactId> <version>1.0.7.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--ribbon--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> </dependencies> </project>
阅读全文
0 0
- spring-cloud-ribbon负载均衡(一)
- Spring Cloud -- Ribbon负载均衡
- Spring-Cloud 负载均衡 Ribbon
- 【Spring Cloud】Ribbon负载均衡
- spring cloud ribbon自定义负载均衡策略
- Spring Cloud 客服端负载均衡 Ribbon
- Spring Cloud 客服端负载均衡 Ribbon
- Spring Cloud Ribbon(负载均衡)
- spring-cloud-ribbon负载均衡(二)
- 负载均衡之Spring Cloud Ribbon
- 三、Spring Cloud 的 Ribbon 负载均衡
- 客户端负载均衡 Spring Cloud Ribbon
- Spring Cloud学习--负载均衡(Ribbon)
- spring cloud Ribbon 2 (客户端负载均衡)
- spring cloud使用ribbon实现负载均衡
- 【Spring Cloud】--客户端负载均衡Spring Cloud Ribbon
- Spring Cloud Netflix负载均衡组件Ribbon介绍
- spring cloud中Ribbon自定义负载均衡策略
- 京东实习总结
- maven+struts2项目简单演示
- 3.Longest Substring Without Repeating Characters
- 简单学习正则表达式
- CodeForces
- spring-cloud-ribbon负载均衡(一)
- springboot_学习1
- TCP IP 协议
- ffmpeg编译安装
- 内部排序思想、直接插入排序法
- codevs 1302 小矮人 凸包 解题报告
- Java IO流之拷贝(复制)文件
- 仿qq用户头像上传
- hud6154