码迷,mamicode.com
首页 > 其他好文 > 详细

superpush-高效分布式推送服务

时间:2015-05-10 19:04:26      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

一、前提

     1、我们的多个系统都需要推送功能,但是我们又不想每个系统都去实现这样一个推送功能。

     2、推送作为一个服务后,可以方便切换,比如一开始我们使用的是极光推送,后来切换到gopush推送,这样修改推送服务实现即可。

二、实现

     在做这这套系统的第一版时,采用的是多线程和kafka(消息系统,用来缓存需要推送的消息)实现的,运行一段时间后,发现在推送大量消息时存在很大的问题,(当然问题都是在实现上)。第二版时,我对系统进行了新的架构,全面采用scala和akka来实现,组件之间的通信采用akka.tcp协议通信(代替旧的http通信)。

三、架构

技术分享

四、简介

  1、superpush-client和sperpush-web:推送的客户superpush-client可以直接导入到java或scala的项目中使用,sperpush-web是为了方便非java项目调用而提供的http接口调用(开发中)。client向worker推送失败时,在一定时间内后重新推送。当某个worker挂掉后,会重新选择新的woker进行推送

 2、superpush-master:管理client和worker。client和worker启动后会注册到master中并且定期向master汇报自己的状态。当worker改变时,master会通知client,client会更新自己可用的worker列表。

 3、superpush-worker:负责具体推送消息。

 4、每个组件都支持集群



superpush-高效分布式推送服务

标签:

原文地址:http://my.oschina.net/u/241255/blog/412995

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!