当前位置: 首页 > news >正文

客户端负载均衡Ribbon 小实例

文章目录

  • 一,概述
  • 二,实现过程
  • 三,项目源码
    • 1. 源码放送:
    • 2. 部署方式
  • 四,功能演示
  • 五,其他

一,概述

一般来说,提到负载均衡,大家一般很容易想到浏览器 -> NGINX -> 反向代理多个Tomcat这样的架构图——业界管这种负载均衡模式叫“服务器端负载均衡”,因为此种模式下,负载均衡算法是NGINX提供的,而NGINX部署在服务器端。

二,实现过程

一般情况下,负载均衡组件Ribbon和微服务注册中心Eureka是配合使用的。
为了在非springCloud微服务项目中,使用Ribbon的客户端负载均衡能力,我们可以按如下步骤实现:

  1. 定义服务的被调用方Client,编写webApi接口
  2. 定义服务的调用方Cousumer,调用webApi接口
  3. 定义网关模块Gateway,通过定义路由的方式重新定义webApi接口路径,并引入Ribbon客户端负载均衡
  4. 将步骤2中的WebApi地址切换为网关模块路由接口地址,从而使原来的webApi地址具有了客户端负载均衡功能
  5. 使用docker部署Client(多实例)、Gateway,并在编排文件中使用服务名代替客户端列表地址,解耦Cousumer与Client之间的代码接口。

三,项目源码

在这里插入图片描述

1. 源码放送:

https://gitee.com/00fly/microservice-all-in-one/tree/master/ribbon-demo

2. 部署方式

这边提供了3种docker部署方式

  • 自动ip(推荐)
  • 固定ip
  • docker scale 水平扩展

分别对应上图的docker-auto-ip、docker-fix-ip、docker-scale 目录,有兴趣的同学,可以研究研究!

四,功能演示

http://124.71.129.204:8085/doc.html
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五,其他

此实例整合了gateway、ribbon、feign、hystrix、swagger,

大家会发现hystrix熔断器起作用时并不从负载均衡中移除故障节点,大家可以思考比较下hystrix和ribbon 异同!


有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 足球预测可以人工智能AI吗
  • c++ codedump文件输出具体出错位置
  • 汇聚创意精英?西安数字影像产业园如何实现这一壮举?
  • 三分钟带你看懂,低代码开发赋能办公方式转变
  • JAVA代码审计(基础漏洞:SQL注入、XXE、XSS、反序列化、CSRF、文件上传、逻辑漏洞、SSRF、命令执行)
  • C#-使用Serilog框架快速实现日志及其相关扩展
  • 24年最新版pycharm找不到conda可执行文件解决办法(简单完美解决)
  • 你的代码真的安全吗?经验告诉你怎么做
  • stm32之SPI通信协议
  • fpga入门名词(1)
  • 分布式共识(一致性)算法(协议) Paxos 简介
  • TS中的装饰器
  • Win电脑使用Ollama与Open Web UI搭建本地大语言模型运行工具
  • 第三届828 B2B企业节开幕,大腾智能携手华为云共谱数字化新篇章
  • 硬件工程师笔试面试知识器件篇——电感
  • CSS相对定位
  • Java方法详解
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • WePY 在小程序性能调优上做出的探究
  • XForms - 更强大的Form
  • 程序员该如何有效的找工作?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 手写一个CommonJS打包工具(一)
  • 提醒我喝水chrome插件开发指南
  • 微服务核心架构梳理
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ## 基础知识
  • #if 1...#endif
  • #控制台大学课堂点名问题_课堂随机点名
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (void) (_x == _y)的作用
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (七)理解angular中的module和injector,即依赖注入
  • (一)80c52学习之旅-起始篇
  • (转) 深度模型优化性能 调参
  • .NET CORE Aws S3 使用
  • .Net Core中Quartz的使用方法
  • .NET Framework 3.5安装教程
  • .net(C#)中String.Format如何使用
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • @JsonSerialize注解的使用
  • [20180224]expdp query 写法问题.txt
  • [android] 看博客学习hashCode()和equals()
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BJDCTF 2020]easy_md5
  • [BUG] Authentication Error
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C++]拼图游戏
  • [CF407E]k-d-sequence
  • [Docker]十.Docker Swarm讲解