MPush开源消息推送系统:简洁、安全、支持集群

引言

由于之前自己团队需要一个消息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统

所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理

这一套代码,最近比较闲就拿出来给开源做点贡献。

作为Java版的开源推送系统,MPUSH还是有很多不错的设计的,特别是对想自己搭建一套推送系统的团队

是有很大的借鉴意义的。当然开源出来也是不想曾经做过的工作白白浪费掉,特别希望对这方面有兴趣的同学

来一起把这套东西做的更好,服务更多的用户!

项目主页

https://mpusher.github.io

系统介绍

mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点。同时也是少有的可商用的开源推送系统。

特性和优势

1. 源码全部开放,包括server、android、ios (不像有些开源服务只开放部分代码,鄙视下)

2. 代码质量高,全部模块化设计,真正的商用级产品,考虑到推送中遇到的大部分场景

3. 安全性高,基于RSA精简的加密握手协议,简单,高效,安全

4. 支持断线重连,及弱网下的快速重连,无网络下自动休眠节省电量和资源

5. 协议简洁,接口流畅,支持数据压缩,更加节省流量

6. 支持集群部署,支持负载均衡,基于成熟的zookeeper实现

7. 用户路由使用redis集群,支持单写,双写,集群分组;性能好,可用性高

8. 支持http代理,一根TCP链接接管应用大部分请求,让http请求更加及时

9. 高度可配置化,基本上通过修改配置可满足大部分场景

10. 扩展性强,高度模块化,基于SPI模式的可拔插设计,以满足特殊需求

11. 监控完善,日志详细,可快速排查线上问题及服务调优

教程与文档

开发手册:https://mpusher.github.io/docs

源码

server https://github.com/mpusher/mpush

java-client https://github.com/mpusher/mpush-client-java

android sdk&demo https://github.com/mpusher/mpush-android

iOS sdk https://github.com/mpusher/mpush-client-swift

时间: 2024-10-05 17:12:36

MPush开源消息推送系统:简洁、安全、支持集群的相关文章

开源实时消息推送系统 MPush

系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的可商用的开源push推送系统. 特性和优势 源码全部开放,包括server.android.ios .websocket等 代码质量高,全部模块化设计,真正的商用级产品,考虑到推送中遇到的大部分场景 安全性高,基于RSA精简的加密握手协议,简单,高效,安全 支持断线重连,及弱网下的快速重连,无网络下

魔推mpush:消息推送的大学问,别把用户惹毛了!

从开发者和开发商的角度来说,消息推送越来越受到他们的重视.因此,个推.极光.百度云平台.信鸽.魔推mpush等等消息推送类服务平台应运而生,这受到了运营商们的重视.但是,对信息推送服务的调查我们发现,很多运营商只是单纯的将这个渠道视为一种信息下发通道,并未很好的了解.运用这一个有效的提高APP打开率和活跃度的工具. 根据Flurry公布的数据显示,智能手机用户每天平均2个半小时在看手机,而其中86%的时间都在使用各种各样的APP.而Urban Airship过去6个月内5亿次推送的数据统计结果表

设计一个百万级的消息推送系统

原文链接:https://crossoverjie.top/2018/09/25/netty/million-sms-push/ 前言 首先迟到的祝大家中秋快乐. 最近一周多没有更新了.其实我一直想憋一个大招,分享一些大家感兴趣的干货. 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天??). 先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互. 最主要的工作就是要有一个系统来支持设备的接入.向设备推送消息:同时还得满足大量设备接入

如何使用Netty技术设计一个百万级的消息推送系统 原 荐

先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互. 最主要的工作就是要有一个系统来支持设备的接入.向设备推送消息:同时还得满足大量设备接入的需求. 所以本次分享的内容不但可以满足物联网领域同时还支持以下场景: 基于 WEB 的聊天系统(点对点.群聊). WEB 应用中需求服务端推送的场景. 基于 SDK 的消息推送平台. 技术选型要满足大量的连接数.同时支持双全工通信,并且性能也得有保障. 在 Java 技术栈中进行选型首先自然是排除掉了传统 IO. 那就

如何实现消息推送系统

1.前言 随着IOS,Android应用的普及,对推送消息的需求也越来来重要,目前市面上有的个推推送.极光推送.友盟推送等等,那如何自己搭建一个推荐系统昵? 2.名词说明: 设备端:消息接收方: 消息服务:负责和设备端建立连接,并推送消息给设备端 消息系统: 消息服务集群: 路由系统:根据消息服务的负责返回合适的消息服务给设备端(主要负责监控当前可用的消息服务.监控当前消费服务的负载情况,返回合适的消息服务给设备端) 业务系统:消息系统之外的其它业务系统: 平台:包括设备端和前端页面系统: 3.

一篇文章教你如何设计一个百万级的消息推送系统

前言 先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互. 最主要的工作就是要有一个系统来支持设备的接入.向设备推送消息:同时还得满足大量设备接入的需求. 所以本次分享的内容不但可以满足物联网领域同时还支持以下场景: 基于 WEB 的聊天系统(点对点.群聊). WEB 应用中需求服务端推送的场景. 基于 SDK 的消息推送平台. 技术选型 要满足大量的连接数.同时支持双全工通信,并且性能也得有保障. 在 Java 技术栈中进行选型首先自然是排除掉了传统 IO

设计一个百万级的消息推送系统----转

技术选型 要满足大量的连接数.同时支持双全工通信,并且性能也得有保障. 在 Java 技术栈中进行选型首先自然是排除掉了传统 IO. 那就只有选 NIO 了,在这个层面其实选择也不多,考虑到社区.资料维护等方面最终选择了 Netty. 最终的架构图如下: 协议解析 既然是一个消息系统,那自然得和客户端定义好双方的协议格式. 常见和简单的是 HTTP 协议,但我们的需求中有一项需要是双全工的交互方式,同时 HTTP 更多的是服务于浏览器.我们需要的是一个更加精简的协议,减少许多不必要的数据传输.

服务器与客户端消息推送的原理

其实服务端与客户端实现消息推送的方式有几种: 1.客户端不断的查询服务器,检查新的内容,也就是所谓的pull或者轮询的方式: 2.客户端与服务器之间维持一个TCP/IP长连接(在HTTP1.1中,所有的请求都认为是长连接),服务器向客户端push: 3.当服务端有新内容的时候,发送一条类似短信的信令给客户端,客户端收到货从服务器下载新内容,也就是SMS的推送方式: 对于第一种方式有以下的缺点: 1.因为需要不断地轮询,所以手机会很耗电: 2.容易被系统杀死: 对于第二种方式: 我们首先来了解一下

魔推mpush:实现精准智能消息推送的五个关键

前沿:因为工作性质的关系,笔者会接触到很多非常资深的移动开发商.大部分技术工程师出身的CEO对技术本身的知识产权非常敏感.<KK的预言>一文中提出一个观点:"当拥有知识产权不在能够保证盈利,拥有精准只能的信息推送能力是今后APP开发公司盈利的保证". 魔推MPUSH是一款消息推送类SDK插件,它专门为开发者使用.目前,采取免费开放的运作模式.消息推送是天下最麻烦的事情.韩剧往往有这样的情节:女生哭着说:你不要走.我知道你要什么.男生大吼一声:我自己都不知道自己要什么,你怎么