NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

连接 12 万 + 开发者,揭秘网易场景化云服务背后的技术

  • 2016-11-20
  • 本文字数:5458 字

    阅读完需:约 18 分钟

自 2015 年起,网易悄然上线了多款云服务产品,包括网易云信(即时通讯云)、网易七鱼(全智能云客服)、网易视频云、网易蜂巢(容器云)等,多个角度切入,进军云服务市场。网易云信即网易迈入云服务市场的第一步。

每个企业在业务布局上都有自己的考量,现在互联网基础设施服务的技术同质化严重,而场景化云计算服务还是一个蓝海市场。所谓的场景化,就是基于基础云服务,给企业提供不同场景的解决方案。网易推出的云服务的产品就是希望提供模块,减少程序员做重复的工作,比如云信,通过拖拽模块就可以完成,会省事很多。

借此契机,InfoQ 对网易云信总经理阮良进行了专访,阮良畅谈了自己从工程师做到总经理的一路体会,并分享了网易 IM 背后的技术细节,以及网易云信的人工智能技术。

专家介绍

阮良,现任网易旗下网易云信 & 网易七鱼 & 网易视频云总经理。全面负责网易云三大核心业务:即时通讯云、智能客服云、视频云的技术研发、销售、市场及运营。

毕业于浙江大学计算机科学与技术专业,于 2006 年加入网易至今,在其 10 年的网易工作生涯中,曾从事工程师、开发经理、产品经理等众多重要职务。

理解是同理心的开始

从做一件事开始,做一件事情不只是为了能做成,而是做了这件事情后,对别人和世界有更大的理解。

我最早加入网易的时候是工程师,后来做产品经理,现在是业务的总经理或者负责人。最大的感悟就是一定要具备同理心。我们必须得具有同理心,去帮助客户或者帮用户去考虑问题。只有解决了客户或者用户的问题,产品才能立足,这点非常重要。

在做工程师的时候,不是完成某个技术工作或者技术的攻坚就可以了,同样要以同理心去替客户思考,才能够更好地实现产品,去设计出更好的接口、API,去编写更好的文档。让客户能够更好地用上云计算的产品。

对于产品经理来说更是如此,必须有极好的产品嗅觉,产品意识和同理心才能够设计出真正受到用户喜爱的产品。作为业务负责人,同理心才能让我看清整个商业市场的走向,带领团队去挖掘客户真正的需求,让业务走上正确有序的道路。

现在负责网易云三大核心业务:即时通讯云、智能客服云、视频云的技术研发、销售、市场及运营。但是整体来说,我可以把它看成两块大的领域,一块是云信和视频云,与通信和 PaaS 相关;另外一块是七鱼,与客服和 SaaS 相关。很重要一点,我们组建了非常优秀的团队共同来做这三块业务,而不是说一味地去靠切割自己的时间和精力来去完成这些工作。

为开发者群体服务

云信作为一款 PaaS 产品不像 SaaS 产品那样明显可用。它没有所谓的界面、操作流程,我们提供的这个产品是希望帮助社交产品、教育、医疗,电商等领域的客户去解决通讯上的问题。

我们认为打造一个产品,首先遇到的就是研发的困难,因为你有再好的 idea,再好的想法,首先要把它落地,成为一个真正可用的一个产品。那就需要产品、研发、测试团队去把它产品化,在这个过程中其实会碰到很多研发的问题,比如可能没有经验,或者可能没有时间,或者说没有很好的技术去完成所需要的功能,那我们网易云信就是针对通讯这个领域去给我们开发者提供更好的产品服务。

让开发者开发者在时间紧迫,质量要求又高的前提下,很好地完成工作和业务。所以说我们网易云信主要针对的是开发者这个群体。

移动时代即时通讯平台

尽管即时通讯早就出现,但此一时彼一时,PC 时代与移动时代的即时通讯有着不同的特点。在网络连接、用户在线状态、流量计费、设备性能、运行环境方面,即时通讯在两个时代都存在差异。

面对移动互联网时代的诸多特点,我们在做一个即时通讯云平台时,要翻越三座大山:第一是连接管理;第二是业务协议满足低流量、低运算环境的特点;第三是能承受高并发。在这个过程中,研发团队会面对四个问题:技术难度大,整体开发和调优周期长,业务细节繁复,以及上线后维护复杂度高。

技术角度来讲,作为有 16 年研发经验的云平台,网易云信已经处于成熟期 。这个阶段的云平台容量大、日常业务量大、增速平缓,所以大客户新接入时对整体容量的冲击并不明显。在这个阶段一个即时通讯云平台需要坚守的决定成败的生命线有两个。首先是数据实时性,比如对全网的网络调度,对弱网环境的数据实时性的优化。其次是一些异常调用,比如自循环,特别是一些调用技术较大,终端用户技术较大的应用。如果出现这样的情况,云平台就需要对接入者做好沟通,并对资源竞争做好应对。

如何保证即时通讯实时性

首先,对于一个即时通讯云平台来讲稳定性是基础,而实时性则是衡量即时通讯云平台的一个关键指标。

从全网角度看,即时通讯云面对的问题是客户端网络无法由单一的网络入口来满足,包括 BGP 机房同样无法满足全国或全球区域的覆盖。这是即时通讯云现在面对的主要问题之一。既然单一的入口无法满足复杂庞大的全网的网络要求,那就需要利用更多的入口来覆盖更广的网络。云信的策略是通过选取代理或加速节点这样的服务端网络来替代部分特殊客户网络。

我们可以通过一张拓扑图来理解云信的服务网络入口的网络结构(如下图)。我们将图中的服务入口看作 BGP 入口,绿色为正常覆盖的区域,黄色是不稳定的节点,红色则是偏远节点或链路。图左侧可能是一些云服务的普遍思路,右侧则是云信目前的策略。针对不稳定的节点,云信会先基于地理位置就近选择网络质量较好的机房,并做服务连接测试和区域网络测试,取其最优节点,然后征收一个代理,把这区域的用户入口分发到代理上。对于红色的节点,云信会下发一组入口,由客户端选择是直连还是做代理,或者是通过 LBS 选择更好的节点。

在整个过程中,入口会有动态调整。云信会通过上次连接的入口缓存为客户端进行重连,并维持 ISP 不变。同时,云信还利用类似懒加载的方式,对那些在短期内重复连接和中断计数达到一定量的客户端发起 LBS 请求。不过在大多数情况下,由于手机运营商、家庭 Wi-Fi 都可以维持稳定连接,只有在服务节点出现增加、服务负载出现变动的时候,才会通过这套方法来保障实时性。

再从弱网角度看,连接的中断、续连、切换比较频繁,如何快速地重建连接,如何将信息尽快追加上去,这也是即时通讯云现在面对的主要问题之一。针对这个问题,云信优化了连接探活和重连效率。与此同时,云信还会精简数据包,以减少数据包在弱网下重传的量,提高对弱网的支持。

“延迟 0 容忍”的实时互动音视频

IM、实时音视频与聊天室是即时通讯云的三个主要业务,三者对实时性最敏感。

在实时音视频的场景下,用户普遍认为对话双方距离近,应该延迟更低。但事实是,两者距离圆的,网络传输距离一定比较远,传输速度相对慢。但两者物理距离近,网络距离却不一定近,同一个屋檐下的对话有可能是从数据中心绕了一圈才传到另一人的面前。

从网易云信的经验来讲,在做实时互动业务架构时就定下了一个目标,尽量让实际的调度走直线,缩短整个传输距离,并提供多通路,可以根据客户端之间的网络测探情况来择优分配。

在调度调优方面,云信以用户 IP、用户 ISP、全国 ISP 和位置到各地机房的数据作为调度引子,利用分配算法“rate=distance*prioity*rand/isp”进行动态调整。也就是距离和集群优先级以及一个随机因子,反比的因子就是 ISP,以 ISP 为主要维度,同时去参考双方之间的距离来选择具体实际物理机房的位置,再根据其业务优先级和随机因子算出一组结果,取头几名汇报给客户端,由客户端进行网络探测,再择优录取。

不过实时音视频面对的并不只是距离带来的问题,还有网络条件带来的差异。在 Wi-Fi 下,我们可以根据网络承载情况来传输码率较高、质量较高的数据。但是在 4G、3G,甚至 2G 网络下,码率就需要降低。为了保障实时性,云服务需要对不同机型、网络来做不同的参数预案,比如抗抖动算法和动态码率。云信自研了一套抗抖算法,融合了 pjsip 和 webrtc 的 neteq 算法,并投入了大量的测试做参数校准,目前可以做到 800 毫秒左右的抗抖效果。除了抗抖算法,云信为了提高对弱网环境的支持,将数据包进行了精简,以减少数据包重复传输的量。

如何支撑无上限聊天室海量实时信息

目前很多云服务平台都开始支持实时直播聊天室,甚至也有以此为起点的创业公司。网易云信不仅支持此业务场景,还可以支撑无人数上限聊天室。

聊天室的特点在于,一万人的聊天室,它的消息量绝对会放大数倍,而且里面除了有效信息,还会包含点赞、礼物,甚至是大量无效的消息。在架构上主要要解决的是组播性能。云信的经验是,在架构上采用分布式并行架构,可以横向无损扩展。在性能方面,云平台要减少消息放大中间环节的数据量。聊天室业务多层架构如下图,分为客户端层、网关接入层、路由层、业务层。

在客户端层,SDK 可以做多平台适配、移动弱网优化,在重连效率方面,也可以保存一些相关连接授权信息来提高重连速度。云信还可以在出传输层上做安全加密、压缩和拆解包、数据包分包等。在网关接入层,它的重点是做长连接的管理、优化,以及广播分包,让升级和跨网络切换更加平滑。在路由层,云信支持服务化的后端,负责接收网关层发来的请求。路由层可以根据热更新策略划分集群入口,还能实现横向扩展。到了业务层,微服务架构提供了高可用、弹性伸缩的整体扩容、横向扩展。

保持云平台稳定性的应对之策

除了实时性,稳定性是即时通讯云平台的另一个需要坚守的“生命线”。

云信平台上有很多 App,有些 App 的一夜爆红或大型在线活动,都可能带来容量上的剧烈抖动。用户的异常调用通常会给云平台带来资源侵略,同平台上的其它应用会收到影响。这时候考验的是云平台的扩容策略与架构的灵活性。那么应该以什么策略来减少异常调用给其它应用带来的干扰呢?

云信有两个应对措施:快速扩容与单元化服务。

第一个措施,快速扩容有两个关键,第一是扩容的时机,第二是环境准备与服务部署。在触发扩容之前,需要观察子服务的集群容量和水位,水位上升和容积紧张可能只是一时的抖动,但如果这时出现任务积压,那么生产速度远大于消费速度,这就是需要扩容的时候。第二方面之所以说是环境准备和服务部署,为的是提高扩容的速度。由于云信是搭建在网易蜂巢 Docker 之上,云信团队在运行环境的构建上面,通过蜂巢的 API 可以很快实现创建。

第二个措施,单元化服务。网易云信的单元化服务也叫单元化服务域,它本身就是基于微服务架构的。以消息服务为例,可以将它拆分为 A 域的消息服务和 B 域的消息服务,在一个域中不是只有 IM 一个功能,它是通过一些排列组合,包括一些规格容量的定义,让它变得有实际业务意义。开发者会在各自的服务域里面享受到底层数据层,且互相隔离。服务域可以在发生抖动的时候将异常应用切入独立的域,从而保证它不会给其它应用带来影响。

网易人工智能技术

我举几个典型的场景。首先,网易云音乐是一个非常被用户热爱的产品,也是目前整个网易口碑最好的一个产品,网易云音乐它在推出的时候,其实当时的市场已经被像 QQ 音乐、酷狗、酷我音乐产据已经占据了大片江山,看上去已经是一个红海的市场,我们网易音乐凭什么能够切入这个市场,并且取得现在如此好的成绩呢?

人工智能在里面起到非常重要的一个作用。大家如果用云音乐的时候,大家会在一个评论里面经常看到类似这样的评论,就是一个用户在很多年前听到一首歌,他当时并不知道这是什么歌,但是他用了云音乐之后,在某个特定时刻,云音乐会把这首歌推荐给他,这会给用户一个非常大的惊喜,我们的人工智能在后面就做了一个非常重要的作用,我们会把海量的用户进行精准的画像,我们也会把海量的曲库进行画像和分类,我们会把合适的歌在合适的时间和合适的场景推送给我们的用户,给用户造成一个非常惊艳的感觉,这就是我们人工智能在云音乐这个非常奇妙的体验上产生的一个重要的作用。

另外一个案例,是我们的网易人工智能客服。在客服这个领域,我们有很多的产品,也有客户服务。在这十多年的经验积累中,会发现一个非常重要的问题或者说非常麻烦的问题:在客户和客服的交流过程中,其中 47% 都是无效信息,因为可能客服一上来就会习惯性地问“你好,在吗”,这类对客服来说就是非常无效的信息,但是客服人员又不得不花时间去回复。剩下的 53% 的有效信息中,其中有 80% 是简单重复问题,比如“我的定单到哪里了,我的退款怎么样,我的处理流程怎么样”,处理这类简单重复的问题对于客服人员来说其实也是一个非常枯燥的工作。

如果做一个非常好的应答机器人就能够大量地解放人工客服的生产力,从而使得他们有更多的时间和更多的精力去为消费者提供更好的服务。另外,像易盾也采用人工智能的技术,来提升产品在安全领域的实力。

简单来说,互联网垃圾信息一共分为这么几类,比如说垃圾广告、色情、暴恐这三类。有一句话叫道高一尺魔高一丈,我们互联网的垃圾最近也是在不停的演化,仅从文本来说,一些垃圾广告,它会从原来非常容易判别的关键字会演变成人肉眼可叛变,但是机器很难识别的字,比如说一个做小姐广告,他会把小姐的姐字猜成女和且,人肉眼看上去还是一个姐,但是真正从关键字匹配上就很难匹配到这是一个垃圾广告。

同样,从图片来说,以前仅是从一些其他的粗浅的办法去判断这是否是一张黄色图片,但是这样误伤率会非常高,对用户体验来说也非常不好。通过人工智能的方式,我们能够大大提高对黄色图片的一个识别率,我们不仅会对肤色,我们还会通过模式识别,通过图像识别来鉴定它是否是真正的一张黄色图片,而不是一张正常的暴露肌肤的照片。

所以,易盾采用了人工智能的技术之后,反垃圾识别率大大提升,现在可以不夸张地说我们可以达到了业界最高的水准。云计算上会把人工智能体现的更好。同样,也会在类似于机器翻译、语音识别、模式识别上面去进行技术攻坚。

2016-11-20 18:002208

评论

发布
暂无评论
发现更多内容

CODING 携手 Thoughtworks 助力老百姓大药房打造“自治、自决、自动”的敏捷文化

CODING DevOps

敏捷 thoughtworks CODING 项目协同 老百姓大药房

【量化投资入门】带你通过恒有数数据接口来实战量化指标

恒生LIGHT云社区

量化策略 量化投资 量化交易 量化

如何帮助金融客户“用好云”?

金融 混合云 数智化

MongoDB find getmore操作慢问题排查

MongoDB中文社区

mongodb

sql审核-避免离线sql导致的db集群故障

名白

sql db sql检测 SQL审核 SQL审批

反直觉投资--《香帅中国财富报告》摘录(4/100)

hackstoic

投资

Web or Native 谁才是元宇宙的未来(上)?

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

Go 分布式令牌桶限流 + 兜底策略

万俊峰Kevin

Go 微服务 限流 Go 语言 令牌桶

multi-key索引和wildCard索引场景比较

MongoDB中文社区

mongodb

netty系列之:让TCP连接快一点,再快一点

程序那些事

Java Netty 程序那些事 1月月更

阿里云视频云vPaaS低代码音视频工厂:极速智造,万象空间

阿里云视频云

音视频 低代码 视频云 视频开发

白话大数据 | 元宇宙来了,但是你了解元数据吗?

星环科技

元数据

激发数字化时代权益运营新动能

鲸品堂

运营 数字化 通信运营商

x86架构应用如何向Arm架构低成本迁移

北京好雨科技有限公司

Hoo虎符研究院 | 币海寻珠——波卡平行链Moonbeam生态一览

区块链前沿News

虎符交易所 波卡

聊聊Netty那些事儿之从内核角度看IO模型

bin的技术小屋

Netty nio Linux Kenel Linux网络编程 #java

Form 表单在数栈的应用(上): 校验篇

袋鼠云数栈

大数据 前端

如何保证redis与数据库一致性

zdd

redis

便捷、高效、智能—从运维视角看星环科技大数据基础平台TDH

星环科技

大数据

Avaya大中华区CTO李农:阿里云计算巢加快Avaya应用云部署

阿里云弹性计算

弹性计算 年度峰会 计算巢

热门链游GameFi项目Radio Caca 联手Hoo虎符撒空投

区块链前沿News

Hoo 虎符交易所 链游 RACA

AI+CFD:面向空天动力的科学机器学习新方法与新范式

百度开发者中心

飞桨

12 Prometheus之监控Kubernetes

穿过生命散发芬芳

Prometheus 1月月更

Golang:定时器的终止与重置

CRMEB

TDengine在中节能风力发电运维系统中的落地实践

TDengine

数据库 大数据 tdengine 物联网

【量化】量化交易入门系列5:量化交易学习书籍推荐(一)

恒生LIGHT云社区

金融科技 量化策略 量化投资 量化交易 量化

一篇域名从购买到备案到解析的详细教程

冴羽

前端 vuepress 域名解析 域名 域名备案

基于javaweb,springboot银行管理系统

叫练

银行 毕业设计 计算机毕业设计

Sql server之sql注入篇

喀拉峻

网络安全 信息安全 SQL注入

Sophon联邦学习,让数据发挥真正的价值

星环科技

联邦学习

文末有惊喜| 青藤ATT&CK论文入选国家级期刊

青藤云安全

连接12万+开发者,揭秘网易场景化云服务背后的技术_语言 & 开发_陈兴璐_InfoQ精选文章