完善的7*24小时服务,携手共赢,共同成长
笔者喜欢写代码。构建简单的、可以高效快速工作的系统,让我们开心。看到这些系统可以清晰、和谐地互动,让我们高兴。我们这么做,是因为我们喜欢这种感觉。如果我们不用上班,大概也会喜欢做这些事情。而且我们知道:我们并不孤独。 构建软件系统能够带来很多生存意义层面的快乐。一切顺利的时候,编程必然可以让人达到“心流(Flow)”状态:这种状态超越普通的感官愉悦。我们希望达成这种状态,而且一直保持这种状态,我们希望你加入我们,和我们一起进入这种状态。我们希望这些原则对你有所帮助。
英雄联盟 LOL 是目前最火爆的网络游戏,对于这样一种考验“微操”和快速思考能力的即时式擂台游戏,网络延迟一、两秒,直接决定角色的生死,从而影响游戏玩家的留存率,乃至直接决定游戏公司的收入涨跌。所以,如何保证游戏网络连接的速度和稳定性,就成了开发商 Riot Games 的第一要务。 Peyton Maynard-Koran是 Riot 的网络工程师,他们团队的目标,是要从网络传输中几毫秒几毫秒地抠时间,保证玩家尽可能使用最快的网络连接。Peyton 写了这一系列三篇的文章,讨论在线游戏使用普通互联网面临的问题,Riot 如何解决这些问题,以及实时应用的未来。 Peyton首先分析了互联网的大致网络情况,并指出:
对于像 LOL 这样的实时应用,互联网这种环路式的路由方式,导致用户体验差异悬殊,特别是不同的 ISP 和不同的骨干网提供者会提供不同路由。所以,有可能一个玩家与队友的在线游戏体验延迟极低,而旁边的邻居可能由于使用不同 ISP,遇到极其严重的拖延。
由 BGP 方式产生的环路式路由,会让很多路由器参与到一次数据传输中。简单的传输可能只包括两端的路由,而 BGP 可能加入4个跳转,导致一个数据包走过6个路由器,从而导致传输的数据整体负载增加三倍。
所有这些加在一起,导致现在的互联网对于 LOL 这样的毫秒级游戏来说很不理想,不管是延迟还是数据包丢失,都是令人沮丧的体验。实时游戏传输需要新方法,要可以去除效率低下的光纤路由线路、BGP 和路由配置。
我们搭建自己的互联网。……当你在玩 LOL 的时候,游戏数据从 Riot 的服务器直接传输到骨干网公司,然后再到你的电脑上。……这个过程用了我们一年时间。将我们的服务器与 ISP 直接连接,需要我们购买自己的路由器,并在美国最大的十个互联网中心租借空间,放置路由器,然后还要租借光纤连接这些路由器,最后再跟所有的 ISP 对接。
在某些方面,互联网已经开始达到自己的极限。由于互联网本身的设计原因,需要接近实时响应速度的应用用户体验受到很大影响。
运行单数据中心系统出现困难怎么办? 如何对多个处于不同地理位置的数据中心提供支持? 从单数据中心切换到多数据中心,故障转移系统存在哪些问题? 为什么多宿主系统优于故障转移系统? 多宿主系统的工作原理是什么? ……
F1 / Spanner:关系数据库 Photon:对多个连续数据流进行join的部署 Mesa:数据仓储
在多宿主系统中,多个数据中心会持续运作,并根据情况自发平衡不同数据中心的负载,同时还能以完全透明化的方式解决任意规模的数据中心停机。 部署在3个数据中心之上的多宿主系统,总同步性能为稳定状态的20%,总资源占用为170%,远远小于故障转移系统所需的300%。 多宿主系统的简单性对用户是极有价值的,没有多宿主系统的话,无论故障转移、系统恢复还是一致性问题,都是应用需要解决的问题。而借助多宿主系统,基础设施会处理这些麻烦的问题,应用开发者只要专注于自身应用即可,可用性和一致性有系统来保障。 出现数据中心级别的故障时,多宿主系统是唯一能够提供高可用性和完整一致性的系统。
在多宿主系统中,多个数据中心会持续运作,并根据情况自发平衡不同数据中心的负载,同时还能以完全透明化的方式解决任意规模的数据中心停机。
部署在3个数据中心之上的多宿主系统,总同步性能为稳定状态的20%,总资源占用为170%,远远小于故障转移系统所需的300%。
多宿主系统的简单性对用户是极有价值的,没有多宿主系统的话,无论故障转移、系统恢复还是一致性问题,都是应用需要解决的问题。而借助多宿主系统,基础设施会处理这些麻烦的问题,应用开发者只要专注于自身应用即可,可用性和一致性有系统来保障。
出现数据中心级别的故障时,多宿主系统是唯一能够提供高可用性和完整一致性的系统。
所有业务线选择独立运营,他们自主决定何时发布上线,自主选择合适的SLA及资源适应流量的变化
对所有业务线共同分享的组件,独立于业务之外,分开部署和运营,并且它们能根据流量变化调整不同的资源适应。
第一阶段:识别 识别是要清楚迁移什么,确定系统迁移的职责
第二阶段:提取 识别出系统职责及确定要迁移的职责后,是提取该职责为独立云服务的阶段。
阶段之间的转换是否高效、顺畅、无障碍,对整个系统向云端迁移都起着至关重要的作用。
笔者喜欢写代码。构建简单的、可以高效快速工作的系统,让我们开心。看到这些系统可以清晰、和谐地互动,让我们高兴。我们这么做,是因为我们喜欢这种感觉。如果我们不用上班,大概也会喜欢做这些事情。而且我们知道:我们并不孤独。
构建软件系统能够带来很多生存意义层面的快乐。一切顺利的时候,编程必然可以让人达到“心流(Flow)”状态:这种状态超越普通的感官愉悦。我们希望达成这种状态,而且一直保持这种状态,我们希望你加入我们,和我们一起进入这种状态。我们希望这些原则对你有所帮助。