这个系统是一个推送通知服务,它具有以下关键特性:
Google Cloud Messaging (FCM):利用 go-gcm 库支持向 Android 设备发送 Firebase Cloud Messaging(前身为 GCM)通知。
Apple Push Notification Service (APNs):通过 apns2 库实现了对 iOS 设备的推送通知支持。
YAML 配置支持:系统允许通过 YAML 文件进行配置,便于管理和更新设置。
命令行工具:提供命令行接口,可用来发送单个 Android 或 iOS 设备的通知。
Web API 推送通知**:可通过 RESTful API 发送批量或单个通知给各个平台的设备。
优雅重启与零宕机部署:利用 facebook grace 工具进行服务重启,确保在部署新版本时不影响服务运行,实现无缝升级。
健康与统计监控:通过 `/sys/stats` 端点展示服务的运行时间和状态码统计信息。
HTTP/2 和 HTTP/1.1 支持:可根据需要选择 HTTP 版本,以获得更高的传输效率。
通知队列与多worker处理**:系统支持将通知放入队列,并使用多个后台工作者进行异步发送,以提高处理能力和容错性。
通知成功与失败计数:可以通过 `/api/stat/app` 访问API来获取各应用的推送通知成功率统计数据。
持久化存储支持:系统允许将应用程序的统计信息存储到内存或其他数据库中,包括 Redis、BoltDB、BuntDB 或 LevelDB。
iOS 证书文件支持:接受 p12 或 pem 格式的 iOS 推送服务证书文件。
HTTP 代理功能:若服务器直连 Google FCM 服务存在困难,系统支持配置 HTTP 代理以确保推送通道畅通。
故障恢复:当服务器响应失败时,系统具备自动重试发送通知的能力,增强了消息送达的可靠性。