为了账号安全,请及时绑定邮箱和手机立即绑定

一、即时通讯为什么这么难?

标签:
Java Android iOS
  1. 推送式系统📲

    与常见的请求响应式的系统不同,例如搜索系统,ftp系统,web系统,这些都属于请求响应式系统。
    推送式系统最大的特点就是,你不需要去主动请求就可以接收到响应结果,从而触发一些业务操作。

  2. 逻辑复杂性难点💥
    举个简单的添加好友流程:

    • 用户A添加用户B为好友,并且添加到分组G
    • 判断A是否存在
    • 判断B是否存在
    • 判断分组G是否存在
    • 拉取A的好友列表,判断B是否存在A的好友列表中
    • 判断A的好友是否达到上限
    • 判断A是否将B拉黑
    • 判断B是否将A拉黑
    • 检查用户A是否频繁添加其他人为好友
    • 检查用户A添加好友描述是否涉黄,敏感词
    • 拉取用户B的添加好友策略,查看是否允许添加好友
    • 再根据B的添加好友策略走不通的添加流程,如开启好友验证,则走好友申请流程,如按身份添加则走身份判断流程…

账号,群组,消息等服务的复杂度并不低于好友服务👓

  1. 消息可达性 ✈️
    既消息的可靠传输,其实这个问题不光是即时通讯的难点,所有的分布式系统可能都有这个难点,只是这一点在即时通讯的场景中尤为突出与重要,如果一个聊天软件,频繁丢消息还有用户会使用吗?
    分布式领域,任何端到端的消息传递协议,不可能做到既不丢失也不重复,那么是不是即时通讯系统就被判了死刑了呢?并不是,我们在设计即时通讯架构系统的时候需要做一定的折中取舍。后面会详细介绍。

  2. 状态同步⌚️
    图片描述

  3. 海量数据存储🖥
    系统中存在的用户数据,用户与用户之间的好友数据,用户与用户的群组数据,群组中的群成员数据…
    如果一个日活10w的即时通讯应用,那么每天群聊,单聊所产生的聊天消息会有多少条呢?

点击查看更多内容
9人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消