美文网首页IM分布式IM服务器开发
我的IM服务开发之路-叩开混沌之门

我的IM服务开发之路-叩开混沌之门

作者: 黑哥儿666 | 来源:发表于2016-11-10 00:18 被阅读158次

IM,Instant messaging的缩写,翻译为中文就是即时通讯。例如QQ,微信等都是即时通讯领域的软件。俗称聊天软件

最近有个想法,对于我两年的IM开发经历做个简要的总结,本着学习和交流的心态,分几个篇幅写出一些自己对于分布式IM系统的理解,期望能收到大牛的指正和意见。本系列文章所说的IM都是指在分布式环境下的IM系统。

单就分布式系统,就已经有很深很深的水了,这里会较多地涉及到分布式系统下的内容,正好伴随着IM的业务进行自我回顾。


自己对IM的特性做个非官方的总结:

1. 即时性。从字面意思不难理解,IM对于即时性的要求比较高,需要实时地收到对方发来的消息。

2. 可交互。消息双方的用户需要能够对消息作出回应,即进行交互,互动。如果发出一片文字过来却不能与之进行交互,也算不得IM。

3. 高度依赖网络。在断网的情况下也不能进行通畅的IM交互。

4. 基于可视化或者是可感知的信息。比如文字,图片,语音,文件,表情。这些都是基于眼睛或者耳朵能感知到的。你不能在网上传递一个温暖的怀抱给对方吧?或者说你不能通过IM给对方一巴掌吧?也不能把香味传过去给对方。(或者这些也可以是IM的一个发展方向,哈哈,反水好快。。。)

5. 不安全性。基于网络的交互,都是不安全的,任何系统都有被攻破的可能性。别人给你发的一串文字,可能是经过中间人修改过的。

6. 虚拟。网络都是虚拟的。所以对于网络上的消息,我们应该有基本的辨别能力,不能轻易相信网上的信息。例子就不举了,网络诈骗多了去了。

7. 必须是两个端及以上进行聊天。可以是单人之间的聊天,也可以是一群人之间的聊天。当然,你也可以自己和自己聊天。

8. 传播扩散快。既然是即时通讯,其信息扩散的能力是很快的,可以一个传一个,也可以是病毒式分裂扩散。

IM系统对于技术上有如下几点要求:

1. 如何保证信息即时地成功投递给对方,消息不丢失,不重复;

2. 如何保证信息的顺序到达;

3. 如何保证信息中途不会被篡改;

4. 如何保证消息在收发双方展示一致;

5. 如何保证给用户省电省流量;

6. 如何保证IM系统的数据一致性;

7. 如何保证IM系统的可用性;

8. 如何保证IM系统的分区容忍;

9. CAP不可能同时满足,系统设计中如何做取舍;

10. 如何应对消息风暴引起的网络波动;

11. 如何避免或减少系统的消息风暴;

12. 在没有全局时钟的情况下如何保证有序;

若想在IM系统开发中游刃有余,需要熟练get如下技能:

1. TCP/IP协议,HTTP协议;

2. Linux功底:shell命令,linux操作系统的特性及脾气,Linux下的常用开发接口;

3. 分布式系统原理;

4. 一种服务端开发语言:C/C++/Java/Nodejs/Golang/PHP and so on;

5. 字符编码,不同进制之间的转换;

6. 加密、压缩技术;

7. 存储:mysql,nosql,以及不同存储介质下存储系统性能的发挥程度;

8. 如何优雅地与android,iOS,win,mac,web,运维之间进行“撕逼”;


本篇文章仅仅是罗列了几个点,提出了几个问题。问题都是我在开发过程中遇到或思考的一些问题,很多细节地方深入探究非常有意思,往往每个决定感觉都是在和哲学做对抗。

分布式系统的cap

相关文章

  • 我的IM服务开发之路-叩开混沌之门

    IM,Instant messaging的缩写,翻译为中文就是即时通讯。例如QQ,微信等都是即时通讯领域的软件。俗...

  • 叩开写作之门

    从哪一天开始看写作课的?忘记了,推算应该是1月28号左右,距离放假已经过去一周,焦虑后突然释怀(暂时的),就拾起之...

  • 叩开潜意识之门

    写在前面 每个人都是独一无二的存在。当我们叩开潜意识世界的门扉,我们便能够越发了解自己,尊重和表达自己的真实感受,...

  • 谈谈iOS应用中的IM开发

    转载文章: IM开发从入门到填坑Demo IM的实现方式 使用第三方IM服务 在国内有很多的IM第三方服务商,底层...

  • iOS端IM开发从入门到填坑

    IM开发从入门到填坑Demo IM的实现方式 拿来主义,使用第三方IM服务 IM的第三方服务商国内有很多,底层协议...

  • 文:盼盼 清晨的小路上 我穿着浅绿的旗袍 轻轻叩开思念之门 纵容思绪飞...

  • 一周总结

    这周开发im mqtt聊天,项目基于野火的Mqtt服务端开发,后台开发小伙为了方便,生拉硬拽的使用mqtt服务端代...

  • 点赞黄梅枝《日月星河》诗集之《季节》

    诗集:《日月星河》[https://www.jianshu.com/nb/46090678]:叩开春天之门 作者:...

  • 在城北叩开幸福之门

    在一个城市安身立命,在今天很难,在过去也不容易。但是,只要肯坚持,善于运用智慧,幸福之门也随时可以叩开。 只有小学...

  • 四号人格叩开我的写作之门

    作者:扶贝 标题中的“四号人格”即九型人格中的第四种人格——自我型内倾性格,这种性格的人多忧伤、喜静。说到四号人格...

网友评论

    本文标题:我的IM服务开发之路-叩开混沌之门

    本文链接:https://www.haomeiwen.com/subject/ormtpttx.html