# 針對 Storm 定義一個不是 JVM 的 DSL
針對 Storm 開始學習如何使用非 JVM 的 DSL 的正確的地址是 [storm-core/src/storm.thrift](http://github.com/apache/storm/blob/master%0A/storm-core/src/storm.thrift). 由于 Storm topologies 只是 Thrift 的結構,Nimbus 是 Thrift 守護進程,您可以使用任何語言創建和提交 topologies.
當你針對 spouts 和 bolts 創建 Thrift 結構時, spout 和 bolt 的代碼指定在 ComponentObject 結構中:
```
union ComponentObject {
1: binary serialized_java;
2: ShellComponent shell;
3: JavaObject java_object;
}
```
針對 Python DSL,您需要使用 "2" 和 "3". ShellComponent 可以讓你指定一個腳本來運行組件(例如,你的 python 代碼). 并且針對組件(Storm 將使用反射來創建 spout 和 bolt)JavaObject 可以讓你指定本地的 java spouts 和 bolts.
以下是一個 "storm shell" 命令,它可以提交 topology. 用法如下:
```
storm shell resources/ python topology.py arg1 arg2
```
Storm Shell resources/ 下的東西包裝到一個 jar 中,將 jar 上傳到 Nimbus,并像下面這樣調用你的 topology.py 腳本:
```
python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location}
```
然后您可以使用 Thrift API 連接到 Nimbus,并提交 topology,將 {uploaded-jar-location} 傳遞到 submitTopology 方法. 作為參考,這里是 submitTopology 定義:
```
void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology) throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
```
最后,在非 JVM DSL 中要做的一件重要的事情是,可以輕松地在一個文件(bolts,spouts 和 topology 的定義)中定義整個 topology.
- Storm 基礎
- 概念
- Scheduler(調度器)
- Configuration
- Guaranteeing Message Processing
- 守護進程容錯
- 命令行客戶端
- Storm UI REST API
- 理解 Storm Topology 的 Parallelism(并行度)
- FAQ
- Layers on Top of Storm
- Storm Trident
- Trident 教程
- Trident API 綜述
- Trident State
- Trident Spouts
- Trident RAS API
- Storm SQL
- Storm SQL 集成
- Storm SQL 示例
- Storm SQL 語言參考
- Storm SQL 內部實現
- Flux
- Storm 安裝和部署
- 設置Storm集群
- 本地模式
- 疑難解答
- 在生產集群上運行 Topology
- Maven
- 安全地運行 Apache Storm
- CGroup Enforcement
- Pacemaker
- 資源感知調度器 (Resource Aware Scheduler)
- 用于分析 Storm 的各種內部行為的 Metrics
- Windows 用戶指南
- Storm 中級
- 序列化
- 常見 Topology 模式
- Clojure DSL
- 使用沒有jvm的語言編輯storm
- Distributed RPC
- Transactional Topologies
- Hooks
- Storm Metrics
- Storm 狀態管理
- Windowing Support in Core Storm
- Joining Streams in Storm Core
- Storm Distributed Cache API
- Storm 調試
- 動態日志級別設置
- Storm Logs
- 動態員工分析
- 拓撲事件檢查器
- Storm 與外部系統, 以及其它庫的集成
- Storm Kafka Integration
- Storm Kafka 集成(0.10.x+)
- Storm HBase Integration
- Storm HDFS Integration
- Storm Hive 集成
- Storm Solr 集成
- Storm Cassandra 集成
- Storm JDBC 集成
- Storm JMS 集成
- Storm Redis 集成
- Azue Event Hubs 集成
- Storm Elasticsearch 集成
- Storm MQTT(Message Queuing Telemetry Transport, 消息隊列遙測傳輸) 集成
- Storm MongoDB 集成
- Storm OpenTSDB 集成
- Storm Kinesis 集成
- Storm Druid 集成
- Storm and Kestrel
- Container, Resource Management System Integration
- Storm 高級
- 針對 Storm 定義一個不是 JVM 的 DSL
- 多語言協議
- Storm 內部實現
- 翻譯進度