云时代分布式系统演进

作者:潘罡 (Van Pan) @ Microsoft

在上一节中,我们大致了解了分布式系统的整体架构。简而言之,因为单台机器性能总是有限(摩尔定律增长性能速率无法满足实际应用场景的增速),系统架构师通过各种方式将来自用户的请求分散至多个服务系统和服务器协同完成。

而在现今最火热的云时代,微软已经从云服务层面整体解决了所有分布式系统需要考虑和实现的难题。

下面我们将粗粒度介绍微软云Azure中所有和上一节各个环节相关的服务组件。我们会大致介绍其功能,并且在后续章节中详细介绍其使用方法。

动态DNS —— Azure Traffic Manager (ATM)

https://azure.microsoft.com/en-us/services/traffic-manager/

在上一节中,我们了解用户首先通过域名来获得服务器的IP入口。

同时我们也已经知道动态域名可以从地域靠近,线路优化,负载均衡IP等多种方式来解决其他服务无法达到的网络物理环境优化。

Azure Traffic Manager就是这样一个动态DNS解决方案。

最终用户请求业务域名 –> 域名CNAME映射至ATM域名 –> ATM根据配置从多个endpoint域名中返回一个作为其CNAME

我们可以通过如下方式来配置和指定Azure Traffic Manager的工作行为。

  • 创建一个Azure Traffic Manager,从而得到一个ATM域名,类似 xxx.trafficmanager.windows.net。
  • 将ATM域名作为自己域名(例如:www.contoso.com)的CNAME进行绑定,从而实现对最终用户屏蔽ATM域名的效果。
  • 在ATM中配置多个endpoint站点域名,作为动态DNS目标结果。
  • 配置ATM工作模式:Priority (failover 模式), Performance, Weighted
    • Priority:ATM探针会定时探测所有endpoint站点是否可用,如果站点失效,自动将域名切换至下一个endpoint。
    • Performance:ATM全球探针会定时探测所有endpoint到全球各个主要网络节点的响应速度。并且定时记录并刷新该速度列表。当最终用户进行DNS解析请求时,该列表会作为参考标准返回对应最终用户性能最快的一个endpoint域名。
    • Weighted:在配置endpoint时进行权重配置,ATM会根据权重在解析时按不同权重比例返回结果。例如70%的时间返回endpoint A域名,另外其余时间返回endpoint B域名。

通过以上配置,Azure帮助架构师从域名层面进行了第一次负载均衡处理。

网络负载均衡 —— Azure Load Balancer (ALB)

https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview

在上文中,ATM作为第一层系统,将业务域名最终映射到了endpoint域名。

从网络DNS角度考虑,endpoint域名最终必定是一个公用IP的ANAME。

但是我们知道,IP只是作为网络连接的接入地址,它和真正处理服务的服务器没有必然相关性。

因此在Azure中,从endpoint域名->IP->服务器之间又可以做如下拆分工作,事实上Azure Service Fabric也是这样做的。

  • 创建Azure Virtual Machine Scale Set (我们会在本节下文讲到VMSS,在此你可以先简单理解为这是一个VM集群,可以进行一些统一的对外IP配置)
  • 为VMSS配置一个公共的IP及Azure子域名,例如:207.46.154.78 / xxx.eastasia.cloudapp.azure.com
  • 为该公共IP创建ALB,配置以下信息
    • IP池,用来告知ALB需要将请求负载均衡至VMSS中的多少台VM的IP列表。
    • 端口映射,将公开端口映射至VMSS中具体每台VM监听的端口号。例如 207.46.154.78:80 –> 192.168.1.3:8080
    • 探针策略,配置ALB如何探测后台IP端口是否可用,以免负载均衡至不可用服务器

根据以上配置,所有请求至 xxx.eastasia.cloudapp.azure.com 域名后都会经由ALB转发至真正的VM。

虚拟机扩展集群 —— Azure Virtual Machine Scale Set (VMSS)

https://azure.microsoft.com/en-us/services/virtual-machine-scale-sets/

接下来简单介绍上文提及的VMSS。

在云服务时代,云服务使用者已经不需要考虑物理机的部署和运维工作。对业务系统架构师和运维人员而言,都是在和虚拟机打交道。

Azure提供了VMSS,一个非常友好的VM集群控制系统。

VMSS从一个整体唯独提供了服务器层面的监控管理方案,使用者可以从整体把握其系统的工作情况。例如:

  • 当VMSS平均CPU变高时,可以临时加入新的虚拟机来分摊压力。当然后续也可以移除减少费用。
  • 因为有ALB的存在,所以当加入新VM进入VMSS时,不需要额外的其他操作。ALB可以在探针确认新VM服务可用后立即进行负载均衡。
  • 如果需要对所有虚拟机打补丁或者安装新组件,可以针对VMSS进行,所有部署工作都将在各个VM上执行。

对Azure Service Fabric而言,运行的底层即是依赖于VMSS。

PaaS 微服务架构 —— Azure Service Fabric (ASF)

https://azure.microsoft.com/zh-cn/services/service-fabric/

前面讲了这么多铺垫,终于开始进入我们的主题:Azure Service Fabric

在开始之前,我们需要理清一些思路。它们对于我们之后学习Azure Service Fabric会非常有用。

  • Azure Service Fabric其实分为两块:Azure和Service Fabric。
  • Service Fabric只是一套软件分布式系统,理论上它可以使用在非Azure环境。也就是说:非Azure环境的机器集群,进行合理配置,也可以使用Service Fabric 构建分布式系统。
  • 当我们在Azure门户上创建Azure Service Fabric时,会自动创建Azure Load Balancer, Azure Virtual Machine Scale Set, Azure Virtual Machine。这是因为这些组件都是在Azure环境中将Service Fabric接入公网必须的组件和平台。但是理论上如果今后有其他的产品,通过合理的负载均衡和配置逻辑,只要可以让服务器集群面向外部网络提供服务,Service Fabric都可以适用。
  • Service Fabric自行构建了一整套虚拟概念,包括后面会提及的Micro Service, Node type, Node等等。这些概念都是仅在Service Fabric范围内适用。例如Micro Service,可以用C#构建,也可以用Java实现。Node type可以是Azure VMSS, 也可是是硬件物理服务器。
  • Service Fabric帮助架构师将分布式系统和硬件进行脱耦。理想程度下,所有职责如下:
    • 软件开发者只需要关系分布式微服务功能逻辑实现,微服务之间如何调用通过统一接口完成
    • 应用部署者只需要关心如何将微服务部署至各个node,以及考虑应用的升级维护
    • 硬件架构师只需要关心维护虚拟机和网络之间的部署关系,并且在虚拟机性能产生问题是增加虚拟机来分担压力

我们会在下一节介绍Azure Service Fabric的各个虚拟概念以及它的工作机制。

时间: 2024-12-18 02:56:01

云时代分布式系统演进的相关文章

Spring全家桶带来云时代的软件开发变革

快速发展和变化的业务需求所带来的挑战正在驱动现代企业数字化转型,云原生应用系统的构建是其中最为重要环节之一. 目前,云原生应用开发框架Spring(包括Spring MVC.Spring Boot.Spring Cloud.Spring Cloud Dataflow)已经占据Java软件开发框架的统治地位.在Snyk最新的2018 JVM生态调查中表明:40%被调研的开发者正在使用Spring Boot,36%被调研的开发者正在使用Spring MVC:2018年也是Spring Boot首次超

万亿美元向云转型大市场,轻元科技要做云时代的IBM

Gartner预测,到2020年投入在传统IT上的支出直接或间接转移到云上,预计将超过1万亿美元.而全球IT支出有多大规模呢?根据Gartner全球IT支出预测,2017年全球IT支出将达到3.5万亿美元.Gartner全球IT支出预测是对数据中心系统.软件.设备.IT服务和通信服务等主要技术支出的趋势指标,基本上就是传统的企业ICT市场. 那么,Gartner所指的1万亿美元向云转型的支出,到底是公有云.私有云还是混合云?这恐怕就算Gartner自己也能很难判断,因为未来五到十年向云转型的企业

运维侠客行杭州站沙龙回顾 | 云时代下的运维管理实践

我们处在一个巨变的时代,在云计算.大数据和物联网等新技术.新理念不断更新的大背景下,企业同时面临着数字化和"互联网+"转型的双重挑战,企业对于"稳态IT"和"敏态IT"都提出了强烈的需求,如何推进双态环境下的技术演进变成全行业共同面临的难题. 在这样一个"时空交错"中,优云软件推出了一个名为:"运维侠客行"的线下沙龙品牌,杭州作为首站,活动当天汇聚了来自不同行业和企业的运维从业人员,其中有几十年的运维老兵,

从传统运维到云运维演进历程之软件定义存储(一)

运维是企业业务系统从规划.设计.实施.交付到运维的最后一个步骤,也是重要的步骤.运维从横向.纵向分可以分为多个维度和层次,本文试图抛开这纷繁复杂的概念,讲述一个传统的企业级运维人员转型到云运维人员,尤其是软件定义存储的运维之间经历的沟沟坎坎. 在传统企业中,业务运维工程师(Operations) 主要负责监控.维护并确保整个业务系统的可靠性,同时提出对系统架构的优化要求.提升部署效率.优化资源利用率并提高整体的ROI. 随着云计算.大数据以及新兴的区块链等技术体系的迅猛发展,数据中心的扩容建设进

为云时代而生的“移动应用云”

云服务的发展进入了突破期,但是仍属于相对初级阶段.优质垂直云服务(云应用)的发展,成为带动云服务普及的关键.真正的垂直云服务,一定要解决特定问题.不过市场上不乏浑水摸鱼者,找一个新概念,将传统IaaS或PaaS服务进行包装,就号称某个领域的全新云服务. “移动应用云”作为垂直云服务的代表,以云计算为基础,构建在PaaS层和SaaS层中间,专注为移动应用提供集成化的API服务,同时将移动应用开发技术“云化”,以服务的形式提供给开发者. API和移动应用云的关系 移动技术架构属于典型的“三层架构”体

Docker,云时代的程序交付方式

Docker,云时代的程序交付方式 Docker - 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engine 的正式发布?Azure入华?还是AWS落地中国?留在每个人大脑中的印象可能各不相同,但要是让笔者来排名的话那么Docker绝对应该算是第一位的. 如果你之前听说过它的话,那么也许你会说"没错,就是它",因为几乎世界各地的开发.运维都在谈论着Docker:如果你还没听说过Docker,那么我 真的建议你花上10分钟来阅读本文. 1.

云时代IDC自动化运维的几大神器

云时代IDC自动化运维的几大神器 2016年09月18日 10:27:41 天府云创 阅读数:1715 版权声明:本文为EnweiTech原创文章,未经博主允许不得转载. https://blog.csdn.net/English0523/article/details/52572114 自动化运维是数据中心.互联网企业高度重视的方向,数据中心的从纯手工.重复地进行软件部署运维,经历编写脚本运维,再到借助第三方工具高效.方便地部署和运维,在转变的过程中已大大提升了运维的效率和性能.下面给大家推荐

APM,云时代的应用性能优化神器

我们都知道,当今的时代是一个新技术蓬勃发展的时代:大数据.云计算.移动互联网.物联网--作为应用服务开发者的我们,有了很多很好的选择:我们的传统的应用基础架构也开始向云端迁移:我们看一下,现在企业应用IT架构是什么样? 很典型,从用户一直到硬件,很立体的六个层面,从用户到CDN,到防护墙,防护墙内有一堆的服务器,跑的是你的代码,还有一堆的硬盘做数据存储,这是咱们传统企业的应用架构.到了云的时代,因为我要讲的是云时代的APM,架构就变成这样了,后端防火墙的一些东西都隐化了,到了云时代背后的一般都变

活水渠 - 云影院之云时代看片全攻略

本文讨论了大数据时代最热门的两大应用之一的云计算(另一应用是物联网)对网络视频观看体验的具体影响,以及在观看方式上区别于传统下载方式的优点. 一.视频门户类网站 此类网站以优酷.乐视等为代表,主营传统网络视频业务,使用浏览器进行直接点击链接进行观看. 优点:电视节目丰富.观看技术手段简单.大型网站服务器稳定 缺点:看不了热门电影,精华视频要收费,免费用户要看广告 解决:浏览器辅助工具或插件解决收费和广告问题,在此基础上还诞生了视频门户网 站的入口集成网站,每天看云帆可免VIP直接观看主流视频门户