基于springcloud搭建项目-Ribbon篇(三)
这篇文章主要是介绍一下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篇(三)的更多相关文章
- 基于SpringCloud搭建项目-Zuul篇(六)
本文主要介绍zuul的基本原理和在sprngcloud服务下如何使用 一.简单介绍 Zuul 是 Netflix OSS 中的一员,是一个基于 JVM 路由和服务端的负载均衡器.提供路由.监控.弹性. ...
- 基于springcloud搭建项目-Hystrix篇(五)
1.概述 (1).首先要知道分布式系统面临的问题复杂分布式体系结构中应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败 (2).服务雪崩 多个服务之间相互调用的时候,假设微服务A调用微服 ...
- 基于springcloud搭建项目-Feign篇(四)
上一篇已经写过ribbon客户端负载均衡的用法了,这篇主要是介绍feign的用法,首先我们必须了解feign是什么?能干嘛?怎么用? 这里简单介绍一下,然后进行代码测试 1.概述 Feign是一个声明 ...
- 基于springcloud搭建项目-公共篇(二)
上一篇已经写过如何搭建注册中心eureka,这一篇主要是搭建一些公共的api接口服务,并把实体类单独拿出来放到一个服务上引用,比较简单的 1.首先.创建一个实体类服务,这样就不用在每个服务里创建实体了 ...
- 基于springcloud框架搭建项目-Eureka篇(一)
springcloud项目近年来算是很流行的了,不少公司项目目前都用到了,毕竟优点很多,刚好公司项目用到了,根据自己的理解,简单搭建一下,以便以后学习 这里简单的介绍一下它: SpringCloud, ...
- Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言介绍 微服务不是泥球小单体,而是具备更加清晰职责边界的完整一体的业务功能服务.领域驱动 ...
- SpringMvc+JavaConfig+Idea 基于JavaConfig搭建项目
1.介绍 之前搭建SpringMvc项目要配置一系列的配置文件,比如web.xml,applicationContext.xml,dispatcher.xml.Spring 3.X之后推出了基于Jav ...
- SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]
目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...
- 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构
系列目录 一. 创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...
随机推荐
- Ananconda常用指令
Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项,可用于解决开发过程中遇到python版本需要切换的问题. conda有一点好处是,如 ...
- python3下scrapy爬虫(第五卷:初步抓取网页内容之scrapy全面应用)
现在爬取http://category.dangdang.com/pg1-cid4008149.html网址上的商品价格,名称,评价数量 先准备下下数据:商品名,商品链接,评价数量 第一步:在item ...
- XP停止更新不用愁 瑞星XP护盾给你持续保护
4月8日,微软正式结束了Windows XP的支持,所有XP系统将不会再收到来自微软提供的补丁和安全更新等服务,叱咤OS江湖十几年的一代操作系统终于完美谢幕.但谢幕不等于消失,据相关机构统计,虽然微软 ...
- css3 - transform, transition 与 translate
零.序言 css 3 的新特性,很多都停留在听说而非实际使用.transform, transition, translate 这三长得实在太像,刚开始的时候总是迷迷糊糊,分不清它们的功能.而最近新接 ...
- python3下scrapy爬虫(第一卷:安装问题)
一般爬虫都是用urllib包,requests包 配合正则.beautifulsoup等包混合使用,达到爬虫效果,不过有框架谁还用原生啊,现在我们来谈谈SCRAPY框架爬虫, 现在python3的兼容 ...
- SHELL的判断括号区别
在使用if语句时,经常会使用().(()).[].[[]].{}等括号,如下为几种括号简单区别对比: ( ) 用于多个命令组.命令替换.初始化数组: (( )) 整数扩展.运算符.重定义变量值,算术运 ...
- Java的同步和异步
同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同 ...
- cesium入门示例-3dTiles加载
数据转换工具采用cesiumlab1.5.17版本,转换后的3dTiles加载显示比较简单,通过Cesium.Cesium3DTileset接口指定url即可,3dTiles文件可与js前端代码放置一 ...
- 修改 commit message
本文为原创文章,转载请标明出处 目录 修改上一条提交的 commit message 修改之前提交的 commit message 1. 修改上一条提交的 commit message git com ...
- 秒搭Kubernetes之使用Rancher
Rancher 在接触Docker和K8s的前阶段就耳闻目睹到Rancher,但是没有进一步接触过.直到将K8s搭建完成.才进一步了学习与实践Rancher. Rancher是简便易用的容器管理.其中 ...