# ![](https://github.com/shrbank/SyncSpout/blob/master/doc/images/%E4%B8%8A%E6%B5%B7%E5%8D%8E%E7%91%9E%E9%93%B6%E8%A1%8C.png?raw=true) SyncSpout简介
SyncSpout是上海华瑞银行(SHRB)大数据团队开发的,用来构造可交互的、同步的Storm拓扑的组件。我们在做实时推荐系统中,希望将Storm的并发性和分布式计算能力应用到“请求-响应”范式中,
比如客户的某次购买行为能够以消息的形式发送到storm拓扑中,storm在指定时间返回推荐结果,也就是说storm需要具有可交互性。基于这样的背景,大数据团队开发了SyncSpout组件,
该组件可以接收客户端异步的消息,经过Storm拓扑异步计算,在指定时间内返回给客户端。
## 架构图
![](https://github.com/shrbank/SyncSpout/blob/master/doc/images/SyncSpout.jpg?raw=true)
## 关键组件介绍
* SyncSpout:继承storm的IRichSpout,用于接收客户端调用消息并将消息emit出去的Spout
* SendBolt:拓扑中发送计算结果的bolt,该bolt将计算结果返回给客户端
* SyncSpoutClient:用于向SyncSpout发送同步消息,并在指定时间内获取结果
## 特性
* 使普通的storm应用可交互
* storm应用重启后,客户端可自动重连
* 对storm应用几乎没有侵入,对业务没有侵入
* storm集群返回的计算结果能够准确的返回给指定客户端的某次调用
* 客户端可发送任意类型的消息给storm应用;storm应用可返回任意类型的消息给客户端
* 客户端可在指定时间内同步获取storm应用返回的计算结果
* 支持高并发,在单机环境下1000并发量基本在100毫秒内返回
## 与Storm官方DRPC的异同
* 都能接收一个远程请求,发送请求到storm拓扑,从storm拓扑接收结果,发送结果回等待的客户端
* DRPC只能处理字符串;SyncSpout可以处理任意可序列化的类型
* DRPC仅能处理“线性的”DRPC拓扑,计算以一连串步骤的形式表达;SyncSpout能够处理任意类型的storm拓扑
* DRPC的功能被移植到了Trident中,从原生Storm被废弃了;SyncSpout会被SHRB一直维护
## 用法
### 客户端
// 创建客户端
val client = new SyncSpoutClient(topName)
// 初始化
client.init()
// 向远程storm集群发送消息,并在1000毫秒内返回,若超时则返回null指针
val syncResult = client.ask(ClientMsg("这是发送的消息,可以是任意类型"),1000).asInstanceOf[String]
println(s"返回消息是[$syncResult],可以是任意类型")
### storm集群
val builder = new TopologyBuilder()
// ActorSpout用于接收消息
builder.setSpout("syncSpout",SyncSpout(),2)
// SimpleBolt用于处理消息
builder.setBolt("simpleBolt",new SimpleBolt(),2).setNumTasks(4).shuffleGrouping("syncSpout")
// SendBolt用于返回消息
builder.setBolt("sendBolt",new SendBolt(),2).shuffleGrouping("simpleBolt")
val cluster = new LocalCluster()
val topName = "SyncSpoutTop"
val conf = new Config()
conf.setNumWorkers(2)
cluster.submitTopology(topName,conf,builder.createTopology())
println( "SyncSpout 启动成功!" )
#### 注意点
* 客户端实例化时的topName就是storm集群中的名称
* sync-spout-server.conf、sync-spout-client.conf中需要配置zookeeper的host列表
## 引用第三方类库
* zkclient:https://github.com/yuluows/zkclient.git
* MPSC队列:参考akka_2.11-2.4.11的AbstractBoundedNodeQueue类
## 联系方式
E-MAIL:365781062@qq.com
公司E-MAIL:wushaojie@shrbank.com
GitHub:https://github.com/shrbank/SyncSpout
没有合适的资源?快使用搜索试试~ 我知道了~
SyncSpout是上海华瑞银行(SHRB)大数据团队开发的,用来构造可交互的、同步的Storm拓扑的组件实时推荐系统….zip
共62个文件
java:36个
scala:14个
xml:4个
需积分: 5 0 下载量 71 浏览量
2024-04-18
21:22:38
上传
评论
收藏 209KB ZIP 举报
温馨提示
SyncSpout是上海华瑞银行(SHRB)大数据团队开发的,用来构造可交互的、同步的Storm拓扑的组件。我们在做实时推荐系统中,希望将Storm的并发性和分布式计算能力应用到“请求-响应”范式中, 比如客户的某次购买行为能够以消息的形式发送到storm拓扑中,storm…
资源推荐
资源详情
资源评论
收起资源包目录
SyncSpout是上海华瑞银行(SHRB)大数据团队开发的,用来构造可交互的、同步的Storm拓扑的组件。我们在做实时推荐系统中,希望将Storm的并发性和分布式计算能力应用到“请求-响应”范式中, 比如客户的某次购买行为能够以消息的形式发送到storm拓扑中,storm….zip (62个子文件)
content
pom.xml 4KB
doc
images
SyncSpout.bmp 1.6MB
上海华瑞银行.png 18KB
SyncSpout.jpg 119KB
LICENSE 18KB
readme.md 4KB
zkclient
pom.xml 2KB
src
main
java
com
shrbank
bigdata
zkclient
ZKClientBuilder.java 4KB
watcher
ZKWatcherProcess.java 15KB
ZKWatcher.java 4KB
serializer
ZKSerializer.java 755B
BytesSerializer.java 977B
SerializableSerializer.java 3KB
ZKNode.java 1KB
ZKClient.java 42KB
event
ZKEvent.java 938B
ZKEventThreadPool.java 3KB
ZKEventLock.java 2KB
queue
ZKDistributedQueue.java 5KB
leader
ZKLeaderDelySelector.java 7KB
LeaderSelector.java 855B
ZKLeaderSelectorListener.java 788B
ZKLeaderSelector.java 6KB
connection
ZKConnectionImpl.java 13KB
ZKConnection.java 4KB
exception
ZKInterruptedException.java 873B
ZKNoNodeException.java 1KB
ZKException.java 1KB
ZKTimeoutException.java 1KB
ZKNodeExistsException.java 1KB
Main.java 219B
listener
ZKStateListener.java 1KB
ZKListener.java 860B
ZKNodeListener.java 3KB
ZKChildCountListener.java 2KB
ZKChildDataListener.java 3KB
util
ExceptionUtil.java 2KB
lock
ZKDistributedDelayLock.java 10KB
ZKDistributedLock.java 6KB
ZKLock.java 962B
ZKHALock.java 6KB
core
pom.xml 5KB
src
main
resources
sync-spout-client.conf 276B
sync-spout-server.conf 176B
sync-spout-actor.conf 529B
scala
com
shrbank
bigdata
storm
SyncSpout.scala 9KB
SyncSpoutClient.scala 6KB
NewSyncSpoutZkConfig.scala 9KB
utils.scala 1KB
ClientMsg.scala 308B
SendBolt.scala 4KB
ZkConfigHelper.scala 2KB
ClientExecutionContext.scala 441B
SyncBoltFields.scala 1KB
examples
SyncSpoutClusterDemo.scala 940B
SimpleBolt.scala 1KB
ParallelAsk.scala 2KB
SyncSpoutClientDemo.scala 1KB
SyncSpoutLocalDemo.scala 972B
messageQueue
pom.xml 873B
src
main
java
com
shrbank
bigdata
storm
queue
ISpoutMessageQueue.java 222B
MultiProducerSingleConsumerQueue.java 7KB
共 62 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3794
- 资源: 4174
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python弹幕情感分析的直播高光时刻判断模型设计与系统实现
- (精品)第4章数控铣床和加工中心工艺与编程.ppt
- (精品)第6章卫星移动通信系统.ppt
- TI杯大奖赛本科组+研究生组论文+源代码+PCB基于TMS320F28335的超声波流量计
- TI杯大奖赛本科组+研究生组论文+源代码+PCB基于TMS320F2812的图像识别智能跟踪小车
- PuTTY Connection Manager ( puttyCM )
- TI杯大奖赛本科组+研究生组论文+源代码+PCB基于TMS320F2812的节能环保型矩阵式变频器的开发
- C语言:消息通信实例代码,主函数实现消息发送与消息接收功能
- (HTML+CSS+jQuery)学生仿手机端静态外卖项目
- 车载软件的OTA方案需求确认内容
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功