APP开发对于聊天功能的实现架构是怎样的?
深圳APP开发公司结合多年的项目开发经验整理出如下几个重点:聊天功能是由三个部分组成,首先我们看看聊天类型APP开发后台架构流程图如图9-13所示。
·连接层:集群包含数量众多的连接服务器。
·业务层:处理具体业务信息。
·持久层:提供数据存取服务。
1.APP聊天功能开发之连接层
连接层的作用是保持App与服务器之间的连接,连接层只负责如下两个功能。
·与App保持连接。
·把消息通过队列转发到逻辑层处理
连接层的服务器很少需要重启,一旦重启的话会造成大量的App断线并在短时间内重连服务器,服务器瞬间涌入的大量连接请求引发了类似DDOS攻击的现象。这个现象可以通过合理的机制杜绝:当连接层的服务器准备重启,发送条消息到连接着这台服务器的App,让其在重连时连接别的服务器,不要连接当前的服务器。
连接层有个常见的问题:连接层是由多台服务器组成的集群,那么某个App要连接哪台服务器?解决方案是动态分配接入点,这个方案如下。
App访问接入点服务器,接入点服务器根据各个连接服务器的负载等因素综合计算,返回一个连接服务器的IP给App,App通过这个IP连
上连接服务器,整个流程如图9-14所示。
APP聊天功能开发经验示意图图9-14动态分配接入点
如果因为DNS故障等原因无法通过接入点服务器获取IP,可以使用预埋IP的方案:在App中有个默认的连接服务器IP,当App由于DNS问题等原因无法通过接入点服务器获取IP就连接默认的IP,流程如图9-15所示。
2.APP开发聊天功能方法之业务层
业务层主要是处理各种业务逻辑,业务层由下面4个模块组成
·验证模块:验证用户的身份信息。
·路由模块:连接服务器的集群包含了数量众多的连接服务器,例如当A用户向B用户发送消息,两个用户的连接不定是在同个服务器,因此需要通过路由模块获取用户所在的服务器。如果要实现群聊功能,还要在这个模块中查找“订阅/发布”关系。
·统计模块:统计各种信息,例如总连接数、每秒发送消息数、总用户数、Android客户端连接数、iOS客户端连接数等等。
·数据存储模块:存储消息,统计信息,用户身份信息等。
连接层通过队列向业务层进行消息传递,业务层不断从队列中取出消息进行相关的处理,如图9-16所示。
APP聊天功能开发方案示意图9-16连接层与业务层通适队列传递消
使用了队列后,业务层重启程序时对用户的影响可以减到最少,因为所要处理的消息部保存在队列,重启不会造成消息丢失。
3.APP开发聊天功能解决方案之持久层
该层提供数据存取服务,数据包含用户的身份信息、消息、统计信息等。根据不同数据对存取速度不同的要求,可使用不同的软件存储不同的业务数据。例如,用户身份信息这种高1频读写的数据,可存储在Redis、Memcached等内存数据库中。
APP开发公司总结:APP聊天功能的工作流程
下面以用户l向用户2发送消息“你好”为例,说明聊天App后台的工作流程。
(1)用户l同连接服务器l发送消息(里面包含了接收的对象用户2的唯标识和内容“你好”)
(2)连接服务器l接收到该消息后同用户l返回一个应答,同时通过队列把消息传递到业务层
(3)业务层的验证模块先验证该用户的身份信息,验证完成后通过路由模块确定用户2所在的服务器为连接服务器2,把消息传递到连接服务器2从而发送到用户2的手机上。
(4)业务层把消息传递给用户2时,对相关的消息进行统计,同时通过数据存储模块把数据持久化。
聊天App后台的工作流程如图9-17所示。好了,APP开发公司关于聊天功能开发解决流程以及方法本文就分享到这里。谢谢您的关注。博纳网络编辑整理。