Jstorm基础架构

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: Jstorm基础架构

整体架构

1.png

深度基于Zookeeper的调度系统。

Jstorm ZK路径

/-{storm.zookeeper.root}           -- Jstorm在zookeeper上的根目录,需要在jstorm中配置~/.jstorm/storm.yaml
  |                            
  |
  |-/nimbus_master                -- nimbus_master 的ip和端口
  | 
  |-/nimbus_slave                 --nimbus_slave信息,如果没有nimbus slave,此节点没有信息
  |
  |-/supervisors            -- 所有的supervisor的心跳信息
  |   |                        
  |   |-/{supervisor-id}    -- class SupervisorInfo,hostName,supervisorId,timeSecs(心跳最后更新时间),uptimeSecs(运行时间),version,port, Set<workerPort>,Set<availableWorkerPort>,Map<Object, Object> supervisorConf
  |                            
  |
  |-/assignments            --所有拓扑的分配资源信息
  |   |
  |   |-/{topology-id}      -- class Assignment,<supervisorId, hostname>--主机映射,masterCodeDir--nimbus上的代码目录,<TaskId, StartUpTime> 所有task的启动时间,  Set<ResourceWorkerSlot>,每个Worker的资源分配,包括hostname,memSize,cpu,tasks,jvm
  |                            
  |-/assignments_bak         -- 备份所有拓扑的分配资源信息
  |   |
  |   |-/{topology-name}      -- class AssignmentBak, Assignment assignment--分配信息备份,Map<ComponentId, List<TaskId>> 一个组件对应多个Task
  |
  |                           
  |-/blobstoremaxkeysequencenumber   --大对象的存储最大的序号,当使用BlobStore Nimbus Local 模式时保持一致性
  |
  |-/topology
  |   |
  |   |-/{topology-id}           --class StormBase ,记录topologyName,lanchTimeSecs,Topology status,enableMonitor,group
  |
  |-/blobstore                  --Blobstore 有两种模式,Nimbus Local 和 HDFS,默认是本地配置,使用Nimbus Local时需要zookeeper保证一致性,而HDFS自身已经提供了
  |   |
  |   |-{}                       --本地模式blobstore会存放到 storm.local.dir/blobs/ 目录,自定义存放目录可以通过blobstore.dir强制指定一个绝对路径。
  |
  |-/taskbeats 
  |   |
  |   |-/{topology-id}      
  |       |                    
  |       |-/{task-id}      -- class TopologyTaskHbInfo, Map<TaskId,TaskHeartbeat>--task的心跳,topologyId,topologyMasterId
  |                            
  |                                                
  |                           
  |-/tasks                 
  |   |
  |   |-/{topology-id}      -- Map<TaskId, TaskInfo> 一个taskId对应一个组件信息TaskInfo,一个组件可能是Spout或者Bolt,class TaskInfo,componentId,componentType
  |
  |
  |-/taskerrors                --所有topology task的错误信息
  |   |
  |   |-/{topology-id}         
  |        |                    
  |        |-/{task-id}      -- 对应task的出错信息
  |        |    |
  |        |    |-/{time}     -- 时间戳,以妙为单位,只保存最近两个错误,通过 zkCluster.report_task_error(topologyId, taskId, errorMessge),可以自定义错误,界面会显示"E(2)"
  |        |
  |        |-/{last_error}   -- 最后的错误信息 Map<Integer, String> lastErrInfo    
  |
  |
  |-/metrics                 
  |   |
  |   |-/__NIMBUS__         --nimbus metric信息
  |   |-/__SUPERVISOR__     --superviser metric信息
  |   |-/{topology-id}      --topology metric信息
  |   |-/ __CLUSTER__       --cluster metric信息
  |              
  |   
  |-/nimbus_slave_detail    -- nimbus_slave细节信息
  |   |                    
  |   |-/{hostPort}      --  mtmp.put("nimbus.differ.count.zk", diffCount); 
  |                            
  |

Jstorm 所有的zk路径都在 com.alibaba.jstorm.cluster.Cluster类中

相关文章
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
650 0
|
SQL 关系型数据库 MySQL
遇到mysql数据库死锁,你会怎么排查?
遇到mysql数据库死锁,你会怎么排查?
846 0
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
914 2
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
618 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
Java Spring
SpringBoot接收参数的方式
本文介绍了Java Spring Boot中处理GET请求的多种方式。可以使用方法参数直接接收,或者通过`@RequestParam`注解指定必传参数。此外,可以用实体类接收多个相关参数,但不能同时使用`@RequestParam`。还可以通过`HttpServletRequest`对象获取参数,或利用`@PathVariable`接收路径变量。对于数组和集合参数,需注意使用`@RequestParam`注解。
970 1
|
Ubuntu Unix Linux
Linux 用户使用sudo时 显示xxx is not in the sudoers file.This incident will be reported.的解决方法
Linux 用户使用sudo时 显示xxx is not in the sudoers file.This incident will be reported.的解决方法
867 0
|
存储 Java Linux
Maven 仓库
Maven仓库是管理项目依赖的存储位置,分为本地、中央和远程三种类型。本地仓库在首次执行Maven命令时创建,默认位于用户目录下的`.m2/repository/`。如果本地缺少依赖,Maven会从远程仓库下载至本地。中央仓库由Maven社区维护,包含大量开源Java构件,是默认的网络资源,可通过http://search.maven.org/#browse进行浏览搜索。远程仓库则用于存放非标准或特定组织的构件。可以通过settings.xml配置本地仓库路径。
|
存储 算法 C++
map容器-大小和交换讲解
map容器-大小和交换讲解
259 1
|
消息中间件 存储 Java
RabbitMQ入门指南(八):MQ可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容。
1017 0
|
消息中间件 Java RocketMQ
五分钟带你玩转rocketMQ(三)spring boot整合rocketMQ
五分钟带你玩转rocketMQ(三)spring boot整合rocketMQ
1719 0