# Trident RAS API
## Trident RAS API
Trident RAS( Resource Aware Scheduler (資源感知調度程序))API 提供了一種機制, 允許用戶指定 Trident topology 的 resource consumption (資源消耗). API 看起來與基本的 RAS API 完全相同, 只是在 Trident Streams 上調用, 而不是 Bolts 和 Spouts .
為了避免文檔中的 duplication (重復)和 inconsistency (不一致), resource setting (資源設置)的目的和效果在這里不再描述, 而是在 [Resource Aware Scheduler Overview](Resource_Aware_Scheduler_overview.html) 中可以找到,
### Use
首先, 例如:
```
TridentTopology topo = new TridentTopology();
topo.setResourceDefaults(new DefaultResourceDeclarer();
.setMemoryLoad(128)
.setCPULoad(20));
TridentState wordCounts =
topology
.newStream("words", feeder)
.parallelismHint(5)
.setCPULoad(20)
.setMemoryLoad(512,256)
.each( new Fields("sentence"), new Split(), new Fields("word"))
.setCPULoad(10)
.setMemoryLoad(512)
.each(new Fields("word"), new BangAdder(), new Fields("word!"))
.parallelismHint(10)
.setCPULoad(50)
.setMemoryLoad(1024)
.each(new Fields("word!"), new QMarkAdder(), new Fields("word!?"))
.groupBy(new Fields("word!"))
.persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))
.setCPULoad(100)
.setMemoryLoad(2048);
```
可以為每個操作設置 Resources (資源)(除了 grouping (分組), shuffling (混洗), partitioning (分區)). 將 Trident combined 成 single Bolts 的操作將將其資源相加.
每個 Bolt 都被給予 **至少** 默認資源, 無論用戶設置如何.
在上述情況下, 我們最終得到
* 一個 spout 和 spout coordinator (spout 協調器), 每個 CPU 負載為 20% , 內存負載為 512MiB , off-heap (堆棧)為 256MiB .
* 組合的 `Split` 和 `BangAdder` 以及 `QMarkAdder` 的 on-heap (堆棧)中, 具有80% cpu 負載(10%+ 50%+ 20%)和 1664MiB(1024 + 512 + 128)的內存負載的 bolt , 使用 DefaultResourceDeclarer 中包含的默認資源
* 具有 100% cpu 加載和 2048MiB 堆內存負載的 bolt , 默認值為 off-heap (非堆)
任何 operation (操作)后都可以調用 Resource declarations (資源聲明). 沒有明確資源的操作將獲得默認值. 如果您選擇僅為某些操作設置資源, 則必須聲明默認值, 否則拓撲提交將失敗. 資源聲明具有與并行提示相同的 _boundaries_ . 他們不會進行任何分組, 洗牌或任何其他類型的重新分配. 每個操作都會聲明資源, 但在邊界內組合.
- 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 內部實現
- 翻譯進度