ZStack 5分钟 | 核心架构设计特点2:无状态的服务

ZStack云计算架构探秘(一) ZStack架构探秘(一) 接下来几天我们将陆续介绍ZStack的内部架构设计,好让大家进一步了解ZStack是怎么设计和实现的。 这开头的一篇我们将会总体说明一下我们的主要技术点以及ZStack安装部署后的拓扑结构。 在我们设计ZStack的时候,我们有比较明确的设计原则,一切违背原则的方法,就算再好,我们也不会采用。我们的设计原则是: 可分发满足数 阅读详情

在这里插入图片描述

ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向未来的智能数据中心,通过提供灵活完善的APIs来管理包括计算、存储和网络在内的数据中心资源。用户可以利用ZStack快速构建自己的智能云数据中心,也可以在稳定的ZStack之上搭建灵活的云应用场景,例如VDI(虚拟桌面基础架构)、PaaS(平台即服务)、SaaS(软件即服务)等。

上期5分钟和大家分享了ZStack的核心架构设计特点,本期重点介绍:ZStack 核心架构设计特点之可拓展性秘密武器2—无状态的服务。

前言

每一个ZStack服务都是无状态的,简单的开启一个富余的服务实例然后使之负载均衡,就能实现服务的高可用和可横向拓展;此外,ZStack把所有服务封装进一个称为管理节点的进程中,使得部署和管理服务变得尤其简单。

动机

在“ZStack的可拓展性秘密武器1:全异步架构”中,我们论述了异步的架构使得单一的ZStack管理节点足以承担大多数云的负载量;然而当用户想要去创建一个高可用的生产环境或处理非常大的并发工作负载,一个管理节点是不够的。解决方案是建立一个负载均衡的分布式系统,这种通过添加新节点来拓展整个系统的能力的方法被称为横向拓展。

问题

设计一个分布式系统不是一件简单的事情。一个分布式系统,特别是一个有状态的系统,必须处理一致性(consistency)、可用性(availability)和分区容忍性(partition tolerance)(CAP理论)的问题,每一个问题都是非常复杂的。与之相反,一个无状态的分布式系统一定程度上降低了复杂度。第一,因为节点不用分享状态,整个系统的一致性是可以保证的。第二,因为节点都是相似的,对于分区问题系统通常是可以容忍的。因此,通常把一个分布式系统设计为无状态的而不是有状态的。但是设计一个无状态的分布式系统通常比设计一个有状态的分布式系统难得多。利用消息代理和数据库的优点,ZStack建立了一个包含各种无状态服务的无状态分布式系统。

使整个系统无状态的基础是无状态的服务,在讨论什么是无状态的服务之前,我们首先理解什么是“状态”。在ZStack中,主机、虚拟机、镜像和用户等资源是被一个个服务管理的。当整个系统的服务实例不止一个的时候,资源会被分发到不同的服务实例中。假设有10000台虚拟机和两个虚拟机服务实例,理想状态下每个实例会管理5000台虚拟机。

在这里插入图片描述

因为有两个服务实例,在向一个虚拟机发出请求前,请求者必须知道哪个实例管理哪个虚拟机,否则,他将不知道向哪个实例发出请求。类似“哪个服务实例管理哪个资源”的信息就是我们所说的状态。如果一个服务是有状态的,每个服务维护自己的状态。请求者必须可以获取到当前的状态信息。当服务实例的数量改变的时候,服务需要去改变状态。

在这里插入图片描述

状态的改变是危险且易错的,这通常限制了整个系统的可拓展性。为了使整个系统的可靠性和横向拓展性增强,把状态和服务分离开,使得服务无状态是比较理想的解决办法(参考Service Statelessness Principle)。无状态的服务使请求者不需要询问向哪里发送请求,当新添一个新的服务实例或者删除一个旧的服务实例的时候,服务之间也不用交换状态。

备注:在以下文档中,为了简便,“服务”和“服务实例”是可以互换的。

服务和管理节点

通过中心消息代理-- RabbitMQ彼此通信的服务,在ZStack中是一等公民。

在这里插入图片描述

与典型的microservice架构不同,典型的microservice架构中每个服务通常运行在不同的进程或者不同的机器上,ZStack则把所有服务封装在一个被称为管理节点的进程中。文章“进程内的microservice架构”解释了我们这么做的原因。

每个管理节点都是一个功能齐全的ZStack软件。因为包含的服务是无状态的,管理节点不共享任何状态,但仍然需要维护和其他节点的心跳记录,和一个一致性哈希环,我们接下来将详细介绍哈希环。心跳用来监视管理节点是否正常运行,一旦一个管理节点停止更新自己的心跳一段时间后,其他的管理节点将会驱逐它然后接管他所管理的资源。

无状态的服务

针对ZStack的业务逻辑,实现无状态服务的核心技术,是一致性哈希算法。当系统启动的时候,每一个管理节点将被分配一个version 4 UUID(管理节点UUID),这个UUID将和服务名称拼在一起在消息代理上注册一个服务队列。(举例代码详见阅读原文)

备注:你应该已经注意到所有的队列都是以一个相同的管理节点的UUID结尾的。

主机,磁盘,虚拟机等资源也有特定的UUID。和资源相关的消息通常在服务之间传递,在发送一个消息之前,发送者必须基于资源的UUID选择一个接收服务,一致性哈希算法这时候就发挥作用了。
一致性哈希是一种较特别的哈希,当一个哈希表的大小发生变化时,只有一部分键需要被重新映射。深入了解一致性哈希,请阅读http://www.tom-e-white.com/2007/11/consistent-hashing.html,在ZStack中,管理节点组成了一个一致性哈希如下:

在这里插入图片描述

每一个管理节点维护了一份包含系统中所有管理节点的UUID的环拷贝,当一个管理节点添加或删除的时候,一个生命周期事件将通过消息代理广播到其他的管理节点,这将导致这些节点拓展或者收缩环去描述当前系统的状态。当发送一条消息时,发送者将使用资源的UUID哈希得出目标管理节点的UUID。例如,当VM的UUID是932763162d054c04adaab6ab498c9139时发送一个StartVmInstanceMsg,(伪代码详见阅读原文)

有了哈希环,资源UUID相同的消息将被映射到特定管理节点的相同服务中,这点是ZStack的无锁架构的基础(详见下期5分钟:ZStack的可拓展性秘密武器3:无锁架构)。

在这里插入图片描述

当环收缩或者拓展的时候,因为哈希环的固有特性,仅有小部分节点将被影响。

因为使用一致性哈希环,发送者不需要知道哪个服务实例将处理这条消息,因为服务实例将被哈希计算出来。服务也不用维护、交换他们管理的资源信息,并且因为选择正确的服务实例可以由哈希环完成,服务只需要单纯的处理消息。因此,服务变得极其简单且无状态。

除了包含资源UUID的消息(例如StartVmInstanceMsg, DownloadImageMsg)以外,有一种不包含资源UUID的消息,这种消息通常是创造性的消息(例如CreateVolumeMsg)和不进行资源操作的消息(例如AllocateHostMsg),因为这些消息可以被发送到任意管理节点的服务中,他们就被发送到本地的管理节点,因为发送者和接收者在同一个节点上,接收者在发送者发送消息时一定是可用的。

对于API消息(如APIStartVmInstanceMsg),有一个特别的处理方法是他们经常和一个重要的服务ID api.portal绑在一起发送。在消息代理中,一个称为zstack.message.api.portal的全局的队列被所有管理节点的API服务共享,带有api.portal的消息将通过一致性哈希环把消息映射到正确的服务中,从而实现负载均衡。通过上面这种方式,ZStack隐藏了API客户端消息选路的实现,减少了ZStack API客户端代码。(代码详见阅读原文)

在这里插入图片描述

总结
本文演示了ZStack是如何通过构建一个无状态的分布式系统来进行横向拓展的。因为管理节点共享的信息非常少,建立一个庞大的拥有几十或上百个管理节点的集群是非常容易的。然而,在现实中,对于私有云,两个管理节点足够满足高可用性和可拓展性的需求。对于公有云,管理者可以依据负载量大量创建管理节点。因为异步架构和无状态架构,ZStack能够处理现有的IaaS软件处理不了的非常大的并发任务。

以上,就是本期的架构篇补习啦,对架构感兴趣的小伙伴欢迎参考以下步骤自行到官网探索更多ZStack架构相关噢~

产品下载请戳:
https://www.zstack.io/help/product_manuals/maintenance_manual/2.html#c2_1

产品手册:
https://www.zstack.io/help/product_manuals/

Question Time

  1. 实现无状态服务的核心技术是什么?
  2. 无状态分布式系统的优势有哪些?
  3. ZStack能够处理大量并发任务的原因除了无状态服务还有什么?

问题答案都在今日的小课堂中,补习完成记得带着答案到官微(ZStack云计算)后台回复,我们会随机抽取5位爱学习的小伙伴送上一点小心意~

阅读原文包含文中代码噢,需要的小伙伴点击进入官网‘知识库-技术汇-可拓展性秘密武器2:无状态的服务’自取即可!

在这里插入图片描述

实战部署最新版OpenStack和ZStack对比 OpenStack作为目前发展的最为红火的开源云平台项目,已经成功形成了自己的生态圈,得到了各大厂商的关注和支持,笔者从两年前关注OpenStack并尝试手动搭建OpenStack,期间经历了各种部署问题,并最终找到了RDO这样的快速部署工具,得以窥见OpenStack的全貌。从笔者来看,OpenStack虽然正在博得整个云计算技术圈的关注,但从公有云生态圈来说,OpenStack落地过程也不尽如... 阅读详情

相关推荐

基于ZStack构建物联网平台

作者: 朱天顺 一、前言 随着时代的发展与科学技术的不断进步,云计算、物联网技术等也得到迅猛的发展和进步,物联网虽起源于传媒领域,然已在各行各业得到深入的应用;在云计算与物联网共同协作下将采集到的数据进行精准应用,惠及社会,促进国家繁荣发展。在未来随着5G的正式商用物联网技术将会越来越普遍,真正做到万物互联。 本文将介绍基于国内首个自主研发非OpenStack体系的私有云产品ZStack来构建物联...

zstack_org的博客 815

码云最最新的10款开源项目,你必须知道!

不知道大家有没有留意到一个云端软件开发协作平台——Gitee?Gitee能帮助开发者/团队/企业更好地管理代码、项目和研发团队。而且它拥有全面的开源项目分类和推荐,可以帮助你迅速找到有价值的开源项目并参与其中。目前Gitee平台拥有众多的GVP项目,其中不乏有能提高工作效率的优秀开源项目。今天,就给大家盘点了其中的10个优秀开源项目,都是非常实用的工具,用好这些将会让你的生产效率大大提升!现在就跟...

趣谈前端 2168

基于ZStack构建深度学习云平台

前言 深度学习是机器学习和人工智能研究的热门分支,也是当今最流行的科学研究趋势之一。深度学习方法为计算机视觉、机器学习带来了革命性的进步,而新的深度学习技术也正在不断诞生。由于深度学习正快速发展,新的研究者很难对这一技术实时跟进。国内各大公有云厂商都提供了相应的深度学习相关产品,但对于初学者并不那么实用。本文将介绍基于产品化云平台——ZStack,来构建对初学者友好、易运维、易使用的深度学习云平台...

zstack_org的博客 2340

ZStack—可拓展性秘密武器2:无状态的服务

每一个ZStack服务都是无状态的,简单的开启一个富余的服务实例然后使之负载均衡,就能实现服务的高可用和可横向拓展;此外,ZStack把所有服务封装进一个称为管理节点的进程中,使得部署和管理服务变得尤其简单。 动机 在“ZStack的可拓展性秘密武器1:全异步架构”中,我们论述了异步的架构使得单一的ZStack管理节点足以承担大多数云的负载量;然而当用户想要去创建一个高可用的生产环境或处理非常大的...

zstack_org的博客 406

ZStack云计算架构探秘(四): 极简的安装升级

ZStack认为不久的将来的企业内的IT机房一定会云化,不管是采用公有云或是私有云方案。不过当前这个云化进度还是比较缓慢,主要还是发生在有技术有实力的大型企业内部,只有他们有这个实力能够搭建一套IaaS系统。但是随着企业越来越深入的理解云技术能带来的各种好处之后,我们也将会看到越来越多企业往云端迁移。企业如果采用私有云,那么他们要面临的第一个问题就是怎么安装和部署IaaS。作为IaaS的制造商和提

zstack_org的博客 2952

VMware虚拟机实战:5分钟搞定ZStack云平台ISO安装(附避坑指南)

本文提供了一份在VMware虚拟机中快速部署ZStack云平台的详细实战指南。通过分步讲解环境准备、ISO安装及初始化配置,并重点解析了开启嵌套虚拟化、选择网络模式等关键步骤与常见避坑点,帮助用户在5分钟内高效完成安装,为后续学习与测试搭建稳定环境。

flink9streamer的博客 838

ZStack-开源的云计算IaaS(基础架构即服务)软件

官网:http://www.zstack.io/ ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。 [1]  它主要面向的是未来的智能数据中心,通过提供的API来管理包括计算、存储和网络在内的数据中心的各种资源。跟OpenStack相比,ZStack具有易用、稳定、灵活、超高性能等特点。 ZStack成立于2015年9月,总部位于上海,分支机构包括硅谷、北京、成都、广州等地,初...

kozazyh的专栏 3231

API调用之ZStack

phper API调用之ZStack 公司刚好给一个编写ZStack虚拟机启动的任务, 材料就只有一个开发文档 ,附上官网地址:https://www.zstack.io/. 一开始也是没听过 ,不过之前有做过docker项目的API开发,所以也没有那么担心,不过查询了百度上众多文章 ,对宇如何使用的步骤很少,都是一些介绍理论的知识,由于精力不够,所以也没有深刻研读,只是暂时想学会使用的...

weixin_43023551的博客 1110

ZStack 5分钟 | 浅谈核心架构设计特点

ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向未来的智能数据中心,通过提供灵活完善的APIs来管理包括计算、存储和网络在内的数据中心资源。用户可以利用ZStack快速构建自己的智能云数据中心,也可以在稳定的ZStack之上搭建灵活的云应用场景,例如VDI(虚...

chengtuandao1076的博客 742

IaaS开源新项目-ZStack技术架构总览

ZStack 是一个全新的开源 IaaS 软件,吸取OpenStack等前辈的经验,针对各种云的问题重头设计了整套架构,旨在解决IaaS复杂度、稳定性、可伸缩性和灵活性等问题。ZStack 0.6 已经提供了大部分 IaaS 的基本功能,包括:虚拟机管理,存储卷管理,存储卷快照,各种网络服务(DHCP、DNS、SNAT、EIP、PortForward 以及 Security Group)。

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 101

zstack vs openstack 你怎么看?

ZStack和OpenStack都是云计算领域的重要软件,它们在私有云和混合云的构建中扮演着关键角色。下面是对两者的比较:设计哲学:OpenStack:它是一个开源的云计算管理平台,旨在提供全面、灵活且可扩展的云计算服务。OpenStack支持多种类型的云服务,包括IaaS、PaaS和SaaS,并且具有一个庞大的社区支持。...

650

SDR实战(四)-AD9361使用手册(三)

本节定义了并行数据端口和串行外设接口(SPI),它们使得AD9361与基带处理器(BBP)之间能够传输数据和控制/状态信息。图63展示了这些接口,并提供了AD9361和BBP在宽带无线系统中使用方式的高级概述。数据接口以两种模式之一运行:兼容标准CMOS模式或兼容低压差分信号(LVDS)模式。每个接口都具有以下部分描述的独特特性。使用CMOS模式时:保持了单端-CMOS逻辑兼容性。可以使用一个或两个数据端口。使用两个端口可以提高数据吞吐量。

hutx0924的博客 6246

ZStack基本工作原理

目录 ZStack基本工作原理 1 摘要 1 前言 2 1、ZStack协议栈介绍 2 1.1、ZStack 2 1.2、ZStack协议栈的架构 2 2、 ZStack协议栈工作 4 2.1、ZStack的实现 4 2.2、ZStack OSAL API 介绍 5 2.3、ZStack的工作函数 6 参考 8 ZStack基本工作原理 摘要 ZStack是下一代开源的云计算IaaS(基础架构即服...

weixin_44808074的博客 1万+

告别偏色!手把手教你用i1Profiler 3.5为喷墨打印机制作专属ICC曲线(附D50/D65光源选择指南)

本文详细介绍了如何使用i1Profiler 3.5为喷墨打印机制作专属ICC曲线,解决设备偏色问题。从色彩管理基础、软件配置到色块打印与测量实战技巧,逐步指导用户完成曲线制作,并提供了D50/D65光源选择指南,确保色彩还原精准。适合摄影师和设计师提升打印质量。

weixin_30613343的博客 1万+

第 3 天:Actor 是什么?创建你的第一个游戏对象!

本文详细介绍 Actor 在 Unreal Engine 5 中的作用,并通过 C++ 创建你的第一个游戏对象。你将学习 Actor 的生命周期(BeginPlay、Tick)、如何添加组件(Static Mesh),并让 Actor 在游戏世界中运作。同时提供 常见问题解决方案,助你快速上手 UE5 C++ 开发!🎮 跟随本教程,构建属于你的第一个游戏对象!

m0_37643873的博客 2632

zstack与openstack区别

针对采用OpenStack部署云平台的复杂性,优快云此前介绍过的ZStack是另外一种解决方案。本文是ZStack的深度试用报告,分别从部署、架构和网络三个层面介绍作者的试用体验,并与OpenStack进行简单对比,文章最后也对ZStack的改进方向提出了思考。以下为全文内容: “这是最好的时代,也是最坏的时代”。这句名言也是当前云计算大环境的真实写照。云计算给企业带来极大的便利,不但能够

tutubuchicao的博客 1万+

STM32 RC522串口驱动程序 (简单直接)

rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" /////////////////////////////////

qq_42074368的博客 9003

从开源到商业:ZStack如何用全异步架构挑战VMware生态霸权?

本文深入探讨了ZStack如何通过全异步架构技术创新挑战VMware在虚拟化市场的霸主地位。ZStack的无状态服务设计、无锁并发模型和进程内微服务架构,使其在性能上大幅超越传统方案,API吞吐量达12,000 QPS,虚拟机启动时间仅3.2秒。文章还对比了ZStack与VMware、阿里云等主流虚拟化平台的性能指标,并展示了其在金融、电商等场景的应用优势。

eee77的博客 750

Vue3 - Element Plus上传组件el-upload上传多个文件时,让on-change监听事件仅执行一次并获取最终文件列表方法(开启多选文件并手动上传,拿到文件列表统一循环调用接口上传)

vue3,elementplus,Upload上传,el-upload,文件上传组件,上传组件on-change里执行多次,取消自动上传后change重复执行问题,upload上传多个文件后导致on-change执行多次拿不到最终文件列表,Element-plus的upload组件on-change不断执行怎么办,上传多个文件多次执行调用,上传多个文件时如何只执行一次on-change方法拿到最终的文件列表,vue3elementplus上传组件开启多个上传后导致change方法执行好几次,仅调用一

🏆 前端领域优质创作者 1万+

南方cass9.1【Frame主框架程序没有加载】解决方法(附安装包)

南方cass9.1【Frame主框架程序没有加载】解决方法。

weixin_46066938的博客 3万+

本土IaaS佼佼者,ZStack正式入驻Gitee

​IaaS(Infrastructure-as-a-Service,基础设施即服务)的概念在开发者心中可能不如 SaaS 或 PaaS 那么令人印象深刻,但作为最基础的服务,其重要性并不亚于其他两者。 而 ZStack 就是国内 IaaS 服务中的姣姣者,凭借着其全新的、自研的架构,2015 年上线以来已经为超过 1200 家企业客户提供了云产品和服务。 更难能可贵的是,ZStack 在商业化与开源中找到了平衡,在为企业客户提供服务的同时,其开源的社区版本也收获了超过一万名的用户,并逐步建立了国内最大的

ZicoChan的博客 559

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1549

全球化2.0|云轴科技ZStack联合Teleplex举办技术沙龙 · 吉隆坡站

为全球用户提供更加优质、高效、可靠的云产品和服务

ZStack_io的博客 1191

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ZStack社区攻略转贴第三弹 | ZStack安装部署大全,拿走这篇就够了!

记得从我还是个小白,只知道两三个架构时候,就发现ZStack是其中相对简单的,这种简单不是概念上的简单,而是操作上的。就拿一个安装部署来说吧,我真的不知道还有什么云平台能30分钟之内部署完成的。就这一个,就足以让我对它刮目相看。 我看他们新品的下载链接也出来了,我这么好当然也要分享出来了,想测试新产品的就自己戳进去看吧~ 超融合一体机——ZStack Mini ZStack Mini试用下载链...

zstack_org的博客 3389

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 如何构建“正确的”云平台存储
下一篇: ZStack实践汇|私有云网络应用模型
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值