通过集成第三方IM实现聊天应用

       在项目场景中有一个移动门户的APP,除了提供门户功能外,还有用户之间能够聊天交流的需求。这个应用在整体架构中的定位可以理解为类似支付宝的一个APP,提供各种微应用的入口为主,聊天功能为辅。聊天应用的核心IM服务,如果团队精力和技术栈积累足够的话,自研当然是最好的方案。但是我们这个项目比较急,所以选择使用第三方或者开源的IM。

一.IM选型:

(1)开源IM

a)野火IM

指标描述
功能性

单聊,群聊,敏感词检测(需自己增加)和第三方推送集成。

机器配置建议

单机2C4G能支撑10W以上长链接,1000/秒以上的消息发送压力。

建议10W在线用户使用4C16G服务资源

健壮性

社区版是单机模式,专业版支持集群模式部署。

数据库

社区版是单机模式,专业版支持集群模式部署。

缓存hazelcast

b)StarTalk

指标描述
功能性

单聊,群聊和推送集成。

机器配置建议

CPU:24核2.6GHz

内存:64G

机器数量:2台部署程序,2台部署redis和数据库

健壮性

支持集群模式部署。

数据库

postgresql

缓存redis

(2)商业IM---社区版(穷哭了.....)

厂商名称API限制离线消息存储历史聊天存储用户数消息撤回敏感词检测推送服务
环信

10/

7

单聊500

群聊200/

3

100

第三方
极光

600/分钟

100/15

60

无限制

100个极光
网易云信

120/分钟

(部分API)

30

30

100未找到说明网易云信
腾讯云

有,API之间不同

7

7

100未找到说明第三方

       首先在开源IM和商业IM之间进行选择。开源IM虽然可以自己进行二次开发,并且性能按照官方说明来看也很不错,但是实际上有以下几个问题:1.项目更新缓慢或停更,开源遗留下的问题难以解决。2.需要自己进行运维部署,增加工作量。3.从官方说明可以看出开源只是一些基础的功能,更强大的功能实际上还是需要付费的。而商业IM好像没有用钱解决不了的问题,虽然我们没有钱........在上面这些社区版的商业IM中,除了最重要的没有用户数限制这个制胜优势,极光IM还有其他几个优势:API限制比较宽松、文档可读性强、历史聊天记录存储久,而且极光IM和极光推送是同一个团队开发的,说是可以平滑的集成起来,简直是没钱首选。

二.架构设计:

       从上面简易的架构图可以看出来如何通过集成商业IM来实现一个简单的聊天应用。因为IM本质就是个没有业务场景的、功能完整的及时聊天服务端,所以提供了完整的聊天应用所需要的服务接口。我们只需要在这之上补充业务数据相关的接口就好了。

       (1)APP服务端:用户信息存储,群信息存储,提供用户注册和登录接口,提供业务数据。

       (2)IM服务:及时聊天服务(用户消息,群消息),会话列表,推送微应用消息。

       (3)推送服务:推送是通过设备号进行消息推送的,和IM的用户推送不同,可以用来推送需要广播的应用系统消息。

        如何保证系统消息推送的及时性呢?

        由于推送服务的送达率和及时性都不太好,我是推送和IM同时推送系统消息的,IM的及时性比较好,而推送服务可以保证用户登出的时候也可以收取到消息,不过这样就需要移动端进行消息去重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值