论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
项目第一弹:RabbitMQ先容
项目第一弹:RabbitMQ先容
熊熊出没
金牌会员
|
2024-11-6 12:55:13
|
显示全部楼层
|
阅读模式
楼主
主题
887
|
帖子
887
|
积分
2661
一、媒介
这是我项目标底子版本,目标是先实现一个底子功能的RabbitMQ消息队列,后续再对其进行扩展,丰富更多功能
1. 回首生产者消耗者模型
在学习了生产者消耗者模型之后,我们回首一下生产者消耗者模型的优点:
我们之前写生产者消耗者模型的壅闭队列和环形队列版本时,先容了解耦与并发。
但是没有提到过忙闲不均这一题目,也没有提到过负载平衡,下面我们谈一下二者
2.忙闲不均与负载平衡
忙闲不均就是指在多线程等并行处置惩罚环境当中,不同组件之间的工作负载分配不均,导致某些组件过忙,而另一些组件过闲,从而影响整体性能和资源利用率。
负载平衡是办理忙闲不均的一种有效处置惩罚方法。通过负载平衡器将工作负载均匀地分配到多个组件上,从而实现组件之间的负载平衡
因此我们的生产消耗模型就变成了下面这个样子:
3.改造线程池使其支持负载平衡
题目来了?
负载平衡器怎么分配任务呢?
我们之前的代码都是从线程在(互斥锁,条件变量)/(互斥锁、信号量)的束缚下实现的生产消耗模型
都是从线程自动取任务,有没有什么方法能让我们自动给从线程分配任务?
我们碰到的这种题目肯定都不大,首先就想:能不能加一层?
我现在要统计负载,那我给每个从线程单独维护一个任务队列不就可以实现负载平衡了吗?
如许的话乃至连互斥锁和条件变量这种维护线程互斥和同步的本领都不必要了,
也就是:把原先的一个任务队列直接拆分为多个任务队列,通过负载平衡器来将任务放到负载少的队列当中
怎么办呢?
再加一层,对于我们碰到的题目,大部门情况都能办理
引入一个监控线程和它的热备份加上心跳机制,就可以办理这一题目
实在在很多分布式体系的组件/主从服务器当中,心跳机制和热备份是非经常见的,好比:
1. HDFS 2.0的活跃名称节点和待命名称节点与Zookeeper
2. HBase当中的Master服务器与Region服务器
3. MapReduce当中的JobTracker与TaskTracker
4. Storm当中的Nimbus和Supervisor
5. Spark当中的Dirver Program和Worker Node,(它的容错更强:采用基于血缘和管道化形成的RDD)
复制代码
不过加了监控线程之后的确不好写,写出来是完全没有题目标,只不过总以为不敷优雅,我们一个普平常通的线程池怎么都用上分布式体系的设计方式了呢?
是不是有点太大材小用了呢?
光看一眼上面那5个Hadoop当中的强盛框架,
咱就知道凭咱目前的实力不好整啊,我以为整是能整出来的,
只不过用的设计方式来重了吧…或者说不太适合~,
写出来之子女码也必要不停重构,而且代码不易扩展
4.MQ的引入
那怎么办呢?
我们就是想提高任务实行的容错性,
那我们把任务队列和消耗者的对应关系从1对1改成1对多,然后再任务队列内部加上负载平衡器不就行了吗?
那我们这个项目就是要实现这个?
当然不是,有一个更强
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
熊熊出没
金牌会员
这个人很懒什么都没写!
楼主热帖
数据库的三大范式
在字节跳动干软件测试5年,4月无情被辞 ...
创建SQL server服务器
TortoiseGit间接处理linux目录下的仓库 ...
django小项目 ----- 创建错题集 ...
神经网络与深度学习
[Golang] GO 语言工作环境的基本概念 ...
Java如何调用HttpURLConnection类模拟 ...
ZYNQ从放弃到入门(十二)- AMP — Zyn ...
SeaTunnel 发布成为 Apache 顶级项目后 ...
标签云
存储
挺好的
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表