即时消息技术剖析与实战
袁武林
微博研发中心技术专家
立即订阅
6503 人已学习
课程目录
已完结 24 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 搞懂“实时交互”的IM技术,将会有什么新机遇?
免费
基础篇 (8讲)
01 | 架构与特性:一个完整的IM系统是怎样的?
02 | 消息收发架构:为你的App,加上实时通信功能
03 | 轮询与长连接:如何解决消息的实时到达问题?
04 | ACK机制:如何保证消息的可靠投递?
05 | 消息序号生成器:如何保证你的消息不会乱序?
06 | HttpDNS和TLS:你的消息聊天真的安全吗?
07 | 分布式锁和原子性:你看到的未读消息提醒是真的吗?
08 | 智能心跳机制:解决网络的不确定性
场景篇 (4讲)
09 | 分布式一致性:让你的消息支持多终端漫游
10 | 自动智能扩缩容:直播互动场景中峰值流量的应对
11 | 期中实战:动手写一个简易版的IM系统
12 | 服务高可用:保证核心链路稳定性的流控和熔断机制
进阶篇 (10讲)
13 | HTTP Tunnel:复杂网络下消息通道高可用设计的思考
14 | 分片上传:如何让你的图片、音视频消息发送得更快?
15 | CDN加速:如何让你的图片、视频、语音消息浏览播放不卡?
16 | APNs:聊一聊第三方系统级消息通道的事
17 | Cache:多级缓存架构在消息系统中的应用
18 | Docker容器化:说一说IM系统中模块水平扩展的实现
19 | 端到端Trace:消息收发链路的监控体系搭建
20 | 存储和并发:万人群聊系统设计中的几个难点
21 | 期末实战:为你的简约版IM系统,加上功能
22 | 答疑解惑:不同即时消息场景下架构实现上的异同
结束语 (1讲)
结束语 | 真正的高贵,不是优于别人,而是优于过去的自己
即时消息技术剖析与实战
登录|注册

22 | 答疑解惑:不同即时消息场景下架构实现上的异同

袁武林 2019-10-16
你好,我是袁武林。
随着专栏最后一个进阶篇模块的更新后,咱们的即时消息专栏课程,到这里就要告一段落了。首先,感谢你在这段时间里对专栏的持续关注,也非常高兴看到你一直在积极地思考和学习。
在专栏的讨论区,同学们也都十分活跃,都在热情地留言和互动讨论,留下了很多比较典型和有意义的问题。
有一些问题可能限于篇幅的原因,我没有详细展开,那么今天,我就摘录出比较有代表性的 5 个问题,来做一下集中的整理和回复。也希望通过这种方式,能够帮助你对这些知识点有更清晰的理解和认识。

第一问:消息的服务端存储和本地存储

第 1 讲“架构与特性:一个完整的 IM 系统是怎样的?”中,有很多同学都问到了这个问题:即时消息系统实现中,消息一定需要在服务端的存储服务里进行存储吗?
首先呢,关于服务端存储的问题,我们需要更多地考虑存储成本和数据安全。
一方面,如果消息不在服务端存储,服务器只是作为消息的中转路由服务,那么,相应的消息存储成本就会低很多,在数据安全性方面也更好一些。
另外,这个问题也和产品定位有关。
比如,如果你的产品定位上不需要支持消息多终端同步(比如微信),那么像核心的消息等这些数据,就可以不在服务端进行存储。不过,用户的好友关系等数据信息还是需要存储在服务端的。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《即时消息技术剖析与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(5)

  • 小可
    直播房间和群聊消息扇出这个问题特别好,两者确实有区别,老师的解答也很清楚😁

    作者回复: 谢谢支持😁

    2019-10-18
    2
  • _CountingStars
    老师我有一个问题,这个用户--> 连接的映射是如何存储在中央资源里的,对于像 java 这样的语言,其实这个所谓的连接其实是一个 java 对象,对于更底层的实现,这个连接其实就是一个表示文件描述符的数字而已,而这个数字不同的网关机肯定会重复的,所以我想问一下,这个用户到连接的映射到到底是怎么存储在中央资源里的。对象或者一个可能会重复的数字,存储起来也没有意义吧。是不是用户到连接的映射实际上只存储在网关机的内存里,中央资源里存储的只是某个用户在哪个网关机的映射,找到网关机后直接发消息给那台网关机,由那台网关机在自己的内存中查找到用户到连接的映射,然后发送消息?

    作者回复: 是的,用户上线的时候把用户和连接的网关ip作为映射存在中央存储,同时网关机本机内存也存储一个uid到连接的映射(这个映射可以直接把连接这个对象放在Map里),然后消息推送时读取中央全局的映射,查询待推送消息的接收人所在的网关机,再通过rpc方式把这条消息发给这台网关机就可以了。

    2019-10-16
    2
  • mong
    老师你好,有一个问题,想和你交流一下,关于离线群消息的存储的问题,我想问一下,离线的群消息你们是为群里的每个人都存储他的离线消息,还是消息只是存储一份;,如果选择存储一份(大家进行共用),你是如何他们在拉离线消息的时候,进行标记哪个用户拉取到群的离线消息的哪一条了?

    作者回复: 一般会每个用户存储一份,不过只会存储消息id,内容真正下推前再获取。

    2019-10-17
    1
  • 老师,websocket网关和im服务能否用dubbo通信?或者老师对他们之间的rpc通信有什么好的建议

    作者回复: dubbo没问题的,成熟的rpc框架都可以,微博开源的motan也非常好,可以了解一下

    2019-10-19
  • 谢谢老师,以后有问题了,还可以和你讨论吗?

    作者回复: 没问题的呀,随时欢迎大家来交流讨论。

    2019-10-17
收起评论
5
返回
顶部