精华内容
下载资源
问答
  • 得益于CTO、CEO和CDO们积极的推动,IT基础设施正在向云环境迁移,底层架构师则在热烈讨论围绕着原生应用的SaaS、PaaS和微服务架构,而开发者们正在大显身手,努力探索云计算的魔盒,找出什么是对业务有价值的,...
        

    得益于CTO、CEO和CDO们积极的推动,IT基础设施正在向云环境迁移,底层架构师则在热烈讨论围绕着云原生应用的SaaS、PaaS和微服务架构,而开发者们正在大显身手,努力探索云计算的魔盒,找出什么是对业务有价值的,什么又是不需要的。

    之所在云上花费这大精力,云应用所具备的独特功能居功至伟,例如支持高度可扩展和灵活的分布式架构,可以在多云环境中轻松迁移,但云应用从开发到落地生产环境,需要许多不同的工具和技术来提供强有力的支持。本文将讨论云环境中能够最大化发挥云计算优势的新方法、新工具。

    函数式编程

    假设我们希望开发具有高度可伸缩基础设施的服务来支持IoT和ybig data平台,函数式编程是一项值得考虑的选择。不同于大多数人所熟知的编程范式,函数式编程不需要维护全局状态,只需要将输入数据传给函数即可,适合用于验证新想法。很多顶级云供应商目前都已经支持函数式编程。

    选择开发语言

    在云平台上开发微服务架构时,启动时间(startup time)、内存效率(memory efficiency)、二进制大小(binary size)和并发性(consurrency)是关键因素。

    Go——Go语言对于云计算来说,是一种优秀的选择,它具备兵法、轻量级、静态类型和编译语言等特性。据了解,英国的一家银行(Monzo)完全使用Go语言实现微服务架构来构建完整的银行体系结构。

    Java——大多数应用都是用Java开发的,Java也拥有大量的开发者社区基础。Spring Boot和Java modules(JDK-9.0~)是云原生架构的最佳选择之一。这是将以遗留系统迁移到云平台的良好开端。

    .net core——微软已经很久没有支持开源社区了,这也是很多公司不采用.net core的原因之一。当然微软总是致力于提供无bug的工具、简单的语法和良好的教程,他们最近也意识到,开源可以为Azure cloud提供更多的创新和业务。总而言之,.net core是Azure云平台上的最佳选择之一。

    R Math——数据科学(data science)正在席卷整个计算机世界,但却没有一种新的语言可以用来解决数据科学难题(统计和数学)。由于云计算可以以低成本提供计算能力,业界正试图用旧的技术工具来解决人工智能难题。R是S编程语言的实现。S创建于1976年,R library实现统计和数学功能。

    Python——Python支持多种编程范例和强类型检查。它易于学习,有强大的分析库,并得到了开源社区的大力支持,这也是Python吸引数据科学家的原因之一。

    选择存储

    大规模伸缩前端服务时,尝试使用连接池与RDBMS数据库进行通信可能无法满足实际的用例需求,需要我们选择以云为中心(cloud-centric)的数据库来构建强大的存储平台。

    Amazon DynamoDB——提供了任何级别的single-digit-millisecond延迟,数据以NoSQL格式存储,支持文档、键值存储模型和构建图形数据库。

    Azure Cosmos DB——支持具有水平扩展的全局分布式数据库。以NoSQL格式存储的数据,保证了99%的single-digit-millisecond延迟。它不仅支持文档、图形、键值、表和列族数据模型,还支持扩展到多种语言的API支持。

    MongoDB——MongoDB是NoSQL DB的早期版本之一,对于客户来说是非常好的开源存储,并且具有不错的成本效益模型。

    IBM Cloudera DB——Cassandra是Cloudera的基础数据库,它支持基于java的api来与NoSQL数据库通信。

    Oracle NoSQL DB——oracle NoSQL DB并支持水平负载均衡和节点扩展。

    Service Mesh微服务架构

    微服务架构在带来诸多好处的同时,也带来了处理故障、路由和服务发现方面的挑战。因此,在大规模构建以云为中心的服务时,不妨考虑Service Mesh微服务架构。

    什么是Service Mesh微服务架构

    Service Mesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。简单来说,Service Mesh是微服务通信的代理层。

    Linkerd - It communicates between services and provides an abstract layer for accessing microservices. The key features are service discovery, load balancing, circuit breaking, dynamic request routing and distributed tracing.

    Linkerd——Linkerd为服务之间通信提供支持,并为访问微服务提供抽象层,具有服务发现、负载均衡、断路、动态请求路由和分布式跟踪等特性。

    Envoy——最初在其内部使用,而今作为Service Mesh解决方案开放了源代码。不过Envoy并不是为Kubernetes设计的。

    Istio——Istio使用负载均衡服务创建已部署服务的网络以进行服务身份验证。服务监视是它支持的关键特性之一。

    Rainbond——Service Mesh微服务架构是开源PaaS Rainbond在v3.6.0版本中的重点新增特性,可以开箱即用。Rainbond通过插件式扩展来实现治理功能,并对spring cloud、api gateway、dubbo等微服务架构框架有良好支持。

    消息层

    IoT是所有行业都在关注的增长领域。相信不少人都听说过,数据是一种新的石油这句话。自动驾驶、移动设备等等,每天都会向云平台输送大量数据。事件源(event sourcing)是捕获完整在线用户活动的另一个领域……种种情形和需求,让数据流工具成为众多企业必不可少的一部分。

    Kafka——Kafka是一款基于发布/订阅的分布式消息系统,于2011年成为Apache的孵化项目,随后于2012年成为Apache的主要项目之一。Kafka使用Scala和Java进行编写,因其快速、可扩展的、高吞吐、可容错的特点而逐渐成为一项广泛使用的技术,适合在messaging、website activity tracking、log aggregation等大规模消息处理场景中使用。

    Kinesis——Amazon Kinesis可让您轻松收集、处理和分析实时流数据,以便您及时获得见解并对新信息快速做出响应。Amazon Kinesis 提供多种核心功能,可以经济高效地处理任意规模的流数据,同时具有很高的灵活性,让您可以选择最符合应用程序需求的工具。

    容器/架构即代码

    容器化是对在云环境中运行应用和依赖的打包,即其中包含代码、环境变量、库等等。容器可以在任意云环境中运行,并为大规模迁移到不同云环境中提供灵活性。

    Docker——Docker为封装和分发容器应用提供了一个开放的标准。Docker engine用于构建和运行容器,而Docker镜像一般存储在Docker hub中。

    Kubernetes——Kubernetes现下已成为容器编排的标准,在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

    总结

    以上工具和技术只是云平台的开始,需要企业,尤其是大型企业在构建云平台时,结合实际自身情况进行选择,为应用开发、存储、安全、日志记录和调试、监视和测试创建合理的路线图,这也是为开发人员增加生产力和实现目标提供清晰思路的有效方法。

    • END -

    开源PaaS Rainbond v3.6.0现已发布,新增Service Mesh微服务架构开箱即用,通过插件式扩展来实现治理功能,并支持spring cloud、api gateway、dubbo等主流微服务架构。

    展开全文
  • 1.知道自己在做什么 技术市场分析ABI Research的研究分析Michael Tavares指出,云架构是一个整体结构,依赖于组件之间的共生关系,包括前端和后端平台...

    1.知道自己在做什么


    技术市场分析师ABI Research的研究分析师Michael Tavares指出,云架构是一个整体结构,依赖于组件之间的共生关系,包括前端和后端平台、基于云的交付系统和网络资源。如果没有这些组件,我们就没有真正的云架构,”他说。更重要的是,一个组件中的更改将导致其他组件中的更改。”


    沙司实验室的平台服务主管、网络和移动应用测试云提供商Thomas Boyles警告说,该组织不应轻率行事。构建云计算基础设施是一项复杂的任务,事实上,不能考虑可伸缩性和持久性。他说:“不要错装,希望它能发挥作用。”"对于它的设计,组织需要非常详细和标准化。"


    云计算领导者,如AWS、谷歌和微软,在用户完成家庭作业和阅读用户手册的前提下,提供了构建块。“他们已经为用户提供了构建云平台的基础,但他们需要确保以正确的方式使用它们,”VMware CloudHealth云优化平台的产品经理Ennio Carbon i说。否则,您将面临无法控制的成本峰值和环境不稳定的风险。“


    IBM研究员、云实验室的云架构首席技术官Kyle Brown建议,实现设计良好的云解决方案的最佳方法是通过规划和远见。他说:“如果没有灵丹妙药,企业团队应该逐步定义架构和计划,这样就可以进行反复的变更。”


    2.关注应用程序所有者的需求


    “Sekou Page,”专业服务和业务咨询公司Capgemini的云架构解决方案主管表示,云服务应该利用云本地功能。”委托客户最大限度地发挥云计算的潜力,以提高性能、可靠性和降低成本,”他说。


    aws的大部分成功都是通过关注客户需求来实现的。


    Tavares认为,在做出有关存储、可扩展性、安全性和其他服务的关键决策之前,应该对整个企业进行调查。他说:“最终用户需要了解在哪里以及为什么在整个组织中最好地管理和构建云计算基础设施。”只有这样,他们才能避免云计算的蔓延-当企业为不同的部门(如人力资源、财务、运营、营销和公共关系)采用互不相连的系统时,这是可能的。“


    “业务和IT文化也很重要,”Bo.hk解释说。对于正在为其部署云平台的组织和用户组,必须有适当级别的采购和投资。此外,还需要一定数量的内部专业知识,可能包括云计算架构师。组织需要有经验的人员,更重要的是,他们了解用例和用户角色。了解用户群的需求是良好规划和设计的关键。“


    保险公司Liberty Mutual的安全DevOps平台高级主管Justin Stone补充道:“组织无法独立完成这项工作。云计算之旅需要多个团队和跨IT组织的强大业务联系。”


    3.寻求可扩展性和标准化


    云计算基础设施组件应该能够沿着三个关键维度独立扩展:存储、计算(内存和处理)和网络。"无论作出何种具体选择,本组织都必须有一个平台,以标准化的方式扩大对其用户至关重要的关键能力规划层面。”孩子建议。


    杜兰大学(Tulane University)职业发展学院(School Of Career Development)应用计算与技术项目(Application Computing And Technology Program)的William Rials教授警告称,组织的云架构不应依赖任何单一的云服务提供商。“明确定义的云体系结构应尽可能关注开放标准。为了实现不同云计算服务提供商与本地基础架构之间的最大兼容性。”


    微型服务的兴起在很大程度上得益于标准化软件容器的迅速采用。Tavares说:“这项技术允许开发人员将他们的代码打包到轻量级的、独立于平台的包中,这些包可以轻松地跨越不同的基础设施。”随着多云市场的兴起,容器是云计算基础设施的一个重要方面,允许跨不同供应商的软件进行个性化和协调的应用程序开发。“


    4.创新,不要模仿


    佩奇说:“IT不应该依赖传统的思维方式。这包括他们的运营,安全,监控,部署等。“


    将现有的内部部署设施“升级并转移”到云上的诱惑几乎总是构建云架构的错误方法,尽管由于其即时时间和成本优势,很难抵制这种诱惑。”也许最大的禁忌是把云计算想象成一个“空中数据中心”,只使用移动应用程序就宣告胜利,”商业和技术咨询公司埃森哲(Accenture)的云战略、架构和交付总经理Miha Kralj说。在没有未来路线图的情况下升级和传输应用程序的首席信息官会发现,他们没有达到预期的价值,在某些情况下,他们会陷入技术债务中,花费远远超过预期。


    Roland Barcia是ibm云计算实验室的著名工程师,他说:“云计算技术创新需要一个愿意采用新方法和新技术的it团队。确保正确的技能组合是至关重要的。他指出,“盲目地认为最初组建的团队能够有效地在开发基于云的解决方案中发挥作用是错误的。”相反,重新训练战斗团队开发更多的软件定义技能是很重要的。


    “外部支持也很有价值。与云计算提供商和软件合作伙伴合作,了解您的业务和目标是起步的关键。”斯通指出。


    5.改变云存储类型


    塔瓦雷斯声称,专注于一种类型的存储并不是一个好的选择。大多数主要的云提供商提供各种存储服务。例如,AWS提供简单存储(S3)、弹性块存储(EBS)、弹性文件系统(EFS)、导入/导出批量数据传输服务以及Glacier归档备份和存储网关。他说:“在所有情况下,没有单一的储存选择。”此外,对于不同的数据集使用不同的云存储选项可以提供性能、成本和功能方面的好处。


    6.建立弹性连接


    架构良好的云平台提供高带宽和低延迟。 IT Tech Services的首席信息官Mike Attar解释说:“网络层需要灵活,并为最终用户提供在服务器之间快速有效移动的能力。在某些情况下,还有其他云平台。监控和管理功能应该很容易决定如何相应地利用云计算资源。“


    RIALS指出,“一个明确定义的云架构不仅涉及云基础设施,而且还涉及连接性。默认情况下,组织通过Internet连接到云服务提供商。每个主要的云服务提供商都提供从客户所在地到其云基础设施的私有连接。


    由于定义良好的云架构涉及多云方法,因此与每个云计算服务提供商建立单独的连接可能过于昂贵。"因此,建议与与各主要云计算服务提供商有网络接口的云连接代理或云交换建立网络连接。”里亚尔说。


    7.整合安全性


    塔瓦雷斯说:“云安全服务永远不应与其他服务分开。”相反,应该将它们集成到其他服务中,例如存储和那些与提高可伸缩性相关的服务。“


    “云架构的每一层都应该嵌入可靠的安全原则,”Rials说。使用云计算服务的组织应该清楚地了解云服务提供商的责任在哪里结束,组织责任从哪里开始,而许多云计算用户错误地认为网络安全是云服务提供商的唯一责任。定义良好的云架构在整个架构中都存在根深蒂固的网络安全问题。“


    中安威士:保护核心数据,捍卫网络安全


    来源:网络收集



    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69914889/viewspace-2641986/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/69914889/viewspace-2641986/

    展开全文
  • 什么80%的码农都不了架构师?>>> ...

    摘要: 阿里云作为阿里巴巴IT基础设施的基石,每年的双十一都面临前所未有的巨大技术挑战。阿里云的EMAS移动研发平台,连续5年支持双11,不仅保障了手机淘宝、支付宝这些阿里巴巴集团App的使用体验,也支持了数万阿里云开发者的双十一狂欢。

    2014年11月11日,阿里巴巴天猫双十一购物狂欢节全天交易额571亿元;2015年交易额912.17亿元; 2016年1207亿 ;2017年1682亿元;2018年2135亿。五年内交易量不断攀升,屡创新高,这让双十一成为了全球商家和消费者的年度盛会,成为了中国和国际电子商务行业的年度盛事。阿里云作为阿里巴巴IT基础设施的基石,每年的双十一都面临前所未有的巨大技术挑战。阿里云的EMAS移动研发平台,连续5年支持双11,不仅保障了手机淘宝、支付宝这些阿里巴巴集团App的使用体验,也支持了数万阿里云开发者的双十一狂欢。

     

    image


    相比于PC时代,移动互联网对产品研发提出了新的挑战,移动端面临更复杂的网络环境和更灵活的发版模式。移动端的网络,不同运营商的不同网络制式,2G/3G/4G/WiFi,更加复杂多样。移动端App的发版模式也不同,相比PC端服务的集中升级和立即生效,移动端App面临发版渠道多、机型碎片化、升级周期长、多版本共存等一系列问题。

    阿里云的EMAS移动研发平台,提供了成体系的不同产品,帮助开发者解决移动端App研发碰到的问题。比如,HTTPDNS服务,用于防止域名劫持;移动推送服务,帮助开发者推送运营消息;App研发平台,闭环地管理App的开发、构建和发版;移动测试服务,支持App发版时全方位的测试;移动热修复服务,用于App问题的紧急修复,而不需要走冗长的发版流程。还有更多的服务,面向移动端App研发,大家可以访问阿里云官网查询。

    在阿里巴巴集团,我们有最复杂、最多样的移动端业务需求和挑战,也有全球最专业的移动团队和移动技术积累,这些技术通过阿里云EMAS移动研发平台对外输出,相信能够帮助个人和企业在移动互联网时代更快、更省、更稳定!

    作者: 茜莹
    原文链接
    本文为云栖社区原创内容,未经允许不得转载。

    转载于:https://my.oschina.net/yunqi/blog/2966880

    展开全文
  • 基于这一范式,大数据架构师需要考虑三件事情: 第一,选择什么样的存储系统数据湖(湖存储)? 第二,计算和存储分离后,出现了性能瓶颈,计算如何加速和优化(湖加速)? 第三,针对需要的计算场景,...

     

     

    在开源大数据领域,存储/计算分离已经成为共识和标准做法,数据湖架构成为大数据平台的首要选择。基于这一范式,大数据架构师需要考虑三件事情:

     

    • 第一,选择什么样的存储系统做数据湖(湖存储)?

    • 第二,计算和存储分离后,出现了性能瓶颈,计算如何加速和优化(湖加速)?

    • 第三,针对需要的计算场景,选择什么样的计算引擎(湖计算)?

     

     

    湖存储可以基于我们熟悉的HDFS,在公共云上也可以选择对象存储,例如阿里云OSS。在公共云上,基于对象存储构建数据湖是目前业界最主流的做法,我们这里重点探讨第二个问题,结合阿里云上的EMR JindoFS优化和实践,看看数据湖怎么玩“加速”。

     

    湖加速

     

    在数据湖架构里,湖存储(HDFS,阿里云OSS)和湖计算(Spark,Presto)都比较清楚。那么什么是湖加速?大家不妨搜索一下…(基本没有直接的答案)。湖加速是阿里云EMR同学在内部提出来的,顾名思义,湖加速即为数据湖加速,是指在数据湖架构中,为了统一支持各种计算,对数据湖存储提供适配支持,进行优化和缓存加速的中间层技术。这里面出现较早的社区方案应该是Alluxio,Hadoop社区有S3A Guard,AWS有EMRFS,都适配和支持AWS S3,Snowflake在计算侧有SSD缓存,Databricks有DBIO/DBFS,阿里云有EMR JindoFS,大体都可以归为此类技术。

     

    那么为什么需要湖加速呢?这和数据湖架构分层,以及相关技术演进具有很大关系。接下来,我们从三个方面的介绍来寻找答案。分别是:基础版,要适配;标配版,做缓存;高配版,深度定制。JindoFS同时涵盖这三个层次,实现数据湖加速场景全覆盖。

     

    基础版:适配对象存储

     

    以Hadoop为基础的大数据和在AWS上以EC2/S3为代表的云计算,在它们发展的早期,更像是在平行的两个世界。等到EMR产品出现后,怎么让大数据计算(最初主要是MapReduce)对接S3,才成为一个真实的技术命题。

     

    对接S3、OSS对象存储,大数据首先就要适配对象接口。Hadoop生态的开源大数据引擎,比如Hive和Spark,过去主要是支持HDFS,以Hadoop Compatible File System(HCFS)接口适配、并支持其他存储系统。机器学习生态(Python)以POSIX接口和本地文件系统为主,像TensorFlow这种深度学习框架当然也支持直接使用HDFS 接口。

     

    对象存储产品提供REST API,在主要开发语言上提供封装好的SDK,但都是对象存储语义的,因此上述这些流行的计算框架要用,必须加以适配,转换成HCFS接口或者支持POSIX。这也是为什么随着云计算的流行,适配和支持云上对象存储产品成为Hadoop社区开发的一个热点,比如S3A FileSytem。阿里云EMR团队则大力打造JindoFS,全面支持阿里云OSS并提供加速优化。如何高效地适配,并不是设计模式上增加一层接口转换那么简单,做好的话需要理解两种系统(对象存储和文件系统)背后的重要差异。我们稍微展开一下:

     

    第一,海量规模。

     

    对象存储提供海量低成本存储,相比文件系统(比如HDFS),阿里云OSS更被用户认为可无限扩展。同时随着各种BI技术和AI技术的流行和普及,挖掘数据的价值变得切实可行,用户便倾向于往数据湖(阿里云OSS)储存越来越多不同类型的数据,如图像、语音、日志等等。这在适配层面带来的挑战就是,需要处理比传统文件系统要大许多的数据量和文件数量。千万级文件数的超大目录屡见不鲜,甚至包含大量的小文件,面对这种目录,一般的适配操作就失灵了,不是OOM就是hang在那儿,根本就不可用。JindoFS一路走来积累了很多经验,我们对大目录的listing操作和du/count这种统计操作从内存使用和充分并发进行了深度优化,目前达到的效果是,千万文件数超大目录,listing操作比社区版本快1倍,du/count快21%,整体表现更为稳定可靠。

     

    第二,文件和对象的映射关系。

     

    对象存储提供key到blob对象的映射,这个key的名字空间是扁平的,本身并不具备文件系统那样的层次性,因此只能在适配层模拟文件/目录这种层次结构。正是因为要靠模拟,而不是原生支持,一些关键的文件/目录操作代价昂贵,这里面最为知名的就是rename了。文件rename或者mv操作,在文件系统里面只是需要把该文件的inode在目录树上挪动下位置即可,一个原子操作;但是在对象存储上,往往受限于内部的实现方式和提供出来的标准接口,适配器一般需要先copy该对象到新位置,然后再把老对象delete掉,用两个独立的步骤和API调用。

     

    对目录进行rename操作则更为复杂,涉及到该目录下的所有文件的rename,而每一个都是上述的copy+delete;如果目录层次很深,这个rename操作还需要递归嵌套,涉及到数量巨大的客户端调用次数。对象的copy通常跟它的size相关,在很多产品上还是个慢活,可以说是雪上加霜。阿里云OSS在这方面做了很多优化,提供Fast Copy能力,JindoFS充分利用这些优化支持,结合客户端并发,在百万级大目录rename操作上,性能比社区版本接近快3X。

     

    第三,一致性。

     

    为了追求超大并发,不少对象存储产品提供的是最终一致性(S3),而不是文件系统常见的强一致性语义。这带来的影响就是,举个栗子,程序明明往一个目录里面刚刚写好了10个文件,结果随后去list,可能只是部分文件可见。

     

    这个不是性能问题,而是正确性了,因此在适配层为了满足大数据计算的需求,Hadoop社区在S3A适配上花了很大力气处理应对这种问题,AWS自己也类似提供了EMRFS,支持ConsistentView。阿里云OSS提供了强一致性,JindoFS基于这一特性大大简化,用户和计算框架使用起来也无须担心类似的一致性和正确性问题。

     

    第四,原子性。

     

    对象存储自身没有目录概念,目录是通过适配层模拟出来的。对一个目录的操作就转化为对该目录下所有子目录和文件的客户端多次调用操作,因此即使是每次对象调用操作是原子的,但对于用户来说,对这个目录的操作并不能真正做到原子性。举个例子,删除目录,对其中任何一个子目录或文件的删除操作失败(包含重试),哪怕其他文件删除都成功了,这个目录删除操作整体上还是失败。

     

    这种情况下该怎么办?通常只能留下一个处于中间失败状态的目录。JindoFS在适配这些目录操作(rename,copy,delete and etc)的时候,结合阿里云 OSS 的扩展和优化支持,在客户端尽可能重试或者回滚,能够很好地衔接数据湖各种计算,在pipeline 上下游之间保证正确处理。

     

    第五,突破限制。

     

    对象存储产品是独立演化发展的,少不了会有自己的一些独门秘籍,这种特性要充分利用起来可能就得突破HCFS抽象接口的限制。这里重点谈下对象存储的高级特性Concurrent MultiPartUpload (CMPU),该特性允许程序按照分片并发上传part的方式高效写入一个大对象,使用起来有两个好处,一个是可以按照并发甚至是分布式的方式写入一个大对象,实现高吞吐,充分发挥对象存储的优势;另外一个是,所有parts都是先写入到一个staging区域的,直到complete的时候整个对象才在目标位置出现。

     

    利用阿里云OSS这个高级特性,JindoFS开发了一个针对MapReduce模型的Job Committer,用于Hadoop,Spark 和类似框架,其实现机制是各个任务先将计算结果按照part写入到临时位置,然后作业commit的时候再complete这些结果对象到最终位置,实现无须rename的效果。我们在Flinkfile sink connector支持上也同样往计算层透出这方面的额外接口,利用这个特性支持了Exactly-Once的语义。

     

    标配版:缓存加速

     

    数据湖架构对大数据计算的另外一个影响是存/算分离。存储和计算分离,使得存储和计算在架构上解耦,存储朝着大容量低成本规模化供应,计算则向着弹性伸缩,丰富性和多样化向前发展,在整体上有利于专业化分工和大家把技术做深,客户价值也可以实现最大化。但是这种分离架构带来一个重要问题就是,存储带宽的供应在一些情况下可能会跟计算对存储带宽的需求不相适应。

     

    计算要跨网络访问存储,数据本地性消失,访问带宽整体上会受限于这个网络;更重要的是,在数据湖理念下,多种计算,越来越多的计算要同时访问数据,会竞争这个带宽,最终使得带宽供需失衡。我们在大量的实践中发现,同一个OSS bucket,Hive/Spark数仓要进行ETL,Presto要交互式分析,机器学习也要抽取训练数据,这个在数据湖时代之前不可想象,那个时候也许最多的就是MapReduce作业了。这些多样化的计算,对数据访问性能和吞吐的需求却不遑多让甚至是变本加厉。

     

    常驻的集群希望完成更多的计算;弹性伸缩的集群则希望尽快完成作业,把大量节点给释放掉节省成本;像Presto这种交互式分析业务方希望是越快越好,稳定亚秒级返回不受任何其他计算影响;而GPU训练程序则是期望数据完全本地化一样的极大吞吐。像这种局面该如何破呢?无限地增加存储侧的吞吐是不现实的,因为整体上受限于和计算集群之间的网络。

     

    有效地保证丰富的计算对存储带宽的需求,业界早已给出的答案是计算侧的缓存。Alluxio一直在做这方面的事情,JindoFS核心定位是数据湖加速层,其思路也同出一辙。下面是它在缓存场景上的架构图。

     

     

    JindoFS在对阿里云OSS适配优化的同时,提供分布式缓存和计算加速,刚刚写出去的和重复访问的数据可以缓存在本地设备上,包括HDD,SSD和内存,我们都分别专门优化过。这种缓存加速是对用户透明的,本身并不需要计算额外的感知和作业修改,在使用上只需要在OSS适配的基础上打开一个配置开关,开启数据缓存。

     

    叠加我们在适配上的优化,跟业界某开源缓存方案相比,我们在多个计算场景上都具有显著的性能领先优势。基于磁盘缓存,受益于我们能够更好地balance多块磁盘负载和高效精细化的缓存块管理,我们用TPC-DS 1TB进行对比测试,SparkSQL性能快27%;Presto大幅领先93%;在HiveETL场景上,性能领先42%。JindoFS 的 FUSE支持完全采用 native 代码开发而没有 JVM 的负担,基于SSD缓存,我们用TensorFlow程序通过JindoFuse来读取JindoFS上缓存的OSS数据来做训练,相较该开源方案性能快40%。

     

    在数据湖架构下在计算侧部署缓存设备引入缓存,可以实现计算加速的好处,计算效率的提升则意味着更少的弹性计算资源使用和成本支出,但另一方面毋庸讳言也会给用户带来额外的缓存成本和负担。如何衡量这个成本和收益,确定是否引入缓存,需要结合实际的计算场景进行测试评估,不能一概而论。

     

    高配版:深度定制,自己管理文件元数据

     

    我们在JindoFS上优化好OSS适配,把Jindo分布式缓存性能做到效能最大化,能满足绝大多数大规模分析和机器学习训练这些计算。现有的JindoFS大量部署和使用表明,无论Hive/Spark/Impala这种数仓作业,Presto交互式分析,还是TensorFlow训练,我们都可以在计算侧通过使用阿里云缓存定制机型,来达到多种计算高效访问OSS数据湖的吞吐要求。可是故事并没有完,数据湖的架构决定了计算上的开放性和更加多样性,上面这些计算可能是最主要的,但并不是全部,JindoFS在设计之初就希望实现一套部署,即能覆盖各种主要场景。一个典型情况是,有不少用户希望JindoFS能够完全替代HDFS,而不只是Hive/Spark够用就可以了,用户也不希望在数据湖架构下还要混合使用其他存储系统。整理一下大概有下面几种情况需要我们进一步考虑。

     

    第一、上面讨论对象存储适配的时候我们提到,一些文件/目录操作的原子性需求在本质上是解决不了的,比如文件的rename,目录的copy,rename和delete。彻底解决这些问题,完全满足文件系统语义,根本上需要自己实现文件元数据管理,像HDFS NameNode那样。

     

    第二、HDFS有不少比较高级的特性和接口,比如支持truncate,append,concat,hsync,snapshot和Xattributes。像HBase依赖hsync/snapshot,Flink依赖truncate。数据湖架构的开放性也决定了还会有更多的引擎要对接上来,对这些高级接口有更多需求。

     

    第三、HDFS重度用户希望能够平迁上云,或者在存储方案选择上进行微调,原有基于HDFS的应用,运维和治理仍然能够继续使用。在功能上提供Xattributes支持,文件权限支持,Ranger集成支持,甚至是auditlog支持;在性能上希望不低于HDFS,最好比HDFS还好,还不需要对NameNode调优。为了也能够享受到数据湖架构带来的各种好处,该如何帮助这类用户基于OSS进行架构升级呢?

     

    第四、为了突破S3这类对象存储产品的局限,大数据业界也在针对数据湖深度定制新的数据存储格式,比如Delta,Hudi,和Iceberg。如何兼容支持和有力优化这类格式,也需要进一步考虑。

     

    基于这些因素,我们进一步开发和推出JindoFS block模式,在OSS对象存储的基础上针对大数据计算进行深度定制,仍然提供标准的HCFS接口,因为我们坚信,即使同样走深度定制路线,遵循现有标准与使用习惯对用户和计算引擎来说更加容易推广和使用,也更加符合湖加速的定位和使命。JindoFS block模式对标HDFS,不同的是采取云原生的架构,依托云平台我们做了大量简化,使得整个系统具有弹性,轻量和易于运维的特点和优势。

     

     

    如上图示,是JindoFS在block模式下的系统架构,整体上重用了JindoFS缓存系统。在这种模式下,文件数据是分块存放在OSS上,保证可靠和可用;同时借助于本地集群上的缓存备份,可以实现缓存加速。文件元数据异步写入到阿里云OTS数据库防止本地误操作,同时方便JindoFS集群重建恢复;元数据在正常读写时走本地RocksDB,内存做LRU缓存,因此支撑的文件数在亿级;结合元数据服务的文件/目录级别细粒度锁实现,JindoFS在大规模高并发作业高峰的时候表现比HDFS更稳定,吞吐也更高。

     

    我们用HDFS NNBench做并发测试,对于最关键的open和create操作,JindoFS的IOPS比HDFS高60%。在千万级超大目录测试上,文件listing操作比HDFS快130%;文件统计du/count操作比HDFS快1X。借助于分布式Raft协议,JindoFS支持HA和多namespaces,整体上部署和维护比HDFS简化太多。在IO吞吐上,因为除了本地磁盘,还可以同时使用OSS带宽来读,因此在同样的集群配置下用DFSIO实测下来,读吞吐JindoFS比HDFS快33%。

     

    JindoFS在湖加速整体解决方案上进一步支持block模式,为我们拓宽数据湖使用场景和支持更多的引擎带来更大的想象空间。目前我们已经支持不少客户使用HBase,为了受益于这种存/算分离的架构同时借助于本地管理的存储设备进行缓存加速,我们也在探索将更多的开源引擎对接上来。比如像Kafka,Kudu甚至OLAP新贵ClickHouse,能不能让这些引擎专注在它们的场景上,将它们从坏盘处理和如何伸缩这类事情上彻底解放出来。原本一些坚持使用HDFS的客户也被block模式这种轻运维,有弹性,低成本和高性能的优势吸引,通过这种方式也转到数据湖架构上来。如同对OSS的适配支持和缓存模式,JindoFS这种新模式仍然提供完全兼容的HCFS和FUSE支持,大量的数据湖引擎在使用上并不需要增加额外的负担。

     

    总结

     

    行文至此,我们做个回顾和总结。基于数据湖对大数据平台进行架构升级是业界显著趋势,数据湖架构包括湖存储、湖加速和湖分析,在阿里云上我们通过 JindoFS 针对各种场景提供多种数据湖加速解决方案。阿里云推出的专门支持数据湖管理的Data Lake Formation,可全面支持数据湖。

     

    我们结合云上数年的实践经验,沉淀了EMR JindoFS在湖加速上的各种场景、挑战以及对应的技术方案。我们优化的思路有哪些,相较现有的社区方案,JindoFS有哪些优势,希望通过本文让同学们对阿里云上的数据湖方案有更加全面的认识,同时希望阿里云数据湖JindoFS/OSS + DataLake Formation + EMR能为同学们的大数据探索之旅带来更多价值。

    展开全文
  • 剖析计 算中的“共享型数据库” 摘要:随着云计算的出现,出现了很多新的名词,像数据库、存储、弹性扩容,资源隔离等...下面个人经验,以及与一些谷歌、BAT、京东等公司云计算架构师交流得到的心得的...
  • 什么80%的码农都不了架构师?>>> ...
  • 基于这一范式,大数据架构师需要考虑三件事情: 第一,选择什么样的存储系统数据湖(湖存储)? 第二,计算和存储分离后,出现了性能瓶颈,计算如何加速和优化(湖加速)? 第三,针对需要的计算场景,选择什么样的...
  • 对于许多组织来说,一个日益增长的趋势DevOps团队支持业务目标和战略。在这种软件开发重点的转变中,开发团队在差异...今天的问题通常围绕着DevOps团队必须什么来实现所需的敏捷级别(通过大规模使用原生平台...
  • 什么80%的码农都不了架构师?>>> ...
  • 中台架构50篇资料精选,阿里/腾讯/京东...中台建设实践汇集 内容包括7大类:阿里专家谈中台、行业专家解读中台、大厂中台架构实践、数据中台、技术中台、组织中台、中台建设方法论。...4.阿里架构师古谦...
  • 谈一谈物联网平台

    2020-04-27 15:09:28
    本人,现任某 IT 公司物联网平台架构师,公司本身硬件研发起家,但是需要研发物联网平台来开拓更大的市场和发展。到底要什么样的物联网平台,从战略上讲去怎么规划,怎么打,打谁,谁我们的敌人,谁我们的...
  • 目前正在车联网项目的云平台的架构设计与研发工作。平时喜欢打球游泳,偶尔发表一些技术文章,有个公众号叫「互扯程序」,本文为作者投稿。什么是系统架构师?系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并...
  • 简介 最近几天工作中用到acitiviti工作流,就简单学习下,了一个记录,俗话说得好,好记性不如烂笔头,话不多说,给大家分享...创始人Tom BaeyensJBoss jBPM的项目架构师,以及另一位架构师Joram Barrez,一起加
  • 庄表伟,华为公司内源社区平台架构师,开源社理事。发起过的Chat包括“我的架构感悟:从美国宪法学习架构设计原则”、“如何实践Code Review?”,以及“聊聊代码提交那些事”。 王渊命,QingCloud 容器平台负责人,...
  • 机器学习和AI精粹

    2020-06-30 16:39:03
    T等多家知名企业,担任CTO、总经理、首席数据科学家、首席云架构师等职位。 同时,Noah Gift作为导师兼具丰富的教学、研究与行业经验。他在加州大学伯克利分校(UCB)信息学院数据科学硕士项目、加州大学戴维斯分校...
  • 适合范围广,不管你0基础,还是拥有工作经验均可学习: 0基础 1-3年工作经验 3-5年工作经验 5年以上工作经验 运维、开发、测试、产品、前端、架构师 其他行业转行技术人员均可学习 课程部分项目截图  ...
  • 阿里巴巴集团首席架构师、阿里计算公司总裁王坚大会演讲 王坚:我在美国转了一下,在美国有一个体会,发现和今天的主题有点关系。当时想过,为什么这一年又活跃起来了,讲了两个原因,就是企业在干三件事,一个...
  • COLA :根据我的了解来看,很多公司的项目都基于 COLA 进行开发的,相比于其他快速开发脚手架,COLA 并不提供什么已经开发好的功能,它提供的主要一个干净的架构,然后你可以在此基础上进行开发。通过一行命令就...
  • 本书详细介绍了Spring Cloud的每一个核心模块,以理论与实际相结合的方式,透彻地讲述了Spring Cloud的精髓,每一位奋战在服务化领域一线的工程师、架构师的*选技术书籍。 ——李艳鹏 蚂蚁金服高级技术专家/...
  • 本书详细介绍了Spring Cloud的每一个核心模块,以理论与实际相结合的方式,透彻地讲述了Spring Cloud的精髓,每一位奋战在服务化领域一线的工程师、架构师的*选技术书籍。 ——李艳鹏 蚂蚁金服高级技术专家/...
  • 我难道天生就是个架构师?这可是100k并发啊 互联网前沿技术 容器化:Docker与k8s详解 面试技巧 简历怎么写? 能不能好好写简历? 简历这样写,技术人都不直男了! 10个简历小技巧,成为面试战神 语言组织 ...
  • 支付宝架构师眼里的高可用与容灾架构演进 蚁金服支付宝系统的单元化 蚂蚁金服蓝绿发布实践 亿级用户下的新浪微博平台架构 spring cloud spring cloud 实战(干货) 更多干货 spring cloud 微服务 ...
  • 都用它做什么?.mp4 │ Java面试题54.Spring事务的传播特性和隔离级别.mp4 │ Java面试题55.ORM什么?ORM框架什么?.mp4 │ Java面试题56.ibatis和hibernate有什么不同.mp4 │ Java面试题57.hibernate对象状态...
  • 但是要记住学习算法最关键的还是解题思路和方法,用什么语言实现其次的,如果你时间比较多我建议你用 Java 语言再实现一遍。 《labuladong的算法小抄》 非常推荐!这一本很新的书,写书前作者在 Github 开源...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

云平台架构师是做什么的