Gorush:Go语言编写的推送通知服务器

发表时间: 2024-03-13 07:01

这个系统是一个推送通知服务,它具有以下关键特性:

1. 多平台推送通知支持:

Google Cloud Messaging (FCM):利用 go-gcm 库支持向 Android 设备发送 Firebase Cloud Messaging(前身为 GCM)通知。

Apple Push Notification Service (APNs):通过 apns2 库实现了对 iOS 设备的推送通知支持。

2. 配置灵活性:

YAML 配置支持:系统允许通过 YAML 文件进行配置,便于管理和更新设置。

命令行工具:提供命令行接口,可用来发送单个 Android 或 iOS 设备的通知。

3.Web API 接口:

Web API 推送通知**:可通过 RESTful API 发送批量或单个通知给各个平台的设备。

4. 运维友好性:

优雅重启与零宕机部署:利用 facebook grace 工具进行服务重启,确保在部署新版本时不影响服务运行,实现无缝升级。

健康与统计监控:通过 `/sys/stats` 端点展示服务的运行时间和状态码统计信息。

5. 协议与性能优化

HTTP/2 和 HTTP/1.1 支持:可根据需要选择 HTTP 版本,以获得更高的传输效率。

通知队列与多worker处理**:系统支持将通知放入队列,并使用多个后台工作者进行异步发送,以提高处理能力和容错性。

6. 统计与日志记录:

通知成功与失败计数:可以通过 `/api/stat/app` 访问API来获取各应用的推送通知成功率统计数据。

持久化存储支持:系统允许将应用程序的统计信息存储到内存或其他数据库中,包括 Redis、BoltDB、BuntDB 或 LevelDB。

7. 安全证书管理:

iOS 证书文件支持:接受 p12 或 pem 格式的 iOS 推送服务证书文件。

8. 网络代理支持:

HTTP 代理功能:若服务器直连 Google FCM 服务存在困难,系统支持配置 HTTP 代理以确保推送通道畅通。

9.重试机制:

故障恢复:当服务器响应失败时,系统具备自动重试发送通知的能力,增强了消息送达的可靠性。