华为基于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

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签