ZStack提供一个级联框架,用以散布本来只对一个资源的操作到所有相关的资源。资源可以通过实现一个简单的扩展点以加入级联框架,使得资源的业务逻辑与框架解耦。...资源之间的关系可以被描述为一个有向图: 上图,我们展示了ZStack的主要资源;不同的IaaS软件可能使用不同的术语,上图主要是想让你有一个粗略的概念。...级联框架 ZStack通过一个级联框架解决这一问题;顾名思义,级联框架允许一个操作能从一个资源级联到其他资源。为了解耦整个架构,这个级联框架被作为一个单独的组件创造出来,资源可以按意愿加入框架。...考虑到ZStack没有产生冲突的级联操作,例如,不会有一个操作导致虚拟机在路径A启动而在路径B停止,所以级联操作从不同路径进行多次延伸是没有问题的。...总结 在这篇文章中,我们演示了ZStack的级联框架,这是一个强大的工具,用于扩散操作而不需要硬编码。
动机 在ZStack的伸缩性秘密武器——异步架构(ZStack's Scalability Secrets Part 1: Asynchronous Architecture) 一文中, 我们已经详细解释了异步架构...,它让单个ZStack管理节点能胜任大多数的云端工作负载。...一个管理节点是一个完整功能的ZStack软件。...例如,管理节点可能注册如下所示的服务队列: zstack.message.ansible.3694776ab31a45709259254a018913ca zstack.message.api.portal...通过这种做法,ZStack 隐藏了来自 API 客户端消息路由转发的细节,并简化了写一个ZStack API 客户端的工作。
通过一个工作流引擎,ZStack的每一个步骤,包裹在独立的工作流中,可以在出错的时候回滚。此外,通过在配置文件中组装工作流的方式,关键的执行路径可以被配置,这使得架构的耦合度进一步降低。...注意:在ZStack中,我们可以将工作流中的步骤(step)称为“流程(flow)”,在以下文章中,流程(flow)和步骤(step)是可以互换的。...以创建虚拟机为例,主要工作流程看起来像: 顺序工作流,来源于链式设计模式(Chain Pattern),有着可以预见的执行顺序,这是ZStack工作流的基础。...the workflow has failed with error */ } }); } }).start(); 总结 在这篇文章中,我们展示了ZStack...ZStack还配备了垃圾收集系统,我们将在以后的文章对它进行介绍。
文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.1 1.ZSTACK协议栈的架构 ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些...Tools:工程配置目录,包括空间划分和Zstack相关的配置信息。 ZDO:ZDO目录。 ZMac:MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。...ZigBee2006协议栈ZStack-1.5.2文件目录及说明如下: 打开SmapleAPP项目工程 先看APP层: 从上图可以看出,对于不公的项目,大部分的代码都是相同的,只是在用户应用层,...其中Zmac.c是ZStack MAC层接口文件,Zmac_cb.c是ZMAC需要调用的网络层函数。
在ZStack 的伸缩性秘密(第一部分)异步架构(ZStack's Scalability Secrets Part 1: Asynchronous Architectue) 一文中,我们解释了,ZStack...同步化的:在 ZStack 的伸缩性秘密(第一部分)异步架构(ZStack's Scalability Secrets Part 1: Asynchronous Architecture)一文中, 我们讨论了...#工作队列:传统解决方案 注意:在深入了解细节之前,请注意,我们即将要谈论的队列,和在 ZStack 的伸缩性秘密(第二部分)无状态服务(ZStack's Scalability Secrets Part...消息队列是RabbitMQ的术语;ZStack的队列则是内部数据结构。 在ZStack中的任务是由消息驱动的,聚合消息让相关的任务可以在同样的节点执行,减轻了经典的线程池并发编程的压力。...没有涉及复杂的分布式协作软件,ZStack 尽可能地在争用条件下的屏蔽任务中配合提升性能。
import org.zstack.header.vm.VmInstanceState import org.zstack.header.vm.VmInstanceVO import org.zstack.kvm.KVMAgentCommands...import org.zstack.kvm.KVMConstant import org.zstack.sdk.CreateVmInstanceAction import org.zstack.sdk.DiskOfferingInventory...import org.zstack.sdk.ImageInventory import org.zstack.sdk.InstanceOfferingInventory import org.zstack.sdk.L3NetworkInventory...import org.zstack.sdk.VmInstanceInventory import org.zstack.test.integration.kvm.Env import org.zstack.test.integration.kvm.KvmTest...import org.zstack.testlib.EnvSpec import org.zstack.testlib.SubCase import org.zstack.testlib.VmSpec
org.zstack.compute.vm.VmAllocatePrimaryStorageFlow org.zstack.compute.vm.VmAllocateVolumeFlow...>org.zstack.compute.vm.VmInstantiateResourcePreFlow org.zstack.compute.vm.VmCreateOnHypervisorFlow...> ...ZStack还配备了垃圾收集系统,我们将在以后的文章对它进行介绍。
ZStack的通用插件系统,使得特性可以像插件一样实现(在线程内或在线程外),这样不只能使ZStack的功能得到了拓展,也可以注入业务逻辑内部去改变默认的行为。.../schema/zstack http://zstack.org/schema/zstack/plugin.xsd" default-init-method="init" default-destroy-method... <zstack:extension interface="org.zstack.kvm.KVMHostConnectExtensionPoint"...创建一个新类型的L2网络,却不需要更改其他任意一个ZStack组件的甚至一行代码。这是ZStack保持其核心业务流程稳定的基础。...ZStack Web UI,一个通过RabbitMQ和ZStack编排服务进行交互的Python应用程序,是一个很好的例子。
ZStack 核心架构设计使得 99% 的任务异步执行,因此确保了单个的管理节点能够管理十万级的物理服务器,百万级的虚拟机,数万级的并行任务。...ZStack 通过异步架构来解决这个问题。如果,我们考虑 IaaS 软件系统和数据中心其他设施的关系,IaaS 软件系统其实是一个中间人的角色。...ZStack's 异步架构包含三部分: 异步消息 异步方法 异步 HTTP 调用 1. 异步消息 ZStack 使用 RabbitMQ 作为消息总线以便连接各个服务。...总结 此文,我们阐述了 ZStack 的异步架构,此架构解决了由于并行任务慢而导致的 IaaS 伸缩性问题。...请参考 ZStack's stateless service in ZStack's Scalability Secrets Part 2: Stateless Services。
那些或有趣或无趣的文字游戏让ZStack看起来有一些执着。...如果在任何场合看过ZStack的公司简介,你会发现这种执着的根源。所及之处,ZStack都在重复着自己的定位,“一家专注于产品化、国产自研、开源云计算服务商”。...ZStack创始人兼CEO 张鑫 尽管ZStack因为处于IaaS层,与业务解耦,定制化要求程度低;但并不意味着客户毫无定制化需求。...此后的5月,ZStack又联合阿里云发布 “ZStack云平台 + 阿里云云盾安骑士”一体化产品,成为业内少有的深入到云主机层防护的原生一体化云安全产品。...“ZStack的首要目标,是把核心业务做到更好、更稳定;同时,ZStack会从IaaS层面向上延伸,去拓展更多与IaaS紧密相关的内容。”
ZStack的系统测试系统被设计用于以下两个目标: 复杂的场景:这些场景应该比真实世界的使用场景更复杂,以测试软件的极限。...你可以在ZStack--自动化测试系统3:基于模型的测试中找到细节。...Zstack-woodpecker调用zstack-cli,这个ZStack的命令行工具去从一个XML配置文件部署测试环境。...例如:zstack-cli -d zstack-env.xml 这里的XML配置文件的格式类似于集成测试所用的,一个片段看起来像这样: ......配置文件的例子如下: TEST_ROOT=/usr/local/zstack/root/ zstackPath = $TEST_ROOT/sanitytest/zstack.war apachePath
在ZStack中也有类似的工具类,让我们来看看吧。...evt); logger.debug("Successfully added instance offering: " + printer.print(inv)); } 这段代码是ZStack...为了避免不熟悉ZStack读者理解起来生涩,建议参考其Case在这里,我们将展现一个较为简单的case: public class TestDefer1 { CLogger logger = Utils.getLogger
前言 在ZStack(或者说产品化的IaaS软件)中的任务通常有很长的执行路径,错误可能发生在路径的任意一处。...为了保证系统的正确性,需提供一种较为完善的回滚机制——在ZStack中,通过一个工作流引擎,ZStack的每一个步骤都被包裹在独立的工作流中,可以在出错的时候回滚。...演示代码 就以创建VM为例,在ZStack中大致可以分以下几个步骤: org.zstack.compute.vm.VmAllocatePrimaryStorageFlow org.zstack.compute.vm.VmAllocateVolumeFlow...>org.zstack.compute.vm.VmInstantiateResourcePreFlow org.zstack.compute.vm.VmCreateOnHypervisorFlow
前言 随着ZStack的版本迭代,其可以掌管的资源也越来越多。但新增模块的结构却还是大致相同,此即是ZStack的经典设计模式——这套模式也被开发者称为ZStack三驾马车。...应用层对应ZStack的ManagerImpl,而Base更像是领域层。 应用层 应用层的定义应该是: 定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。...而在ZStack中,的确也像上面说的如此。...尽管保存业务状态的技术细节由基础设施层(在ZStack如DataBaseFacade即是),但是反映业务情况的状态是由本层控制并且使用的。注意,领域层是业务软件的核心。...而如果下层元素需要与上层元素通信,则需要采用另一种通信机制——比如回调或者Observers模式(在ZStack中即是ExtensionPoint)。
org.zstack.header.Service; import org.zstack.header.message.Message; import org.zstack.header.message.MessageReply...org.zstack.header.Service; import org.zstack.header.message.Message; import org.zstack.header.message.MessageReply..."> </zstack:plugin
在ZStack中,Strategy模式几乎是充斥在80%以上的代码中的,接下来我们就来一起看看吧。...CollectionUtils CollectionUtils 这个类是在JDK8发布前常在ZStack中被使用的一个类,代码如下: package org.zstack.utils; import...org.zstack.utils.function.ForEachFunction; import org.zstack.utils.function.Function; import org.zstack.utils.function.ListFunction...; import org.zstack.utils.logging.CLogger; import java.util.*; /** */ public class CollectionUtils...CloudBus的源码分析点击这里,有兴趣的读者可以看一下其实现 小结 在本篇文章中,笔者和大家一起了解了Strategy在ZStack中的使用场景。
通过大小合理的线程池调度来并行的消费这些任务,使ZStack这个Iaas软件有条不紊运行在大型的数据中心里。...这里先参考ZStack中ApiMediatorImpl ,其中有一段用于API消息调度的逻辑。...="http://zstack.org/schema/zstack" xsi:schemaLocation="http://www.springframework.org/schema/beans.../schema/zstack http://zstack.org/schema/zstack/plugin.xsd" default-init-method="init" default-destroy-method...ZStack中的调用绝大多数都是由MQ完成,每一个msg有着对应的超时时间。
本文首发于泊浮目的专栏:segmentfault.com/blog/camile 在前文 ZStack源码剖析之二次开发——可扩展框架中,我们大概的了解了如何在ZStack中进行二次开发。.../zstack-image-1.4.qcow2","mediaType":"RootVolumeTemplate","type":"zstack","platform":"Linux","format".../zstack-image-1.4.qcow2","mediaType":"RootVolumeTemplate","type":"zstack","platform":"Linux","format"...使用Test Case来定位问题 在读本节前,希望读者能够读过以下文章: 小谈自动化测试:从ZStack Integration Test谈起 ZStack的IntergrationTest 我们先将GitHub...上的ZStack Clone到自己的机器上来,如图: 并执行mvn compile,这里理应编译成功: 好,我们切换到test目录下: [root@10-0-86-20 zstack-openresource
全新的开源IaaS国产开源软件—zstack曾于2020年在OSC(中国最权威,最大的开源项目评选中斩获TOP30。...于是zstack正是为了解决这些方面的问题而诞生了! ZStack面向智能的数据中心,操作环境为linux操作系统,具有完备的API接口,环境搭建简单,可部署上万台物理服务器。...ZStack通过完善的API管理数据中心资源,构建软件定义数据中心。用户可选择UI界面或命令行工具管理云平台,与ZStack管理节点进行友好交互。...展望ZStack的未来,我们可以了解到的是ZStack是一直主要面向的是私有云,国内的客户对此也强烈的私有云定义意愿。近来,阿里和电信的选择合作为拥有纯自主知识产权的ZStack获得了能量加持。...数字经济,移动通信,物联网仍然是未来潮流所在,对ZStack充满期待。
安装了 ZStack 的管理节点上只有一个 ZStack 进程,这样避免了很多服务依赖、内部执行因为环境原因发生错误等等问题。...同样是“微服务”架构,ZStack 说实话看起来一点都不像,这是因为 ZStack 的微服务是基于线程的,得益于 Java 语言的成熟,ZStack 用线程来做微服务好问题。怎么实现呢?...我们分析了 OS 中消息中间件常成为瓶颈的原因,与动态队列关系很大,ZStack 通过静态队列、一致性哈希调度消息,很大程度避免了这些问题,因此说 ZStack 在很小的资源占用下完成上万的物理机资源管理毫不夸张...ZStack 的网络模型是很鲜明的。...所以 ZStack 非常欢迎各家厂商与 ZStack 提供整合,也不打算像 Neutron + OVS 实现一个非常复杂的 Driver,毕竟专业的事情还是要交给专业的人来做,在不久的将来 ZStack
领取专属 10元无门槛券
手把手带您无忧上云