上一次折腾PUSH服务已经好几个月了,终于抽空重构了(APNS:Apple Push Notification Service,我谈的其实只是构建一个中间平台去调用apns服务)。
先介绍下之前所做的push服务的设计模型
当初的设计比较简单,将压力全部放在了推送消息处理线程上,线程不仅需要建立apns服务器的通信,也需要对广播消息进行转换。对于单播消息而言性能似乎还可以接受,然而对广播消息处理,线程的处理性能明显降低。因为apns服务是不支持广播消息的,进行广播必须要获取到所有广播对象的devicetoken,这就需要线程去批量获取推送对象列表,并将这个列表组成单播message,而后批量发送。这样的设计将消息处理和发送耦合在了一起,无法并行处理。虽然通过异步通信的方式实现了批量发送,但是总体而言性能还是很低的。
之前设计最根本的的问题是耦合了广播消息本身的处理和发送的处理,发挥不了多线程处理的性能。这次重构,主要的性能优化就是,区分了推送请求队列和推送消息队列,请求处理线程只专注对推送请求的处理,生成可用于直接发送的推送报文,并均衡负载到推送消息队列上。推送线程则专注于推送本身,每个线程hold一个与apns的连接,发送推送报文。
将push请求处理和push发送处理分开,也给系统扩展提供了更多的可能性。单服务器可以设置多个请求队列、多个发送队列,每个队列允许多个线程进行监听处理。也可以将推送请求处理和发送处理分开部署,并进行均衡负载。
废话了这么多,最后再戳下漏洞:由于没有区分消息级别,即时消息可能会淹没在队列中。对于实时性要求不是非常高的一般应用上面的模型还能凑合使用。大家有什么好的设计思路欢迎讨论。
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
相关推荐
在2011年的背景下,iOS的APNs(Apple Push Notification service)和Android的GCM(Google Cloud Messaging,后来演变为Firebase Cloud Messaging)是主要的推送服务。 在描述中提到的“博文链接:...
文档中提到了多种推送渠道,如Apple APNS、GEXINPUSH和MPS PUSH,这些指的是针对不同移动操作系统的推送服务。例如,APNS是苹果公司提供的推送通知服务,用于iOS设备上的应用消息推送。SDK指的是软件开发工具包...
10. **推送通知**: 如何集成Apple Push Notification Service(APNs)进行远程通知,使应用能在后台接收并处理消息。 通过深入学习和理解这些源代码,开发者不仅可以掌握基本的编程技巧,还能了解最佳实践,提高...
1. **消息推送**:iOS应用的后台运行状态下,为了实现消息实时推送,开发者需要集成Apple的APNs(Apple Push Notification service),并且在客户端和服务器端都要实现相应的接口,确保消息能够准确无误地推送到用户的...
6. **推送通知**:源码可能包含实现Apple Push Notification Service (APNs) 和 Google Firebase Cloud Messaging (FCM) 的部分,这对于即时通讯应用的用户通知至关重要。 7. **安全性**:源码中可能涉及到用户隐私...
10. **推送通知**:可能包含APNs(Apple Push Notification service)的集成,实现新闻更新提醒。 11. **动画效果**:通过Core Animation或者CAAnimation实现过渡、滑动等交互动画,提升用户体验。 12. **权限请求...
9. **推送通知**:为了提醒用户订单状态或优惠活动,应用可能会使用Apple Push Notification service (APNs)。 10. ** localize 区域化**:考虑到全球用户,应用可能实现了国际化和区域化,以便显示多种语言的界面...
6. **通知与提醒**:集成推送服务,如APNs(Apple Push Notification service)和GCM/FCM(Google Cloud Messaging/Firebase Cloud Messaging),实现实时的消息通知。 7. **负载均衡与容错**:在高并发环境下,...
在IT行业中,高仿应用开发是一项常见的技术实践,旨在快速构建与知名应用相似的功能和用户体验。本项目聚焦于“高仿陌陌高仿微信ios”,它不仅包含了客户端的源代码,还提供了服务端的实现,这为我们深入理解移动...
6. **推送通知**:腾讯微博客户端可能会集成推送服务,如Google Firebase Cloud Messaging (FCM) 或 Apple Push Notification service (APNs)。这部分源码将展示如何接收并处理推送消息。 7. **性能优化**:源码中...
7. **推送通知**:为了让用户及时获取新内容,应用可能集成了推送通知服务,如Firebase Cloud Messaging(FCM)或Apple Push Notification service(APNs)。 8. **云服务**:为了存储和处理大量数据,应用可能会...
8. **通知与推送(Notifications & Push Notifications)**:应用可能会使用本地通知提醒用户新书籍上架,或使用Apple Push Notification Service (APNs) 进行远程推送。 9. **单元测试与集成测试(Unit Testing & ...
4. **实时推送**:为了在应用后台时也能及时收到新消息,Habber可能集成了苹果的PushKit或APNs(Apple Push Notification service),结合XMPPStream的离线消息处理机制,确保用户不会错过任何消息。 5. **界面交互...
在"notificationServer"中,这可能涉及到与第三方推送服务如Firebase Cloud Messaging (FCM) 或Apple Push Notification service (APNs) 的集成,以覆盖Android和iOS平台。 其次,项目的测试部分至关重要。在...
- **推送通知**:了解如何配置和使用Firebase Cloud Messaging(FCM)或Apple Push Notification Service(APNS)。 9. **测试**: - **单元测试**:源码可能包含对关键功能的单元测试,学习如何编写和运行测试...
对于消息通知,可能还涉及到了推送服务,如Google Firebase Cloud Messaging(FCM)或Apple的Push Notification Service(APNS)。开发者需要处理好提示的时机、内容和消失方式,确保用户能够及时获取信息,而不被...
7. **推送通知**:如果应用有提醒功能,可能涉及到Apple Push Notification service (APNs)的集成。 8. **Auto Layout和Size Classes**:用于适配不同屏幕尺寸和方向,确保UI在各种设备上都能正确显示。 9. **App ...
为了实现离线消息功能,TeamTalk可能利用了苹果的APNs(Apple Push Notification service)服务,当用户离线时,服务器可以将消息推送到设备,用户上线后即可查看。 4. **实时在线状态显示**: 实时显示联系人...
而APNs(Apple Push Notification service)则负责应用程序的推送通知功能。 在学习和分析这个存储库时,可以预期看到以下概念的实例: 1. MVC(Model-View-Controller)设计模式,这是iOS开发中常见的架构模式。 2...
5. **推送通知**:为了在有新消息时提醒用户,RN聊天可能集成像Firebase Cloud Messaging (FCM) 或Apple Push Notification Service (APNs) 这样的服务,以便在后台接收并处理推送通知。 6. **样式与布局**:React ...