写点什么

SpeedyCloud 研发总监李孟:不要让底层细节被上层打败

  • 2016-01-04
  • 本文字数:2591 字

    阅读完需:约 9 分钟

随着互联网的发展,对于现代企业来说,DNS 与 CDN 服务的作用正变得愈发重要,网络访问速度决定了前端客户体验,同时也影响着内部业务系统的运行。SpeedyCloud 作为一家新晋 IaaS 云服务供应商,在 DNS 与 CDN 方面同样拥有丰富的实践经验。今年 QCon 上海 2015 上,SpeedyCloud 研发总监李孟作为大会演讲嘉宾,分享了 CDN 服务设计开发实践的心得体会。为了进一步了解技术人在这些研发工作背后的故事,InfoQ 专门现场采访了李孟。

InfoQ**:您在 CDN领域的经验已经超过 7年,当时是什么原因进入这个领域的呢?**

李孟:进入这个领域完全是因为巧合。刚入职的前两个月,还没有建立比较明确的目标,而公司也没有相应的软件基础,只能靠自己去摸索。当时的困难在于,自己只有一些运维经验,并没有相应研发经验,而且所使用的开源软件也比较复杂。CDN 与 DNS 业务的研发既要保证稳定性,同时又要保证兼容性,还要完成对整个业务线的不间断支撑。

InfoQ:当时在自行研发的过程当中是如何进行考虑与选择的?

李孟:那时选择了 BIND。DNS 毕竟是个轻量级的服务,其开发量并不是很大。但在当时 BIND 已经发布 8 年时间了,因为在开发过程中不断地打补丁,其可读性已经变得非常糟糕,另外为了照顾 DNS 所有业务的性能,那么代码的可读性就会变得更差。

如何让整个 DNS 系统上下游无缝融合在一起?这个问题上我考虑了很长时间,这需要理清 DNS 在实际应用场景中的使用过程,需要结合 CDN 的应用场景,明确应该怎样运作,所含的路径有哪些等问题。之后还要将互联网协议和真实的运行环境结合在一起,这样在业务最终上线的时候,才能够实现良好的效果。

InfoQ:在这次 QCon上海中您的演讲主题是选型方向的,出于什么考虑而安排这样的演讲主题呢?

李孟:首先是让大家了解 CDN 的技术概念,另外一个原因是想要带领大家思考 CDN 对于云计算平台来说充当了什么样的角色。因为如果 CDN 流量调度不当的话,就会导致设备上的流量抖动异常,这对于承载 CDN 业务的云平台也是非常不利的。

流量调度说起来是个很宽泛的概念,如果能用 DNS 将流量调度表达好,就意味着后续的动态调度和静态调度也将会相对容易一些。因此希望能够借助 QCon 的机会分享 CDN 领域里的一些重要经验。

InfoQ:技术工具有理论性能,但是实际用到生产环境中就是另外一回事了。对此您有什么看法?

李孟:之所以进行定制开发,性能上的差异是一个重要原因。性能上不达标,那么实际的表现就会跟测试时的差距比较大了。

另外,开源 DNS 方案的功能相对比较可靠,但也会有一些差异,比如只能做地域性切割,只能做流量均分,因此某些场合下就没办法直接用开源软件。否则一旦流量出现大幅度抖动,后台承载业务的云主机,就将受到冲击。因为这意味着需要采购更多的云服务资源,或者配置要更多的硬件设备,但这些资源的有效利用率并不高,反而还提升了 IT 成本。

结合 CDN 实际应用环境来看,这说明很多时候用户如果只是按照最直接的方式去实施,就会发现实际数据相比于预期目标来说差距很大。

InfoQ:您认为影响 DNS 调度效果的因素都有哪些?同时又该如何评价 DNS 调度效果呢

李孟:智能 DNS 实际上是 CDN GSLB 的表达,表达的好坏效果会直接影响到后续流量调度的难易程度。除了受到 Local DNS 用户规模差异悬殊的影响以外,DNS 流量调度过程中产生的流量抖动还由另外四个原因所决定着,首先部分终端改变了自身的 Local DNS;其次,Local DNS Cache 影响调度生效和失效;第三,Local DNS 涵盖的用户群大小不一;第四,Local DNS 择优行为影响数据对等。

评价 DNS 流量调度效果的指标主要为两个——精度和准度。较高的精度会让调度系统动态调节更容易,设备带宽利用率也会更高,但是在实际 DNS 中的流量比例配值会出现差异,在复杂情况下很难区分开具体的流量配比。而较高的准度则会降低调度系统预测规划的难度,但调度过程中的流量抖动会更严重。对于某些 DNS 流量调度方式来说,有时精度和准度是不可兼得的,因此要可以使用不同的 DNS 流量调度方式,以产生不同的调度精度与准度。

InfoQ:是否还有其他更多类似的误区?应该怎样去避开这些误区?

李孟:很多误区本身比较隐蔽。比如 CDN 使用者将流量均分给两个 CDN 公司时, 会采用 CNAME 分成两支的做法,然而这种做法并不是 DNS 协议里的标准内容,导致的结果就是底层细节被上层打散,每次请求分配不均衡也无规律,流量飘忽不定。

这表明某些看似很直观、很可靠的方式,到了底层就会影响非常大。企业用户去定制特别的流量调度时,正常来说是要按照固定属性确定调度方式的,但有时候用户希望达成定量调度时,就会让调整渗透下去,把定量行为加入到 DNS 里。做 DNS 定量时,其信息是不对等的,DNS 进行调配时,可能会因为访问不对称,而导致调度也不对称。DNS 在调度表达上有时确实有些不合常规,而带来效果有时也是不可预估的。

从 DNS 调度的判断依据来看,不推荐直接使用 DNS 的统计计数数据作为 DNS 调度依据,因为这些解析数据并不可靠,它们都是经过 Local DNS 不稳定的择优选择后产生的,使用这些数据作为调度依据会让调度效果变得不可预估。比较常见的流量调度依据包括固有属性以及无状态属性,固有属性比如有 Local DNS IP 的地域属性,或者网络属性等,而无状态属性则比如有 Local DNS IP 的 Hash 值特征,或者随机值等。

常见的流量调度表达方式包括地区切分、默认等分、随机比例、以及按照 Local DNS IP 切分流量,其中默认等分的方式在调度准度与精度上均有很好的表现,而其余三种则都有各自不同的侧重点。

在决定采用哪种调度方式前,建议技术人员先去结合数据进行分析,在拿到一线的、真实的、完整的数据之后再做相应的调研,总结出相应的规律,通过数据分析明确什么能做,什么不能做,什么想做,什么不想做,最后决定采用哪种调度方式。

InfoQ**:能否谈一谈您个人以及 SpeedCloud在 CDN与 DNS**方面的未来规划?

李孟:DNS 这方面的业务目前仍然在规划当中,是否以 CDN 为重点,也是有待考虑的。现在只要是做 DNS 功能,就几乎必带 CDN,希望在今后能够形成一个具体产品,为行业发展带来帮助。

关于受访者

李孟现担任 SpeedyCloud 研发总监,目前主要负责资源调度系统的设计与研发工作,为 SpeedyCloud 一站式云服务平台提供技术支撑。李孟曾在蓝汛就职 7 年,专注于 CDN GSLB 及其衍生领域研发与实践,是蓝汛自主研发 CDN DNS 的第一人,在研发与运营分析过程中积累了丰富的行业经验。

2016-01-04 04:461208

评论

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

区块链产业下的“非遗”突围战:商业化和手艺人发掘

CECBC

区块链 非遗

LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

Java架构师迁哥

训练营第七周作业

大脸猫

极客大学架构师训练营

接口测试怎么进行,如何做好接口测试

测试人生路

软件测试 接口测试

「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」

阿里巴巴云原生

容器 运维 云原生 双十一 CloudNative

看区块链如何打通信息壁垒,盘活万亿级”积分”市场

CECBC

区块链 信息

我对业务方提出需求的态度

boshi

随笔杂谈 需求落地

智能与影像的强耦合:华为Mate 40系列的视觉探索

脑极体

架构词典: 复盘

lidaobing

架构 复盘

架构师训练营第二周框架设计课后练习

Geek_xq

程序员的故事

Philips

敏捷开发 快速开发 原创小说 企业开发 企业应用

《迅雷链精品课》第十课:共识算法理论基础

迅雷链

区块链

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作社区官方

话题讨论 热门活动

我在阿里巴巴做 Serverless 云研发平台

阿里巴巴云原生

Serverless 容器 开发者 云原生 CloudNative

价值、产业、数据加密,区块链如何助力互联网升级?

CECBC

区块链 互联网

HTTP协议概述

落日楼台H

https HTTP 协议 HTTP2.0 HTTP3.0

【得物技术】搜索引擎技术简介

得物技术

搜索引擎 技术 算法 排序 搜索

拆解增长黑客之知识篇

懒杨杨

产品 运营 增长

技巧收藏|10个JavaScript常用数组操作方法

华为云开发者联盟

Java 数组 开发

讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer

比伯

Java 编程 架构 面试 计算机

训练营第七周总结

大脸猫

极客大学架构师训练营

年轻人想详细了解做了十年Linux跟做了十年Windows的程序员差距有多大吗?听我慢慢道来!

ShenDu_Linux

Linux 程序员 windows

每周学点TARS——服务自定义命令

TARS基金会

c++ DevOps 后端 TARS

一周信创舆情观察(11.23~11.29)

统小信uos

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

架构师训练营 1 期 -- 第十一周总结

曾彪彪

极客大学架构师训练营

ETV全球熵APP系统开发|ETV全球熵软件开发

系统开发 现成系统

打造Django私有化缓存组件django-api-cache

pygodnet

django django-api-cache django缓存 私有化缓存 接口缓存

mysql的这些坑你踩过吗?快来看看怎么优化mysql?

比伯

Java 编程 架构 面试 计算机

线程池的优点及其原理,代码实现线程池。简单、明了。

Linux服务器开发

后端 网络编程 线程池 Linux服务器 web服务器

SpeedyCloud研发总监李孟:不要让底层细节被上层打败_服务革新_刘羽飞_InfoQ精选文章