基于分布式计算模型AKKA的数据并发处理【Lync聊天记录 -www.msucplus.com】

需求出发点:

  • 公司基于微软的Skype For Business Server(简称Lync)做聊天记录的索引和全文查询。
  • 原生Lync 聊天记录数据库中,保存的格式有RTF,HTML,以及PlainText格式,需要通过ETL的技术把数据从Lync归档数据库加工到中央存储中。
  • 由于存在多个站点,以及多个Lync Pool的部署方式,需要考虑多归档数据库数据源合并的问题,并且需要支持全量以及增量的同步方式。
  • 微软默认Lync聊天记录保存在原始数据库中3个月,最多可以设置保存一年,需要考虑中央数据增长问题。
传统解决方案:

  • 利用后台服务定期抓取原数据库数据,通过程序转换RTF以及HTML格式的文本为纯文本格式。
  • 通过SessionIdTime为主键,导入Message表,ConferenceMessage表,保存IM发件人和收件人的SIP地址。
  • 单台机器,多线程并发处理每个月的聊天记录,提高吞吐量。
  • 利用Lucene对于聊天内容进行中文分词。
  • 创建SQL全文索引,保存中文分词内容, 提高查询速度以及查询准确度。
  • 以年作为SQL分区函数,以保证整体查询速度。

分布式解决方案:

1.实现方式
  • 基于AKKA分布式计算框架的方案,由单机模式,横向扩展到多服务器并发处理模型。
  • 利用AKKA Remote Actor特性,实现远程计算节点的透明控制。
  • 利用AKKA Route 特性,实现控制节点,对于计算节点的任务分配。
  • 利用AKKA Dispacher实现计算节点的 FORK-JOIN-EXECUTOR 多线程处理。
  • 使用AKKA Supervisor 以及 EventStream 事件订阅,实现Actor之间的监控。

2.部署方式

  • AKKA Remote Actor使用Microkernel方式部署。
  • 控制节点使用Netty客户端方式,联系各个计算节点中的Agent,并且告知应该开启多少个Remote Actor提供计算能力。
  • 计算节点的Agent使用Netty编写,并且以JavaService的方式,打包为后台服务监听来自于控制节点的请求。
  • 计算节点的Agent使用自定义的PowerShell脚本开启Remote Actor进程以及监听端口。
3.后续改进

  • 现有架构,需要预先设定好计算节点的IP地址以及端口配置,后期会修改成为AKKA Remote Actor以随即端口方式监听。
  • 配合Agent以及AKKA Remote Actor自行汇报服务器信息以及端口信息给Master节点,以实现注册功能(使用ZooKeeper实现服务目录)。


图1 : Remote Actor计算过程



图2 : Lync聊天记录截屏

【广告位】 如有任何Lync以及微软UC相关开发需求,可随时访问 www.msucplus.com 或 QQ:110755057进行垂询。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值