新闻动态

完善的7*24小时服务,携手共赢,共同成长

首页 新闻动态云计算文摘 正文

分布式系统与不断加速的技术

2016-01-29 10:04:41   
 
本期文摘有两篇与分布式系统相关的文章,第一篇以大型网络游戏为主题,侧重分布式系统的应用,第二篇则更倾向于学术角度,原作者有深厚的理论基础,又结合自身实践,提出了如何解决分布式系统中最难处理的问题——网络传输失败,原文值得细细品读。互联网技术领域的加速,让广大从业者既高兴又有隐忧,在技术加速背后的原因是什么?奇点大学创始人的文章提供了一个值得思考的观点。接下来,我们介绍了一些关于云迁移领域的技术建议;最后是20家互联网公司的技术博客简介,希望能对大家有所帮助。
 

大型网络游戏和证券交易所的服务器端架构

Sergey Ignatchenko是一位资深的软件架构师,曾参与过多个大型分布式系统的开发,还曾担任 G20使国家的证券交易所系统、大型游戏站点的架构师。最近,他正在网上编写一本关于分布式系统的书,题为《大型多人在线游戏的开发和部署:从社交游戏到多人第一人称视角射击游戏,以及介于中间的证券交易所》。本文选自其中的一个章节“关于服务器端架构、前端服务器与客户端随机负载平衡”。

章节开头指出了前端服务器对于大型网络游戏的重要性,其具体作用是:  

旨在处理所有来自客户端的通讯:所有“那个玩家有没有连接上”这种讨厌的问题,所有客户端到服务器的数据加密(如适用),所有这些密码等等,所有相对奇怪的reliable-UDP协议(如适用),当然还有客户端与不同游戏服务器之间的路径选择信息——这里处理着所有客户端的通讯。
在需要时会存储相关游戏世界的副本,并在游戏世界升级时扮演集中器(concentrator)的角色。

在需要时会存储相关游戏世界的副本,并在游戏世界升级时扮演集中器(concentrator)的角色。
作者指出:  

前端服务器必须能够在不对玩家造成重大不便的情况下就能简单更换。

接下来作者列举了前端服务器的一些好处:
  • 前端服务器从游戏服务器上分担了一些负载,并且很容易替换。
  • 可以使用更廉价的服务器。
  • 允许简单的客户端负载平衡。
  • 允许稍后增加安全性
文章后面讨论了一些客户端负载均衡的内容,并将其与 DNS 负载均衡做出对比,给出的结论是:  

客户端随机平衡(针对前端服务器)运行良好,没必要改用其他的。DNS负载均衡几乎普遍不如客户端均衡,而基于硬件的服务器端均衡器太过复杂与昂贵,一般没必要在游戏环境中使用。如上所注,可能需要服务器端均衡器的例外情况在于使用基于Web的部署架构时。

文中最后的总结是:
根据经验法则,前端服务器是个好东西。尤其是:
  • 减轻了游戏服务器的负载;
    • 让系统设备价格更低(因为前端服务器比较便宜);
    • 也提高了整体系统的可靠性(因为前端服务器很容易更换);
  • 促进了单一客户端的连接(一般来讲是好事);
  • 促进客户端负载均衡;
  • 出现大事件时,接待10万+的观看者变得很简单(事实上没有限制);
  • 缺点仅限于额外延迟,而这种延迟一般都在亚毫秒级别;
  • 一般对于游戏来说,客户端负载均衡是最好的选择:
  • 唯一可能的例外是基于网络的部署架构——可能需要服务器端均衡器;
    需要避免大规模关联。

一般对于游戏来说,客户端负载均衡是最好的选择:

  • 唯一可能的例外是基于网络的部署架构——可能需要服务器端均衡器;
  • 需要避免大规模关联。
金句:  

使用DNS负载均衡时要格外小心。换句话说,客户端随机平衡对于游戏效果更好,因为同时在线的玩家数量会从几百增长到成千上万;运行起来几乎没有问题,始终提供几乎完美的平衡体验。也就是说,如果整体的平衡负载是50%,事实上有些是48%,而有些是52%,但不会超过这个数字。

对于游戏负载均衡来说,服务器端负载均衡设备实际用途不大。即便你使用了基于网络的部署架构,也应当避免使用服务器端负载均衡器。

标签:分布式系统、负载均衡、DNS、前端
 
阅读原文
 

【精彩声音】


1995年,你家里的每件东西都有一个钟,上面闪动着12:00;2025年,你家里的每件东西都有一个 IP 地址,它的密码是 Admin。(来自@mcclure111
 

从头说起:讨论现实世界中的分布式系统

Tyler Treat 是一位从事分布式系统开发的软件工程师,他的这篇文章探讨了关于分布式系统的设计原则和实践。

文中首先列举了一系列该领域的经典论文,指出:  

时间一再证明:网络,无论是本地网络还是广域网络,常常都是不可靠的,而且常常是异步的。因此,这对分布式系统的设计造成真实而重大的挑战。

这些结果的潜在影响不仅限于学术圈,而是激发了众多系统和设计的出现,为网络失常的情况下提供了多种保障。

此外,Tyler 认为:在分布式系统的设计领域,CAP 原则极为重要,而且对于系统设计者和实践者都有重大意义。

接下来,他探讨了一些解决分布式系统网络问题的一些方法,最后推荐了一篇文章:你的咖啡馆可不用两阶段提交(Your Coffee Shop Doesn’t Use Two-Phase Commit)。说明我们可以借助现实世界中的例子,从而设计简单的解决方案。

文中,Tyler 列举了自己常常遇到的一段对话:  

开发人员:我们需要快速消息机制。

我:如果消息偶尔丢失了可以么?

开发人员:什么?当然不行!我们需要它是可靠的。

我:好吧,我们会加入一个提交应答,但如果你的应用在处理消息之间就崩溃了,怎么办?

开发人员:我们会在处理之后发送应答。

我:如果你的应用在处理之后发送应答之前崩溃了怎么办?

开发人员:我们会重试。

我:所以重复发送是没问题的?

开发人员:呃,应该只发送一次。

我:但是你希望它能很快?

开发人员:是的。对了,它还应该保证信息的发送顺序。

我:你可以用 TCP 协议。

金句:  

与其使用多层而且过于抽象的方式来隐藏复杂性,我们更应该直接在设计决策中考虑这些问题,并从头到尾加以思考。想在分布式系统上达到心平气和的境界,要走过漫长而曲折的道路,但是最佳起点,就是从头开始。

标签:分布式系统、网络、CAP 原则
阅读原文
 

【精彩声音】


过去十年,数码科技为欧盟贡献了三分之一的 GDP,我相信这个数字会持续增长。(来自@GOettingerEU
 

为什么技术在加速?因为我们在用已经很强大的工具构建了更好的工具

本文来自奇点大学的Peter Diamandis,他是 X Prize 基金会的创办者和主席,同时是奇点大学的联合创始人和执行主席。X Prize 基金会旨在奖励对于科技创新、人类进步做出非凡贡献的项目,包括可以从地面进入太空的飞机、每加仑汽油里程百公里的超级节能汽车等。

在这篇文章中,Peter 首先提到摩尔定律,然后指出:在其他领域中,比如通信和基因工程,同样发生着类似于摩尔定律的指数级增长,类似增长可以成为“加速回报定律(The Law of Accelerating Returns)”,该定律的命名来自于奇点大学另一联合创始人、名誉校长 Ray Kurzweil。

Ray 指出指数级增长的五个范式:  

第一范式:电动机械计算机

第二范式:继电器式计算机

第三范式:真空管计算机

第四范式:晶体管计算机

第五范式:集成电路(摩尔定律)

在“加速回报定律”的推动下,Ray 提出:

在21世纪,按照今天的发展速度,我们经历的不再是100年的进步,而是20000年。
Peter 给出了推理过程:
  1. 生物或技术层面的进化,结果是更好的下一代产品。该产品更高效,更有能力,可用于下一个阶段的演化过程。整个是一个正反馈循环。
  2. 换句话说,我们在用更快的工具设计、构建更快的工具。
  3. 在生物演化中,更高级的生命形态可以收集能量,更有效地繁殖,因此在演化程度和速度上超过其他生命形态。
  4. 因此,演化过程的进步速度随着时间按指数级别增长,“速度”、“成本有效性”、或者整体的“能量”之类的“回报”也会随着时间完成指数级增长。
  5. 随着特定的演化过程更加高效,更多的资源就会部署到这个过程中,进一步推进这个过程的演进。周而复始。
Peter 最后的结论是:  

随着这些指数级发展不断继续,我们会开启不可估量的生产能力,并开始理解如何解决世界上最具挑战性的问题。从未有哪个时代像现在这样更令人兴奋。

对于他的观点,你同意吗?

标签:技术发展、摩尔定律
阅读原文
 

【精彩声音】


“旧世界里,你用30%时间创造一个优秀的服务,70%时间去大声宣传。新世界里,这个关系反过来了。”——杰夫·贝索斯(来自@RichRogersHDS
 

企业如何实施云迁移?

企业实施云迁移服务,绝大多数是不可抗拒的原因。如B2W发生严重的生产事件后,他们决定朝微服务方向重构环境。本文寻访了各种类型的技术公司,其类型涵盖规模大小不一的云服务提供商、电商公司及SaaS公司,大家就云迁移这个话题进行交流后,达成了以下共识:

向云迁移的关键约束在于成本

降低运行成本是云迁移的核心驱动力。对于小型的初创公司,Iaas的弹性模型使他们对所需的基础设施进行及时的投资,对于大型的成熟公司,走向云迁移的关键事件是对重建数据中心的再投资。

APM工具的相关工作在CIO议程上

通过云服务的弹性和灵活性,公司能够更直接和快速地进行成本优化。全球各地的CIO们盯着APM工具,根据监控数据计算成本收益将成未来趋势。

敏捷压倒成本收益

云服务通过支持新功能的敏捷开发模式,从而帮助产品获得更短的上市时间

云迁移影响了文化

一旦开始运行至云上,就已经转向DevOps了。基础设施都在代码里。

遴选云服务提供商是一大挑战

云服务提供商的选择依赖于你对基础设施的需求以及云服务提供商自身的灵活度。同时当评估价格点时,就不仅只需考虑基础设施状况,还需要考虑和可靠可信任的云服务提供商建立合作关系。

成功的迁移建立在严谨计划的基础上

管理层的赞助支持和端到端的规划对成功交付非常关键。制定一个执行计划,争取成功完成,但不要追求完美;制定回滚策略,如果事情搞砸了,就会想要重回安全节点。

云迁移不代表迁移到公有云上

云迁移不意味着迁移到公有云上去,事实上往公有云迁移只是其中的一个选项。

做出正确的行动

多数决定先从迁移新应用到云端开始。一旦积累到一些经验了,然后开始迁移已有的前置应用到云端。要么一次性把所有的都迁移过去,要么一开始只迁移某些应用服务到云端。

基础设施即服务是迁移最常见的原因

基础设施即服务是云迁移的最重要的原因

理解依赖关系是最大的挑战,紧随其后的是规模估算

云迁移最大的挑战是理解现有基础设施内的依赖关系,而节约成本的关键在于选用正确的实例选型。

云监控也不尽相同

所有这些全新的云服务成为应用的一部分的同时,也意味着需要使用工具进行原生监控和管理应用。首先你需要确保云迁移确有成效,等所有运行正常后,才在扩容和缩容两个方向进行容量规划。

标签:云计算、迁移、基础设施
 
阅读原文
 

【精彩声音】


要想让 unikernel 更吸引人,需要两个条件。要开发一种新的 Hypervisor,它可以像围绕着隔离原语(isolated primitives)构建起来的 OS 一样有扩展性,同时还得有些额外功能(比如超出 OS 能力的资源管理微调)。其次,还得有个用户友好的机制,比如 Docker 这样的。(来自hacknat
 

技术人必关注的20个优质企业技术博客

 
如何获取一手信息?如何掌握行业动态?本篇为大家介绍infoQ编辑们推荐的20个优质企业技术博客,希望能对您有所帮助。点击标题可以访问博客地址。

1.Twitter
Twitter是一家美国社交网络及微博客服务的网站,是全球互联网上访问量最大的十个网站之一。Twitter官方技术博客,第一时间发布一手的有关Twitter的技术、工具及活动信息。向业内外人士展示Twitter背后的工具、产品,包括大家强烈关注的Twitter发布的开源产品信息介绍。

2.LinkedIn
LinkedIn作为全球最大的职业社交网站,会员人数在世界范围内已超过3亿。旗下科技博客,内容丰富。从各个方面详细地介绍了LinkedIn技术人员如何使用高度结构化的数据来完成LinkedIn的搜索功能、社交图谱以及机器学习系统。

3.Facebook
Facebook是美国的一个社交网络服务网站,是世界排名领先的照片分享站点。 这是一个全面展示Facebook所使用的技术、最新产品动态和线下活动的网站。是对于Facebook所有运营平台,囊括安卓、iOS、网页端以及后台管理的所有运用的开源产品的罗列。

4.谷歌开源
谷歌,是一家美国的跨国科技企业,致力于互联网搜索、云计算、广告技术等领域,开发并提供大量基于互联网的产品与服务。科技博客发布了Google所有的开源产品项目的新闻消息,并会及时更新开源软件的开发信息。

5.NGINX
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。中国大陆使用NGINX网站用户有:百度、新浪、网易、腾讯等。在NGINX的技术博客,您可以看到NGINX的新闻、技术信息和科技交流活动安排。

6.O’Reilly
洞悉、分析和研究新兴技术是其宗旨。该博客有请O’Reilly公司的专栏编辑,撰写各个领域的技术类文章。迎合技术开发者的需求,追踪最前沿技术,每篇文章定位读者精确,您可以选择自己最感兴趣的方面进行阅读。

7.OpenDNS
长期以来,OpenDNS致力于为广大个人用户以及商务企业用户和公共领域提供免费的域名解析服务。OpenDNSEngineering博客上,您可以找到该公司设计的这个全球最大安全网络的相关技术资料。博客上提供了独家的技术见解,谈论了该公司文化,并发布技术活动信息,同时您还可以与OpenDNS开发团队的工程师探讨如何消除恶意软件、网络钓鱼等等的技术。

8.Netflix
Netflix是一家在线影片租赁提供商。公司能够提供Netflix超大数量的DVD,而且能够让顾客快速方便的挑选影片,同时免费递送。Netflix的技术博客,专注于解决技术问题,技术专家分享他们创造NetflixService的时候所遇到的挑战、所作出的决定以及所持有的观点。

9.GitHub
Github作为开源代码库及版本控制系统,目前拥有140多万开发者用户。GitHub根据一线技术工程师开发GitHub环节中遇到的具体问题所撰写的最新技术博客。由于作者都是非常有经验的工程师,您可以深入了解GitHub后台结构,对您的相关开发一定有很大帮助。

10.Parse
Parse是由 YC 孵化出来的、专为移动应用提供后台服务的云计算平台,为开发者包办繁琐的后台服务,让开发者只需专注于具体的开发工作。在这个博客中,你可以零距离学习Parse最新技术,深入探究Parse的技术活动,甚至可以向Parse的技术开发者提问任何你感兴趣的问题。还提供视频选段,全方位直击最新技术热点。

11.BuzzFeed
BuzzFeed是一个美国的新闻聚合网站,致力于从数百个新闻博客那里获取订阅源,通过搜索、发送信息链接。BuzzFeed的技术博客,主要发布BuzzFeed的产品技术更新,当然也有对于技术核心内容的深入剖析。

12.Spotify
Spotify是全球最大的正版流媒体音乐服务平台。截止到2015年1月,Spotify已经拥有超过6000万的用户,其中1500万为付费用户。具有如此大的用户基数,其后台技术自然不容小视。Spotify的官方技术博客,您可以学习Spotify的技术人员如何处理遇到的问题。

13.Yelp
Yelp是美国最大的点评网站,其极快的增长速度、极大的扩张趋势都离不开背后强大的技术支持。Yelp的技术博客,邀请到开发团队的工程师,来分享Yelp所运用到的各项先进算法技术。您可以看到Yelp技术人员如何解决技术问题,Yelp团队发布的开源产品等等。

14.Instagram
Instagram是一款最初运行在iOS平台上的移动应用,以一种快速、美妙和有趣的方式将你随时抓拍下的图片分享彼此。Instagram旗下的科技博客,不仅分享了Instagram技术人员的开发见解,还分享了Instagram技术人员非常值得借鉴的开发经验。

15.Pingterest
Pinterest堪称图片版的Twitter,用户可以将感兴趣的图片在Pinterest保存,其他用户可以关注,也可以转发图片。每天数以百万计人次在使用Pinterest,即使是小问题也会变成巨大的挑战。技术博客详细地介绍了开发环节中问题的解决方案。

16.Dropbox
Dropbox是最实用且免费的云存储软件。每天全世界有亿万用户正在使用Dropbox,它提供在电脑、手机、平板,甚服务器上同步、备份或共享文件资料。Dropbox的科技博客时常发布一些Dropbox的新产品和新功能详细介绍。

17.CloudFlare
CloudFlare是一家美国的跨国科技企业,总部位于旧金山,在英国伦敦亦设有办事处。CloudFlare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务。CloudFlare的技术博客,分享CloudFlare技术专家的想法和心得。网站更新非常频繁,您可以了解CloudFlare背后的先进技术。

18.Airbnb
Airbnb是一款全球化的社区服务型网站,主要为游客寻找提供优质的民宿环境。其旗下技术博客由几个部分组成:代码(分析前沿Airbnb开发环节中遇到的问题和挑战)、科技讲座(邀请Airbnb资深工程师讲解技术问题)、开源(分享Airbnb各个细节所用到的开源产品)、新闻(Airbnb实时技术更新)以及数据(解析Airbnb数据归档)。

19.Uber
Uber(优步)是一款全球即时用车软件,已覆盖全球55个国家,300多个城市。Uber旨在为大家带来更安全舒适的出行方式,让城市更方便快捷。Uber的技术博客,及时更新介绍Uber背后的精良算法和产品设计,提供对其核心算法和服务技术的剖析,分享了Uber技术发布和其开源项目。

20.AWS
AWS即Amazon WebServices,是亚马逊(Amazon)公司的云计算IaaS和PaaS平台服务。AWS的技术博客涵盖的内容非常丰富,有AWS服务支持,在国内外知名公司的用例分享,成熟的服务与应用平台架构分析,旗下技术产品更新发布,AWS优秀开发者介绍等等内容,相信您的问题可以得到解答。

标签:技术博客、Twitter、Facebook、Uber、AWS、Google
阅读原文
 
点击回顾
 
关注SpeedyCloud官方微博
掌握最新动态和优惠
扫描SpeedyCloud官方微信
获取价值50元免费云主机
欢迎发送邮件到social@speedycloud.cn,聊聊你对于“SpeedyCloud云计算技术文摘”的想法和建议,也欢迎你说出对于SpeedyCloud迅达云成公司的意见和看法。

*|FORWARD|*