华为基于kubernetes打造云化软件基础设施——FusionStage2.0-程序员宅基地

技术标签: 人工智能  数据库  大数据  



内容来源:2017年2月25日,华为PaaS性能专家钟成在“Rancher容器实战分享季-杭州站之西湖春的唤醒”进行《FusionStage2.0—华为云容器实践》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:3187 | 5分钟阅读

嘉宾演讲视频回顾及PPT:suo.im/3h8xS1

摘要

介绍华为基于kubernetes打造的云化软件基础设施:FusionStage2.0。包括应用开发流水线框架,应用调度与资源管理框架,微服务运行与治理框架这三大组件,以及在这个过程中研发的关键技术与特性,及在CNCF开源社区的活动。

全面云化的问题和挑战

挑战1

大规模分布式应用难以开发、测试、运维。

广义摩尔定律并未失效:单芯片的晶体管集成度放缓,但云计算领域的价格随着规模变大、硬件降价后依然可以维持摩尔定律,企业和个人使用分布式应用的成本降低。

大数据、人工智能类应用的兴起:传统商业应用更注重于业务处理,而随着大数据和人工智能成为新的商业竞争力,进一步推动分布式应用的广泛使用。

分布式应用的部署运维依然艰难:除了像Google,Facebook这样的公司,大部分公司还停留在手工运维大量机器的时代。

挑战2

臃肿的单体应用架构无法满足日趋敏捷和快速的客户要求。

大代码基线、错综复杂依赖的单体应用架构,导致往往新增一个小特性需要数月到半年之久。

开发周期长:庞大代码基线,涉及100~200人团队开发维护;组件耦合大、责任不清楚,牵一发而动全身。

部署慢、扩容慢:部署过程不可重复、出错率高;不支持自动弹性伸缩。

升级难:固定时间窗、集中大规模人力中断服务升级。

挑战3

烟囱式应用系统构建,难于共享,资源利用率低。

静态资源分配、分散管理:各分散的业务部门通常按照规划的最大资源申请物理机、虚机资源,物理资源仍被私有化,无法实现共享,利用率低。通常数据中心利用率在10% ~ 20%。

应用架构七国八制:技术架构、中间件有各业务部门(合作ISV)独立选型、采购,OS、中间件选择不统一,类型众多。

IaaS通过虚拟化的技术实现物理资源的池化,但往往由于人为静态独占资源,并不能很好的解决共享和资源利用率的问题。

挑战4

开发(Dev)与生产运维(Ops)割裂,无法实现端到端自动化。

资源获取和研发环境准备效率低,通常需要走冗长的审批流程,缺乏标准化、服务化和自助式IT能力。

部门墙厚导致代码到业务上线周期长:开发人员不知道最终如何部署、测试人员不清楚测试重点和风险点、运维人员不了解架构由来和约束等。

割裂式的研发模式无法实现代码到上线的端到端自动化,业务开发上线周期长,运维效率低。

当前业界的三个生态

DockerSwarm

部署容易:内置于最流行的DockerEngine内,部署安装比较简单,仅需要2个命令。

无中心化设计:通过Raft协议形成一个多节点集群,没有外置的一致性存储(etcd, zookeeper),也没有中心节点。

网络和抽象支持不足:libnetwork的支持程度不如CNI,仅支持overlay网络,使用概念大多从kubernetes借鉴而来。

Mesos

生态成熟:支持目前大多数大数据应用,Hadoop,Spark,Storm…

二层调度:下层调度框架给上层调度框架提供粗粒度的资源offer请求,上层使用调度算法将任务分配到这些资源上。

使用门槛较高:需要分布式应用开发者有独立的调度算法开发能力,且使用C++开发,周边支持较弱。

Kubernetes

抽象概念合理:Pod,Service,ClusterIP,Label,ReplicaSet,StatefulSet…

和具体容器实现解耦:支持docker/rkt等,仅把容器当成一种特殊的运行时。

和I层对接还有待完善:组件较多,在多种公有云上部署还需要独立的集群管理组件,存储、网络均依赖于I层。

FusionStage2.0介绍

传统IT全面云化转型的三阶段渐进式演进建议

从大企业IT转型实践看,传统企业应用架构发展需要经历三个阶段。

虚拟化:大团队开发周期长、手工式运维、利用率低10~20%。

自动化:具备部分DevOps能力,自动部署与伸缩、提升利用率50%。

AllCloud:兼容微服务和传统服务并存,全自动化运维、线性无极伸缩,利用率70%。

PaaS平台是企业IT云化转型三阶段演进的核心平台。PaaS核心是封装应用系统云化、微服务化的分布式复杂性。三个阶段是需求驱动的,各个应用可以根据自己的需求选择。

Fusion Stage平台功能定义

微服务治理框架:为应用提供自动注册、发现、治理、隔离、调用分析等一系列分布式/微服务治理能力,屏蔽分布式系统的复杂度。

应用调度与资源管理框架:打通从应用建模、编排部署到资源调度、弹性伸缩、监控自愈的生命周期管理自动化。

应用开发流水线框架:打通从编写代码提交到自动编译打包、持续集成、自动部署上线的一系列CI/CD全流程自动化。

云中间件服务:应用云化所需的数据库、大数据、通信和应用中间件服务;通过服务集成管控可集成传统非云化的中间件能力。

一、应用调度与资源管理框架

以应用为中心进行统一资源管理和调度,易于管理。

混合编排:扩展Kubernetes的Pod定义,用于部署进程类应用。

统一资源管理:支持对接主流异构I层(OpenStack, Vmware…)。

关键特性:跨DC/Region/AZ的部署和管理。

跨域集中部署:RDC、DC、AZ、集群等层次化部署。

应用建模设计器:免除脚本编写部署描述文件,支持灵活的部署策略。

感知应用的部署算法:亲和性——就近部署,就近路由,减少网络消耗;反亲和性——高可靠性考虑,减少宕机影响,避免干扰。

关键特性:通过联邦技术实现应用多集群资源共享。

按集群特性调度:某些应用只支持部署到特定集群上,例如特定的region,特定的服务提供商等。

集群间应用自动迁移:在某个集群容量溢出,或故障时,应用能够自动在不同集群间迁移。

跨云管理:能够将负载部署在不同的云提供商,并能够很容易的在不同的云提供商之间自动的增加,减少业务量,自动迁移。

扩展集群规模:百级集群,千级主机,万级容器。

二、微服务运行与治理框架

多语言:支持多语言的原生接口。

可扩展:提供可扩展框架,支持不断扩展微服务的高级能力。

高性能:链路复用、按需建链等技术实现高性能服务通信。

高可靠:采用可隔离仓、熔断机制等技术,保障用户应用的高可靠性。

可监控:采用跟踪链分析,可监控端到端服务调用链、各服务的调用频率、时延等各项指标。

关键特性:开放微服务治理架构,支持多语言、多技术堆栈微服务互通。

统一微服务治理标准:通过服务治理客户端,处理微服务与服务治理中心的交互。

插件式多协议自动转换:提供协议插件框架,支持协议插件热拔插,通过协议插件与不同通信协议对接。

跨技术堆栈互通:使用RESTFul,自定义高效RPC等多种协议,保证高效的跨语言微服务通信的能力

关键特性:海量微服务调用链跟踪和监控,支持与客户现有监控系统进行对接。

支持平台、资源、应用的监控和微服务调用链分析。

大规模:支持百万容器监控,秒级查询响应。

兼容集成:和企业现有监控系统的对接,保证运维人员的体验。

高可用:调用链跟踪与协议无关,非侵入,低损耗。

关键特性:中间件服务的统一接入与管控。

集中管理所有服务,统一的服务模式;

应用透明服务模式,应用开发不需要修改;

支持第三方服务接入,可以扩展企业既有中间件;

提供标准化的中间件服务的接入和管理的能力。包括部署和伸缩管理,实例监控,计量等功能。

三、高性能、灵活定制的应用开发流水线框架

挑战和诉求:

软件环境供给慢:开发环境分散管理,开发环境配置发放慢(~1周)。

环境不一致出错率高:整个开发环境由不同部门人员运维,开发人员自行部署、配置中间件、依赖包等,出错率高。

保持现有使用习惯:已经在现网使用的工具链如何保留。

关键技术:

可定制化流水线:流水线流程可按客户的组织定义进行定制。通过自定义流水将所有步骤串联,实现全流程自动化。

客户工具插件式接入:客户现网使用的工具可以通过插件的方式接入。

ELB服务:高可靠、高性能弹性负载均衡

华为内部广泛使用,双11抢购考验,保障高性能高可靠;

提供跨AZ的负载分发能力,提高可靠性和运维便利性;

提供自动弹性扩展能力,可以按流量自动调整规格;

部署支持线性可扩展,无单点故障;

提供私网和公网两种类型;

支持L4和L7负载均衡;

支持Https协议和证书管理;

DCS服务:高速分布式缓存DCS

使用特点:高性能读写(百万级并发),数据量G级别,多种数据类型,需要持久化。

解决问题:提高数据查询和读写效率,减轻管理维护工作量,降低数据库存储成本。

DMS服务:高可用、分布式消息中间件服务DMS

提供WEB Console管理消息队列;

提供消息API 使用消息队列;

支持消息队列的创建、查看、删除;

支持消息队列的消息发送和消息消费;

支持多个消费组同时对一个消息队列的消息进行消费;

支持消息API访问的安全认证;

支持消息队列的使用统计监控。

今天的分享就到这里,谢谢大家!


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33889245/article/details/87945211

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签