Apache Mesos

Kubernetes集群调度器原理剖析及思考

巧了我就是萌 提交于 2021-02-18 00:59:00
简述 云环境或者计算仓库级别(将整个数据中心当做单个计算池)的集群管理系统通常会定义出工作负载的规范,并使用调度器将工作负载放置到集群恰当的位置。好的调度器可以让集群的工作处理更高效,同时提高资源利用率,节省能源开销。 通用调度器,如Kubernetes原生调度器Scheduler实现了根据特定的调度算法和策略将pod调度到指定的计算节点(Node)上。但实际上设计大规模共享集群的调度器并不是一件容易的事情。调度器不仅要了解集群资源的使用和分布情况,还要兼顾任务分配速度和执行效率。过度设计的调度器屏蔽了太多的技术实现,以至于无法按照预期完成调度任务,或导致异常情况的发生,不恰当的调度器的选择同样会降低工作效率,或导致调度任务无法完成。 本文主要从设计原理、代码实现两个层面介绍Kubernetes的调度器以及社区对其的补充加强,同时对业界常用调度器的设计实现进行比较分析。通过本文,读者可了解调度器的来龙去脉,从而为选择甚至设计实现适合实际场景的调度器打下基础。 注明:本文中代码基于v1.11版本Kubernetes进行分析,如有不当之处,欢迎指正! 一、调度器的基本知识 1.1 调度器的定义 通用调度[1]的定义是指基于某种方法将某项任务分配到特定资源以完成相关工作,其中任务可以是虚拟计算元素,如线程、进程或数据流,特定资源一般是指处理器、网络、磁盘等

12张手绘图,终于搞懂了微服务架构

萝らか妹 提交于 2021-02-17 07:08:43
作者 | tengshe789 来 源 | https://juejin.im/post/5c0ba2bef265da614d08fefe 微服务的概念最早在 2012 年提出,在 Martin Fowler 的大力推广下,微服务在 2014 年后得到了大力发展。 今天我们通过一组手绘图来梳理下微服务的核心架构。 什么是微服务? 微服务 Microservices 之父,马丁.福勒,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。 但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。 每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。 另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。 可以使用不同的语言来编写服务,也可以使用不同的数据存储。

YARN详解

社会主义新天地 提交于 2021-02-11 18:38:24
1. YARN架构 1.1 简介 1.1.1 架构 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。 YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。 1.1.2 Job提交流程 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。 ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。 ApplicationMaster首先向ResourceManager注册

解锁云原生智慧,促进开源技术企业落地——D2iQ云原生主题论坛精彩回顾

时间秒杀一切 提交于 2021-02-04 09:52:47
10月25日,全球领先的云原生厂商D2iQ在北京召开“D2iQ云原生主题论坛”(Day 2 Cloud Native Event Beijing),为中国区的客户开启云原生之旅。来自云原生计算基金会(CNCF)的专家、D2iQ合作伙伴代表与近百位云原生技术实践者齐聚一堂,探索企业向云原生转型的挑战和应对,分享云原生领域的最新理念、技术和落地实践,促进开源生态的发展,推广云原生技术在企业的智能化应用。 如今,IT的发展已进入多平台的阶段,云计算被大规模采用,“云整合”运动正蓬勃兴起。由此催生出的云原生已成为IT业界一个新的技术标准,而作为创新的源泉的开源,更是众多巨头争相落子的领域。2个月前,全球领先的企业级云平台供应商Mesosphere更名为D2iQ,核心使命是支撑客户在生产环境(Day 2)实现企业级交付,让云原生技术成为一种普惠方案,人人可用。 解构云原生挑战和复杂性 2019 年被称为“云原生技术商业化元年”,越来越多的企业开始将业务与技术向云原生演进,应用和软件向Kubernetes迁移、交付和持续发布。 云与开源的交汇蕴藏着许多丰富的新技术,可以帮助业务在短期内迅速完成转型,但也因其之间的交互关系,让IT的复杂程度达到了前所未有的水平。 传统IT的功能和流程无法承受业务快速创新、系统快速部署的模式,企业需要采用全新的方式来开发、迭代和运行应用,要求IT必须智能化、自动化

喜报!中国移动云能力中心收获一名Apache SkyWalking Committer

一笑奈何 提交于 2021-02-03 14:44:09
友情提示:全文1000多文字,预计阅读时间5分钟 来自中国移动云能力中心云计算产品部PaaS平台产品组的工程师刘唯一被Apache SkyWalking的PMC投票成为新的committer! Apache SkyWalking是什么 SkyWalking是一个APM(应用程序性能监视器)系统,专门为微服务、云原生和基于容器(Docker/Kubernetes/Mesos)的体系结构而设计。 SkyWalking可以用来做什么 在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的、小的模块或者重用已经有的模块来构建复杂的系统。随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速的定位到线上故障和性能瓶颈,便成为我们不得不面对的棘手问题。Google在论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》中提出了分布式跟踪系统的设计和构建思路。在这样的背景下,Apache SkyWalking创建于2015年,2019年毕业成为Apache顶级项目。它参考Dapper论文实现分布式追踪功能,并逐渐进化为一个完整功能的Application Performance Management系统,用于追踪

阿里微服务大牛奉命总结出500页Spring微服务架构笔记

纵然是瞬间 提交于 2021-02-02 02:53:18
微服务是一种架构风格和模式:将复杂系统拆解为协同工作的小型服务,以此构建大型业务服务。微服务是自治、自包含且可独立部署的服务。当今世界上的许多企业将微服务作为默认的架构标准来构建面向服务的大型企业级应用。 作为一种编程框架,Spring框架在开发者社区流行很多年了。使用SpringBoot不再需要重量级应用容器,并且它还支持部署轻量级无服务器应用。Spring Cloud结合了Netflix的许多OSS开源组件,提供了一个运行和管理功能型微服务架构的生态系统;还支持负载均衡、服务注册、服务监控和服务网关,等等。 然而,微服务也带来了一些挑战,例如服务的监控、管理、分发、扩容和发现等,尤其是当大规模部署微服务时。如果在采用微服务架构之前不解这个问题这个问题些常见的问题,通常会导致灾难性的后果。本书旨在构建一个与技术细节无关的微服务能力模型,该模型有助于应对各种常见的微服务挑战。 本书提供了实现大型响应式微服务的实用方法和指导原则,并通过示例全面讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、Docker、Mesos和Marathon,还会教授如何用Spring Boot部署自治服务使用使用无须使用用重量级应用服务器 ,并介 绍Spring Cloud框架 以及以及 项能以及以及如何使用Docker实现容器化 ,以及如何

Spark学习一:Spark概述

对着背影说爱祢 提交于 2021-01-07 00:58:42
1.1 什么是Spark ​ Apache Spark 是专为大规模数据处理而设计的 快速通用 的计算引擎。 ​ 一站式管理大数据的所有场景(批处理,流处理,sql) ​ spark不涉及到数据的存储,只做数据的计算 ​ Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架,Spark拥有Hadoop MapReduce所具有的优点; ​ 但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 注意:spark框架不能替代Hadoop,只能替代MR,spark的存在完善了Hadoop的生态系统. ​ Spark是Scala编写,方便快速编程。 ​ 学习spark的三个网站 ​ 1) http://spark.apache.org/ ​ 2) https://databricks.com/spark/about ​ 3) https://github.com/apache/spark ​ 官网: http://spark.apache.org Apache Spark™ is a fast and general engine for large-scale data

Kubernetes(一):容器编排介绍

孤人 提交于 2021-01-06 11:33:27
一、云计算    云计算发展历程   在学习k8s的过程中接触到了Serverless的概念,这里先对云计算的发展历程做一个简单的总结,以便引入Serverless。2006年,Google董事长 Eric Schmidt 在搜索引擎大会首次提出云计算(Cloud Computing)的概念,一转眼十多年过去了,云计算的发展势如破竹,从传统的IDC到现在的FaaS,<font color=#0000FF> 逐渐快捷,愈发高效 </font>。 IDC( Internet Data Center ) :互联网数据中心。自建或者租用。自建自己干全套;租用就是服务器自己买,租人家的机柜,硬件安装和调试都由被托管方负责。 IaaS(Infrastructure as a Service) :基础设施即服务。IaaS提供商给你提供硬件, 想怎么用自己搞。 PaaS(Platform as a Service) :平台即服务。PaaS提供商给你提供硬件并装好操作系统、相关中间件及运行库等基础环境,至于要装什么应用看需求。 SaaS(Software as a Service) :软件即服务。所有的东西都由IaaS提供商提供,用户只管用。 FaaS(Function as a Service) :函数即服务。将应用程序抽象成函数,只有当程序被调用时才会执行函数启动,平时不启动不占用资源。

焱正式加入CNCF和Linux基金会

♀尐吖头ヾ 提交于 2021-01-03 07:16:49
CNCF及Linux基金会简述 CNCF基金会是由Linux 基金会发起的,致力于管理和运转原生云项目,吸纳开源社区和合作伙伴,共同推动Kubernetes以及容器计算发展的非营利组织,全球共计有 250 多名会员,其中包括 Google、华为、阿里巴巴、IBM、Intel、Docker 和 Red Hat 等知名公司。 Linux基金会是全球知名的非营利性的联盟,推动行业产生原创性技术研究和内容,以促进Linux的发展。 在CNCF社区的计划 拥有实力雄厚的分布式存储技术团队,开发了国内第一款商业容器存储,提供FlexVolume、CSI插件,无缝对接K8S、Docker Swarm、Mesos等容器编排平台。该产品具备以下优势: ● 具备高性能分布式文件接口,全分布式元数据集群; ● 支持容器以及Namespace级别的Quota配置,QoS限速; ● 与容器平台的深度整合。在KubernetesV1.10.5以下版本中,可使用 Flex Volume插件支持静态与动态的卷创建。在KubernetesV1.10.5及以上版本,可以使用CSI plugin支持静态与动态卷的创建; ● 支持RWO/ROX/RWX三种访问方式,满足各种应用对存储的使用要求,并且针对不同的访问方式做深度优化; ● 高性能客户端以及缓存层,提高数据访问的效率与性能; ●

Spark-submit执行流程,了解一下

守給你的承諾、 提交于 2020-12-11 17:59:33
摘要 :本文主要是通过Spark代码走读来了解spark-submit的流程。 1.任务命令提交 我们在进行Spark任务提交时,会使用“spark-submit -class .....”样式的命令来提交任务,该命令为Spark目录下的shell脚本。它的作用是查询spark-home,调用spark-class命令。 if [ -z "${SPARK_HOME}" ]; then source "$(dirname "$0")"/find-spark-home fi # disable randomized hash for string in Python 3.3+ export PYTHONHASHSEED=0 exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@" 随后会执行spark-class命令,以SparkSubmit类为参数进行任务向Spark程序的提交,而Spark-class的shell脚本主要是执行以下几个步骤: (1)加载spark环境参数,从conf中获取 if [ -z "${SPARK_HOME}" ]; then source "$(dirname "$0")"/find-spark-home fi . "${SPARK_HOME}"/bin