这篇文章主要是介绍一下ribbon的用法,我们都知道ribbon是负载均衡,但是却不知道他是怎么样的负载均衡,怎么用,能干嘛?

● 其实,简单的说,Spring Cloud Ribbon是基于Netfilx Ribbon实现的一套客户端 负载均衡的工具

Ribbon是Netfilx发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netfilx的中间层服务连接在一起,Ribbon客户端组件提供一系列完善的配置如连接超时,重试等,简单的说,就是在配置文件中列出Load Balander(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法

测试一下ribbon的用法,在网上找了好久,终于找到一个博主的架构流程图,我觉得还是比较符合ribbon实现的具体用法,简单易懂,一看就明白

实现这个ribbon的测试必须得有两个服务端和一个客户端,这都看到了吧。所以接下来,要创建服务端了

首先,这是在上篇文章的基础上实现的,eureka已经有了,直接创建服务一,命名为study-ms,一定要选中这个,别问为啥,自己百度,请耐心看下去

●添加配置文件,在application.properties里面,内容是:

server.port=8003
spring.application.name=study-ms
eureka.client.service-url.defaultZone=http://localhost:8001/eureka/

●添加pom.xml

    <parent>
<groupId>com.study</groupId>
<artifactId>study-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../study-cloud/pom.xml </relativePath><!-- lookup parent from repository -->
</parent> <groupId>com.study</groupId>
<artifactId>study-ms</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>study-ms</name>
<description>Demo project for Spring Boot</description> <dependencies>
<dependency>
<groupId>com.study</groupId>
<artifactId>study-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency> <!--配置中心jar包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency> <!--MyBatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
     </dependencies>

●在启动类上加@EnableEurekaClient,截图省略......

●添加一个controller实现类,加一个test测试方法

这个时候,服务一就创建好了

其次,服务二的创建方法同样,照着上面的整就行了,连controller都是写的一样的哦,这里命名为study-toms,唯一不同的是,服务端口不一样,配置文件如下:

△ 看清楚了,study-ms和study-toms这俩服务端,只有端口不一样,一个是8003,一个是8004,其他的都是一模一样的,

这里有个非常重要的点就是,这里服务的命名是一样的,为啥?往下看吧!

最后,俩服务端创建好了,接下来就是创建客户端了,命名为study-web

●application.properties 配置文件如下:

●pom.xml

 <parent>
<groupId>com.study</groupId>
<artifactId>study-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../study-cloud/pom.xml </relativePath><!-- lookup parent from repository -->
</parent>
<groupId>com.study</groupId>
<artifactId>study-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>study-web</name>
<description>Demo project for Spring Boot</description> <dependencies>
<dependency>
<groupId>com.study</groupId>
<artifactId>study-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
</dependencies>

●启动类上添加注解和方法

●新增一个访问的controller类,添加一个test方法,注意这个访问路径,服务名字是study-ms

 最最后,依次启动 注册中心study-eureka(8001)、服务端一 study-ms(8003)、服务端二 study-toms(8004)、客户端 study-web(8002)

这个时候会看到STUDY-MS是对应两个服务的,这就是上面为啥配置的时候把服务名字写的一样的原因了,因为这是本地测试,如果是不同服务器上启动同一个服务就会这样

继续,通过浏览器访问路径http://localhost:8002/test,多刷新几次你会发现结果:

这就是客户端的负载均衡啦,理解可能不够完善,欢迎交流和指正

基于springcloud搭建项目-Ribbon篇(三)的更多相关文章

  1. 基于SpringCloud搭建项目-Zuul篇(六)

    本文主要介绍zuul的基本原理和在sprngcloud服务下如何使用 一.简单介绍 Zuul 是 Netflix OSS 中的一员,是一个基于 JVM 路由和服务端的负载均衡器.提供路由.监控.弹性. ...

  2. 基于springcloud搭建项目-Hystrix篇(五)

    1.概述 (1).首先要知道分布式系统面临的问题复杂分布式体系结构中应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败 (2).服务雪崩 多个服务之间相互调用的时候,假设微服务A调用微服 ...

  3. 基于springcloud搭建项目-Feign篇(四)

    上一篇已经写过ribbon客户端负载均衡的用法了,这篇主要是介绍feign的用法,首先我们必须了解feign是什么?能干嘛?怎么用? 这里简单介绍一下,然后进行代码测试 1.概述 Feign是一个声明 ...

  4. 基于springcloud搭建项目-公共篇(二)

    上一篇已经写过如何搭建注册中心eureka,这一篇主要是搭建一些公共的api接口服务,并把实体类单独拿出来放到一个服务上引用,比较简单的 1.首先.创建一个实体类服务,这样就不用在每个服务里创建实体了 ...

  5. 基于springcloud框架搭建项目-Eureka篇(一)

    springcloud项目近年来算是很流行的了,不少公司项目目前都用到了,毕竟优点很多,刚好公司项目用到了,根据自己的理解,简单搭建一下,以便以后学习 这里简单的介绍一下它: SpringCloud, ...

  6. Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言介绍 微服务不是泥球小单体,而是具备更加清晰职责边界的完整一体的业务功能服务.领域驱动 ...

  7. SpringMvc+JavaConfig+Idea 基于JavaConfig搭建项目

    1.介绍 之前搭建SpringMvc项目要配置一系列的配置文件,比如web.xml,applicationContext.xml,dispatcher.xml.Spring 3.X之后推出了基于Jav ...

  8. SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]

    目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...

  9. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

随机推荐

  1. [LC] 121. Best Time to Buy and Sell Stock

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  2. @EnableWebMvc WebMvcConfigurer CorsConfig

    package me.zhengjie.core.config; import org.springframework.context.annotation.Configuration; import ...

  3. mongo rename collection

    db.getCollection('a').renameCollection("b"); db.getCollection('a').find({}, {_id: 0}).forE ...

  4. sql 日期表示

    今年时间 昨天,等于0表示今天 =month(时间对应列名) 上月

  5. 在mysql中生成数据库和数据表

    #创建数据库CREATE DATABASE s4day65 DEFAULT CHARSET utf8; #班级表 CREATE TABLE class (id INT NOT NULL AUTO_IN ...

  6. 前端-bootstrap-长期维护

     ###############    bootstrap简介     ################ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. ...

  7. 1 jquery对checkbox的简单操作

    //全选和全不选 votefunction selectAll(){ if($(":checkbox").prop('checked')){     //$(":chec ...

  8. 吴裕雄--天生自然HTML学习笔记:HTML 统一资源定位器(Uniform Resource Locators)

    URL 是一个网页地址. URL可以由字母组成,如"runoob.com",或互联网协议(IP)地址: 192.68.20.50.大多数人进入网站使用网站域名来访问,因为 名字比数 ...

  9. 吴裕雄--天生自然HTML学习笔记:HTML 简介

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 吴裕雄--python学习笔记:通过sqlite3 进行文字界面学生管理

    import sqlite3 conn = sqlite3.connect('E:\\student.db') print("Opened database successfully&quo ...