Storm源码阅读(三):Thrift

一、数学建模层次分析法(AHP)【清风数学建模个人笔记】 层次分析法: 层次分析法主要用于解决评价类问题(例如:选择哪种方案更好、哪位员工、运动员等表现得更优秀) 评价类问题: 分析问题得出评判问题的子标,分别给不同子标赋予权重(权重和要为1) ... 阅读详情

Thrift指南:http://diwakergupta.github.io/thrift-missing-guide/

Defining Services

service Twitter {
    // A method definition looks like C code. It has a return type, arguments,
    void ping(),
 
    // The 'oneway' modifier indicates that the client only makes a request and does not wait for any response at all.
    oneway void zip()
}

 

在strom.thrift中找到

service Nimbus {

  void submitTopology(1: string name, 2: stringuploadedJarLocation, 3: string jsonConf, 4: StormTopology topology) throws (1:AlreadyAliveException e, 2: InvalidTopologyException ite);

  void killTopology(1: string name) throws (1:NotAliveException e);

  void activate(1: string name) throws (1:NotAliveException e);

 

  string beginFileUpload();

  void uploadChunk(1: string location, 2:binary chunk);

  void finishFileUpload(1: string location);

 

  // returns json

  string getNimbusConf();

 

  // stats functions

  ClusterSummary getClusterInfo();

  TopologyInfo getTopologyInfo(1: string id)throws (1: NotAliveException e);

 

  //returns json

  string getTopologyConf(1: string id) throws(1: NotAliveException e);

  StormTopology getTopology(1: string id)throws (1: NotAliveException e);

  StormTopology getUserTopology(1: string id)throws (1: NotAliveException e);

}

 

 

客户端:backtype.storm.generated.Nimbus的iface接口

服务器端:backtype.storm.daemon.nimbus.cljservice-handler (reify Nimbus$Iface

 

Thrift network stack:

 

The Transport layer provides a simpleabstraction for reading/writing from/to the network. This enables Thrift todecouple the underlying transport from the rest of the system(serialization/deserialization, for instance).

//org.apache.thrift7.transport.TTransport

 

The Protocol abstraction defines a mechanism tomap in-memory data structures to a wire-format. In other words, a protocolspecifies how datatypes use the underlying Transport to encode/decodethemselves.

//org.apache.thrift7.protocol.TProtocol接口

 

A Processor encapsulates the ability toread data from input streams and write to output streams. The input and outputstreams are represented by Protocol objects.

//org.apache.thrift7.TProcessor

public interfaceTProcessor{
    bool process(TProtocol in, TProtocol out)throws TException
}

 

Service-specific processor implementations aregeneratedby the compiler. The Processor essentially reads data from the wire (using theinput protocol),delegatesprocessing to thehandler(implemented by the user) and writes theresponseover the wire (using the output protocol).

 

A Server pullstogether all of the various features described above:

·        Create a transport

·        Create input/outputprotocols for the transport

·        Create a processorbased on the input/output protocols

·        Wait for incomingconnections and hand them off to the processor

 服务器端Server的代码:

(defnlaunch-server! [conf nimbus]

  (validate-distributed-mode! conf)

  (let[service-handler(service-handler confnimbus)

        options (->(TNonblockingServerSocket.(int(conf NIMBUS-THRIFT-PORT)))

 

                   (THsHaServer$Args.) //主

                   (.workerThreads 64)->args.workerThreads

                    (.protocolFactory(TBinaryProtocol$Factory.))

                    (.processor(Nimbus$Processor. service-handler))

                   )

 

       server (THsHaServer. options)] ->newTHsHaServer(Args -> THsHaServer$Args)

 

 与网络栈的对应关系:

Server->THsHaServer

Processor -> Nimbus$Processor

Protocol ->TBinaryProtocol

Transport -> TNonblockingServerSocket


参考文档:

Thrift指南:http://diwakergupta.github.io/thrift-missing-guide/

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models 大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。 阅读详情

相关推荐

Simulink Test Sequence实战:5步搞定复杂逻辑测试(附Excel模板)

本文详细介绍了如何利用Simulink Test Sequence模块高效完成复杂逻辑测试。通过对比传统Excel方法的不足,阐述了Test Sequence以流程图和自然语言描述测试场景的优势,并提供了从环境搭建、逻辑构建到与Test Manager集成、利用Excel模板进行数据驱动的完整5步实战指南,帮助工程师将复杂的状态机或逻辑流测试从繁琐的‘体力活’转变为高效的‘技术活’。

snow3的博客 251

关于Storm和Thrift

简单总结下自己看Storm中thrift相关源码的理解,请高手指正。         Thrift是一个支持多种程序语言开发的框架,其核心是Thrift编译器和Thrift Server。Storm源码中貌似默认支持的是Java和Python,因为有看到genthrift.sh中生成了storm.thrift描述对应的Java和Python代码。         Storm的核心逻辑部分还是C

jsky_studio的专栏 2306

数字芯片后端设计实战:Memory Compiler参数配置与SRAM生成优化

本文深入解析数字芯片后端设计中Memory Compiler的核心参数配置与SRAM生成优化策略。详细探讨了容量结构、频率设定、工艺角选择等关键参数的配置要点与常见误区,并提供了从.lib/.lef文件转换到后端流程整合的实战指南,旨在帮助设计者生成面积、性能和功耗更优的存储单元。

weixin_29194255的博客 702

storm教程(五):storm消息的可靠性保障与acker机制、Thrift client 集群监控

消息的可靠性保障与acker机制Storm 能够保证每一个由 Spout 发送的消息都能够得到完整地处理。本文详细解释了 Storm 如何实现这种保障机制,以及作为用户如何使用好 Storm 的可靠性机制。 消息的“完整性处理”是什么意思 一个从 spout 中发送出的 tuple 会产生上千个基于它创建的 tuples。例如,有这样一个 word-count 拓扑:TopologyBuilde

风中云彩的博客 1800

VS2022下OSG+OSGEARTH开发环境一键配置指南(Win10 x64+CMake自动化构建)

本文详细介绍了在VS2022环境下配置OSG和OSGEARTH开发环境的完整指南,包括软件下载、CMake自动化构建、编译实战及环境验证。通过一键配置脚本和常见问题解决方案,帮助开发者快速搭建3D开发环境,提升开发效率。

weixin_28828243的博客 405

2006NOIP普及组真题 4. 数列

从上述推理中,我们发现要输出的幂次和中的第 N 项(也就是幂次和中的序号N),对应的二进制位数和幂次和对应的二进制位数相同。当 k=3 时,k的幂次为1, 3, 9, 27, 81…,即第0位,第2位均为1,转成 k 进制(k=3)时。,即第2位,第3位均为1,转成 k 进制(k=3)时。转成 k 进制(k=3)时的幂次和为。,即第0位,第1位,第2位均为1,(即第0位,第1位,第2位均为1)N=12时,12的二进制是。(即第0位,第2位均为1)(即第2位,第3位均为1)结论:这道题就变成了。

weixin_40252159的博客 1514

Storm thrift服务入坑记

利用nimbus的thrift服务,获取集群上已经提交的任务,与数据库中的配置信息对比,找出没有提交的任务,实现自动提交。 由于storm为了避免与其他版本的thrift产生冲突,自己对thrif进行了一个封装,依赖的jar包为libthrift7. ----------------------------------此为背景----------------------------------

点滴汇聚 1659

不会写GLSL?用Cesium 1.120 + Heatmap.js 2.0.5也能搞定动态洪水模拟(附完整源码)

本文介绍了一种无需GLSL编程的3D洪水动态模拟方案,结合Cesium 1.120和Heatmap.js 2.0.5实现高效可视化。通过数据层、可视化层和集成层的技术降级方案,开发者可以快速构建专业级洪水演进效果,适用于应急管理、水利工程等场景。文章包含完整源码和性能优化技巧。

weixin_30329623的博客 523

使用Thrift API监控Storm集群

Storm UI提供了基本的监控界面,可以查看当前时点集群内脚本的运行情况,其中比较重要的是消息吞吐量(Transferred)和处理延迟(Process latency)。不足的是,这套系统没有记录时序数据,因此想看一段时间内的趋势图,或是做脚本上下线的负载监控,Storm UI就无能为力了。 不过,Storm Nimbus开放了一套Thrift API,可以使用他获取各类信息。下面就介绍一下

小桥 2466

QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)

一、环境介绍 QT版本: 5.12.6 编译环境: win10 64位 目标系统: Android 完整工程源码下载地址(包含APK文件):https://download.youkuaiyun.com/download/xiaolong1126626497/19051696 二、功能介绍 本软件是一款BLE蓝牙串口调试助手,支持常规的发送和接收调试,BLE是低功耗类型蓝牙,在智能家居、物联网领域使用较多。BLE低功耗蓝牙一般不能直接使用手机进行连接,手机蓝牙默认都是工作在传统蓝牙模式,无法直接连接BL..

7661

【AI大模型:架构实战】31、工业级AI大模型系统全景解析:从架构设计到提示语引擎实践

本文系统解析了工业级AI大模型的核心架构与技术体系。整体采用分层解耦设计,包含数据工程、模型训练、模型部署、应用集成和监控运维五大核心模块,以及分布式计算、高速网络、异构硬件三大支撑体系。数据工程构建高质量数据处理流水线;模型训练实现从预训练到业务适配的全流程;模型部署优化服务性能与可用性;应用集成连接业务场景;监控运维保障系统持续优化。三大支撑能力专注于千亿参数管理、高并发低延迟处理和持续学习进化。该架构设计既满足当前需求,又为技术演进预留空间,为企业在数字化转型中提供AI工业化落地的完整解决方案。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1990

使用Thrift API监控Storm集群和Topology

如要监控Storm集群和运行在其上的Topology,该如何做呢? Storm已经为你考虑到了,Storm支持Thrift的C/S架构,在部署Nimbus组件的机器上启动一个Thrift Server进程来提供服务,我们可以通过编写一个Thrift Client来请求Thrift Server,来获取你想得到的集群和Topology的相关数据,来接入监控平台,如Zabbix等,我目前使用的就

cache007的专栏 1156

软硬件融合加速技术系列文章

目录 文章目录目录计算机组成原理Linux 操作系统原理处理器进程管理内存管理I/O 系统文件系统网络协议栈资源管理设备管理GPUFPGASmartNIC/DPU 计算机组成原理 《计算机组成原理 — 冯诺依曼体系结构》 《计算机组成原理 — 基本硬件设备》 《计算机组成原理 — CPU 中央处理器》 《计算机组成原理 — 指令系统》 《计算机组成原理 — 总线系统》 《计算机组成原理 — 存储系统》 《计算机组成原理 — 输入输出系统 — 存储控制器接口类型》 《计算机组成原理 — 服务器》 《计算机组成

烟云的计算 6806

Storm源码阅读(二):客户端

Clojure Clojure指南http://java.ociweb.com/mark/clojure/article.html   Eclipse插件Counterclockwise Eclipse提供了专门的Clojure 语言开发插件CounterClockwise,在源代码编辑,代码调试,REPL 支持方面也有独到之处,适合于习惯于Eclipse的开发者使用。 http://c

m_vptr的专栏 5027

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

专访许鹏:谈C程序员修养及大型项目源码阅读与学习

登录 | 注册 业界 移动开发 云计算 软件研发 程序员杂志 极客头条 专题 大数据数据中心服务器存储虚拟化NoSQL安全云先锋 订阅云计算RSS优快云首页> 云计算 发表于2014-06-05 21:

yisilian的专栏 5373

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

storm-源码阅读(持续更新)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33835690的博客 224

Storm源码阅读总结(1) -- Client Nimbus Supervisor

Client 客户端提交作业 NimbusClient: RPC 客户端, 向RPC服务端即Nimbus Server发起RPC调用. App通过StormSubmitter提交计算拓扑作业submitTopology: 首先提交jar包, 会向Nimbus服务器发起beginFileUpload, 申请到要上传的路径后, 调用up...

weixin_34353714的博客 186

Apache Storm技术实战之1 -- nimbus启动场景分析

1 nimbus启动场景分析 storm cluster中有以下各种进程 1. nimbus 2. zookeeper 3. supervisor 4. worker 进程之间的逻辑关系如下图所示,其中executor是运行于进程worker中的线 程用于执行spout或是bolt. 由Figure 1可以看出, Nimbus主要的工作就是用来处理thrift接口和 zookee

General_du的专栏 2077

HDinsight Storm概述

HDinsight Storm概述 什么是Storm? Apache Storm是一个分布式,容错,开放源码的计算系统,让你来处理数据的实时。Storm解决方案还可以提供有保证的处理的数据,与重试未成功处理的第一次数据的能力。

每一天都有新的希望 3697

twitter storm源码走读之1 -- nimbus启动场景分析

欢迎转载,转载时请注明作者徽沪一郎及出处,谢谢。 本文详细介绍了twitter storm中的nimbus节点的启动场景,分析nimbus是如何一步步实现定义于storm.thrift中的service,以及如何利用curator来和zookeeper server建立通讯。 对于storm client来说,nimbus是storm cluster与外部的唯一接口,是总的接口人,在这个接口上...

weixin_33893473的博客 76

服务端工程师入门与进阶 Java 版

http://xielong.me/2015/04/16/服务端工程师入门与进阶Java版/ 前言 欢迎加入我们。这是一份针对实习生/毕业生的服务端开发入门与进阶指南。遇到问题及时问你的 mentor 或者直接问我。 建议: 尽量用google查找技术资料。 有问题在stackoverflow找找,大部分都已经有人回答。 多看官方的技术文档。 ibm developerw...

晚晴小筑 107

java 学习路线-----转载

建议:尽量用 google 查找技术资料。有问题在 stackoverflow 找找,大部分都已经有人回答。多看官方的技术文档。ibm developerworkers 的文章质量整体上有保障。平时花一些时间在 github 上阅读优秀项目源码。 入门(1-2 个月) 目标:参与简单的项目开发。 技能: 1 掌握 Java。经典的《Java 核心技术:卷1 基础知识》(或者《Java 编程思想》)...

weixin_45488774的博客 201

Storm-源码分析- Thrift的使用

为什么80%的码农都做不了架构师?>>> ...

weixin_34406796的博客 169

JStorm源代码阅读——Woker的线程模型

启动线程 "main" #1 prio=5 os_prio=0 tid=0x00007fedd400a000 nid=0x7acf in Object.wait() [0x00007fedddcbc000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) ...

define_us的专栏 366

Apache Storm源码阅读笔记

hellogoodhehe的博客 146
上一篇: Storm源码阅读(二):客户端
下一篇: ZooKeeper源码阅读(四):选举后过程
m_vptr
博客等级 码龄15年 69粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值