近日,网易云信CTO阙杭宁向开发者分享了网易IM云的演变,云信的架构特点以及开发者生态等内容。

网易IM云演变

云计算的架构,其核心是基于面对服务(SOA)的自动化服务管理架构,其特征是资源池化、通过互联网交付的按需弹性、简单易用、可计量的服务。

网易在即时通讯方面的自主研发已有15年。网易泡泡是一款和QQ同一时期,也偏于PC时代的即时通讯产品,其架构也一直在持续迭代优化。在移动互联网发展的浪潮中,网易各种移动互联网产品也陆续上线发布,大多数产品都有很强的即时通讯需求,例如云音乐的私信功能、网易花田的社交通信、网易BoBo的连麦等等。云信即在网易泡泡架构的基础上,针对移动互联网的网络特性以及产品特性,做了全面的改造和升级,以基础设施的形态去承载了诸多网易亿级体量的产品稳定运行。


(网易IM云的演变历程)

2015年,为响应政府和总理“互联网+”计划,网易启动了云信对外服务的计划,并立项重构整个云信团队,聚集了网易公司内各团队的专家,并以产品团队牵头,对云信平台对外服务体系进行了设计与落地。

也正是因为云信本身基础夯实,有足够重量级的产品开发对接经验以及线上稳定运维服务经验。所以项目启动不到一年,网易云信就通过了严密的测试和内部邀请试用各环节验证,在2015年10月正式对外发布了云信平台。接入网易云信的开发者需要和云信的技术团队、商务团队协作,双方共同努力适应新的部署模式和业务模式,确保IM顺利接入。在这个过程中,需要大量的技术细节沟通和产品代码的调整和对接,双方也要根据具体需要调整自己身产品和平台的功能和实现方式,大量实践之下对于接入IM功能的APP和云信的完善和成熟度也有很好的促进作用。

网易云信架构特点

阙杭宁认为可以用“稳定、务实”两个词来形容云信的架构特征。所谓稳定在上文已经提过产品验证方面的依据,而在架构本身,要做到真正稳定的效果,就需要各环节各子系统都做到抗抖动、抗单点风险和全面的实时监控和自动化应对,这些并不是靠理论基础就实现,需要通过业务实战一步步走过来。网易云信自泡泡开始至今,经过了无数次的技术升级,才有现在的稳定性体现。

“务实”这个词似乎不会用来描述架构,阙杭宁表示他口中的“务实”是指网易云信在面对众多互联网产品上,做了数量庞大的细节优化去提高接入的产品体验,比如移动互联网弱网状态下的实时音视频数据包udp重传算法、舒适噪音、方便移动办公的多端消息漫游同步、可供开发自主定义的多端在线策略等等。同时面对开发者接入难度和便利性上,云信也做了非常多有助于各层次开发者快速自由接入的工作,例如提供了开发文档、入门教学视频、拥有精致交互和视觉的Demo开源项目、开源的UI组件及使用说明、提供了论坛放置了常见问题的处理(如安卓Demo导入的手把手教程)。网易云信实际地解决接入者的问题,并且帮助接入产品拥有和网易产品同样的优质体验。在消息稳定性、实时音视频质量、聊天室并发以及消息到达率和速度上,都有很好的效果。

具体谈到IM云的架构特点,网易云信具有高可用,易扩展等大型分布式服务器架构共有的特征。网易多年以来积累了丰富的设计经验和产品服务经验,比如用于多媒体等文件的对象存储系统、分布式关系型数据库服务、分布式缓存服务、反垃圾集群系统等等,并都在网易系产品中广泛使用;而外部开发者并不能直接获得这些系统为开发工作所带来的便利,而云信作为PaaS平台,也作为媒介为开发者提供了一个良好的访问入口来使用这些服务;也正是有网易内部的平台,云信才能拥有良好的高可用,易扩展等特性,从而为开发者提供稳定的服务。

网易云信的架构选择理念

谈到近年来,新的编程语言(旧编程语言新用)的层出不穷,阙杭宁也分享了他的一些看法以及云信的架构选择理念。

开发语言本身,各有优劣,网易云信的考量主要是两个维度: 第一是语言本身的普及程度以及语言特性是否可以满足系统需要;第二是团队本身的积累。他表示对于新语言或者新技术,网易云信会积极吸收和探索,但涉及到生产级的服务,云信还是倾向于先选用主流稳定的技术。因为新技术在缺乏大量实际产品验证的情况下,可能会存在一些难填的坑以及待添加完善的服务组件,这种不确定性会对产品和服务的稳定性带来危害进而损害用户的利益,所以云信的生产系统更多是使用成熟的语言来开发。成熟的编程语言代表拥有广泛的开发人员,更加适合大团队的开发作业。

网易云信技术团队倡导的理念是先获得自身技术的突破,等待成熟以后再应用到商品化产品中。例如在保证产品性能稳定的同时,云信积极尝试新的语言和框架,例如网易云信实时音视频相关的新服务中使用了Golang。

对于网易云信技术团队的发展和技术积累来说,阙杭宁希望所有人持有包容的态度来看待和学习新技术,每个云信技术团队成员把自己定位为“程序员”而不是“Java程序员”或“前端程序员”。技术或者语言具有相通性,虽然并不要求团队内每个人都成为全栈程序员,但不断的学习积累有助于团队合作时互换角色思考,提升自身的团队协作能力。

网易云信开发者生态

在开发者方面,网易云信在接口设计上对接口的灵活度和接入便利性一直都有相对全面的考量。

网易云信希望把简单易用的接口提供给不同层次的开发者和不同产品场景需求去使用,所以并没有以多版本接口的方式去设计冗繁的API体系,而是在保持向下兼容本身,对接口进行持续迭代优化。考虑到同时面对资深开发人员,网易云信预留了足够自由的参数传入和自由定义发挥空间,几乎所有的子系统上面,都有自定义、用户扩展预留设计的体现。

而面对刚入行的开发者,云信在调用示例本身和功能组合上,做了足够丰富的示例和注释,来帮助这些开发者快速的实现自身业务。并在技术支持层面,7*24小时响应接入咨询,来保障对接开发工作的快速顺畅。

推荐阅读

猿团专访云信CTO阙杭宁

【视频】云信CTO阙杭宁:IM云开发经验分享

网易云信∣真正稳定的IM云服务

http://netease.im  长按识别,关注精彩

网易云信阙杭宁:通过IM云让开发者共享网易经验相关推荐

  1. CSDN专访云信阙杭宁:以16年技术积累打造稳定IM云服务

    网易在9月21日发布了网易云计算战略,以数十亿人民币的首批投入来"解放全国千千万万的程序员".而在2015年年底,网易云信IM开发服务平台就作为先锋军的一员,杀进了开发服务市场. ...

  2. 南方日报专访 | 网易云信沈青松: 企业上云正热,PaaS将迎来爆发

    7月13日,网易云信副总经理沈青松先生接受南方日报程鹏记者的专访,以下是稿件原文,原稿发布于南方日报报纸及官方APP"南方Plus". 近日,由网易智慧企业部旗下网易云信.网易七鱼 ...

  3. 三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)

    三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技) 首先看过各个平台直播SDK后大致知道平台SDK分为有2种: 直播:传统方式,1个主播,

  4. 【视频】云信CTO阙杭宁:IM云开发经验分享

    DevEco技术沙龙·苏州站,于2016年2月27日在苏州Gbox大厅圆满举办,活动由DevEco联合网易云信,亚马逊AWS,DaoCloud,聚合数据主办.本视频为网易云信CTO阙杭宁作为特邀演讲嘉 ...

  5. 第三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)

    前言:由于现在直播很火,新加入的公司打算做直播功能,之前没接触于是先去看了下主流第三方平台的SDK,想看下哪个平台的更好一些.本文没什么技术含量,仅仅是将相关官网的资料整理,做了一点对比,方便看到各平 ...

  6. 网易云信 7 周年丨服务超过 150 万开发者,消息量突破 20000 亿条

    ● 数学家的眼中,7 年能够换算成 2555 天或是 220752000 秒. ● 经济学领域认为,7 年是通常意义上的一个经济周期. ● 生物学家看来,每个 7 年,人体的全身细胞就会完成一次彻底的 ...

  7. 网易云信亮相LiveVideoStackCon2020,分享RTC中AI音频算法产品化经验

    10月31日-11月1日,LiveVideoStackCon2020音视频技术大会在北京隆重举办.本次大会以"多媒体开启新视界"为主题,聚焦在音频.视频.图像等技术的最新探索与应用 ...

  8. 周江华:网易云信IM推送保障及网络优化实践

    周江华,网易资深Android开发工程师,先后主导参与了易信.网易云信.网易七鱼的客户端开发工作,拥有非常丰富的功能开发以及代码优化经验. 2016年9月23日,MDCC 2016中国移动开发者大会在 ...

  9. 猿团专访云信CTO阙杭宁——网易云信“稳定”背后的秘密

    阙杭宁如何带领团队打造云信? 云信稳定背后有着怎样的秘密? 下文选自猿团对云信CTO阙杭宁的专访稿 原文来源中国网,内容排版有删改 "网易出品,必属精品",开发界流传的这句话对于大 ...

最新文章

  1. 【node】express中mysql的基本用法、连接池的使用、事务的回滚
  2. OpenSource的开发模式探讨
  3. 逻辑设计中复位的稳妥处理方法?
  4. Anaconda:Anaconda安装图文教程及其tensorflow安装、运行、测试之最强详细攻略
  5. python主题壁纸_Python教你如何下载你喜欢的桌面壁纸
  6. Marketing Cloud里contact批量删除的http负载
  7. [AGC016B]Colorful Hats
  8. python学习笔记--迭代器
  9. 关于juniper配速小记
  10. 活动选择问题 贪心
  11. VS 2017 透明背景设置
  12. Centos6连接网络配置
  13. 基于JAVA宠物托管系统计算机毕业设计源码+系统+lw文档+部署
  14. 使用ActiveX实现的Web自定义查询-万能查询
  15. PMP学习笔记20161130
  16. 信号完整性分析学习--12--IBIS模型
  17. AI绘画 新多功能controlnet插件,草图上色,动作骨架提取等功能,安装及下载教程
  18. 【大咖连载】服务设计与实现
  19. C51模拟PS2键盘(一)
  20. 卖掉亲生“百度音乐”,注资“网易云音乐”,百度到底要干嘛?

热门文章

  1. C++ explicit 的用法,就是必须显示调用
  2. fir.im Weekly - 做一款 App 需要考虑什么
  3. [转载]学习数据库分表和分库思想
  4. Unobtrusive Ajax
  5. freemarker的测试结果框架_TestNG框架Listener介绍及测试结果的收集
  6. 解决在使用 Qt 编译项目时出现 “C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode格式以防止数据丢失“ 的警告
  7. html表单php比较三个值大小,PHP比较三个数大小实现办法
  8. HTML+CSS+JavaScript复习笔记持更(七)——CSS3常用属性之背景
  9. ie浏览器自带小眼睛是什么用的_茅台酒自带的小杯子有什么用?是用来喝酒的嘛?...
  10. java 保留数字与中文_java 转中文数字