ZStack源码剖析之核心库鉴赏——EventFacade与CloudBus

2018-02-21
阅读 48 分钟
6.1k
EventFacade是一个很有意思的组件,因为它几乎是自举的。这就意味着有兴趣的朋友可以copy and paste,然后稍作修改就可以在自己的项目里工作起来了。

技巧:ZStack如何做Integration Test

2018-02-01
阅读 28 分钟
5.3k
笔者工作2年有余,刚开始实习的时候是不知道自动化测试这种神器的,在刚开始工作的时候往往苦于救火灭火再救火,搞的心力憔悴,一度怀疑猿生。实践自动化测试后感觉生产力慢慢的解放了,那个时候搞的还是偏单机应用,测试的Cover也是止步在单机应用上。在接触到了ZStack以后,由于其产品化的特性,对软件质量要求偏高,...

ZStack源码剖析之设计模式鉴赏——三驾马车

2018-01-19
阅读 5 分钟
4.6k
随着ZStack的版本迭代,其可以掌管的资源也越来越多。但新增模块的结构却还是大致相同,此即是ZStack的经典设计模式——这套模式也被开发者称为ZStack三驾马车。

苦逼并思考着——我的2017年总结

2018-01-02
阅读 2 分钟
2.9k
前阵子出去玩了一趟,回来思衬着年度总结还没写,就过来补了。 回看,在ZStack待了1年多,从30多人到团队到近百人团队,从A轮前到B轮展望——有好有坏,尽收眼里。一句话概括:我肥了,也变强了。 今年在内部GitLab的Activity记录(六月的时候我们从GitHub上切到了GitLab): 接下来说说今年我在工作中意识到的一些事情吧—...

ZStack源码剖析之核心库鉴赏——FlowChain

2017-12-19
阅读 15 分钟
4.4k
在ZStack(或者说产品化的IaaS软件)中的任务通常有很长的执行路径,错误可能发生在路径的任意一处。为了保证系统的正确性,需提供一种较为完善的回滚机制——在ZStack中,通过一个工作流引擎,ZStack的每一个步骤都被包裹在独立的工作流中,可以在出错的时候回滚。此外,通过在配置文件中组装工作流的方式,关键的执行路...

ZStack源码剖析之核心库鉴赏——ThreadFacade

2017-12-10
阅读 16 分钟
5.4k
在ZStack中,最基本的执行单位不仅仅是一个函数,也可以是一个任务(Task。其本质实现了Java的Callable接口)。通过大小合理的线程池调度来并行的消费这些任务,使ZStack这个Iaas软件有条不紊运行在大型的数据中心里。

【笔记】-Java String

2017-11-09
阅读 6 分钟
2.6k
前言前阵子和同事在吃饭时聊起Java的String,觉得自己之前的笔记写的略显零散。故此又重新整理了一下。String在Java中算是一个有意思的类型,是final类型,因此不可以继承这个类、不能修改这个类。两个小问题我们先来看一段代码: {代码...} 试问:这两行代码执行后,原始的 String 对象中的内容到底变了没有?答案是没...

ZStack源码剖析之核心库鉴赏——Defer

2017-10-03
阅读 3 分钟
3.1k
本文首发于泊浮目的专栏:[链接] 在Go语言中,有一个关键字叫做defer——其作用是在函数return前执行。在ZStack中也有类似的工具类,让我们来看看吧。 演示代码 {代码...} 这段代码是ZStack ManageNode(简称MN)在接收到创建计算规格的请求后的处理逻辑,大致的逻辑即: 在DB中创建一条记录 添加当前账户与该计算规格的关联...

ZStack源码剖析:如何在百万行代码中快速迭代

2017-09-23
阅读 4 分钟
8.4k
ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向的是未来的智能数据中心,通过提供的API来管理包括计算、存储和网络在内的数据中心的各种资源。跟OpenStack相比,ZStack具有易用、稳定、灵活、超高性能等特点。其单管理节点可以管理1万台物理机规模集群,多个管理节点构建的集群可以做到使用一个数据...

小谈日志与其实践

2017-09-04
阅读 3 分钟
4.8k
看了该问题,笔者真是有所感慨:从实习到现在,从接的外包小项目到企业级应用,从觉得日志没什么软用到在客户的环境中排bug在日志中看到蛛丝马迹。不得不说,日志真是太重要了。

MQ学习小记

2017-04-04
阅读 4 分钟
3.8k
消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

看起来很长但还是有用的Spring学习笔记

2017-03-26
阅读 13 分钟
10.1k
Spring致力于提供一种方法管理你的业务对象。在大量Java EE的应用中,随处可见Spring。今天我将简单的介绍一下Spring这个框架。

Java反射学习小记

2017-03-18
阅读 6 分钟
3.2k
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 生成动态代理 很多框架都用到了反射机制,包括大名鼎鼎的Spring。因此,了解反射也可以说是为之后学习框架源码而打下坚实的基础。 即便...

Java多线程笔记(三):线程池

2017-02-15
阅读 13 分钟
3.8k
多线程的软件设计方案确实可以最大限度地发挥现代多核处理器的计算能力,提高生产系列的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。最容易想到的后果就是线程过多导致CPU忙于切换而无力执行其中的工作。

简谈Java Enum

2017-02-15
阅读 4 分钟
2.4k
int枚举是编译时常量,被编译到客户端中,如果枚举常量关联的int发生变化,客户端必须重新编译,如果没有重新编译,程序仍可以运行,但行为就不确定了。

一枚菜狗子的2016总结

2016-12-31
阅读 2 分钟
3.2k
目前我就职于一家做云计算的公司,属于研发岗。这儿人才云集,我觉得我可能是其中最菜的一个。所以还是要感谢创始人的知遇之恩。虽然有点忙,但是我过得很快乐,我可以学到很多东西。

Java多线程笔记(二):锁与闭锁工具类

2016-12-01
阅读 21 分钟
5k
为了更好地支持并发程序,“锁”是较为常用的同步方法之一。在高并发环境下,激励的锁竞争会导致程序的性能下降。所以我们将在这里讨论一些有关于锁使用和问题以及一些注意事项。

谈谈我所理解的面向对象

2016-11-17
阅读 6 分钟
9.1k
“什么是面向对象?”这个问题往往会问到刚毕业的新手or实习生上,也是往往作为一个技术面试的开头题。在这里我们不去谈如何答(fu)好(yan)问(guo)题(qu),仅谈谈我所理解的面向对象。

Java多线程笔记(一):JMM与基础关键字

2016-10-20
阅读 6 分钟
3.1k
比如对一个静态全局变量int i,两个线程同时对它赋值,线程A给他赋值1,线程B给它赋值为-1.那么不管这么2个线程以合作方式、何种步调工作,i的值要么是1,要么是-1。线程A和B之间是没有干扰的。这就是原子性的一个特点,不可被中断。

Java多线程笔记(零):进程、线程与通用概念

2016-09-30
阅读 5 分钟
4.4k
不积跬步,无以至千里;不积小流,无以成江海。在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程、线程以及相关的基础概念。

Java8学习小记

2016-09-23
阅读 13 分钟
28.6k
2014年,Oracle发布了Java8新版本。对于Java来说,这显然是一个具有里程碑意义的版本。尤其是那函数式编程的功能,避开了Java那烦琐的语法所带来的麻烦。

JVM体系结构与工作方式概览

2016-09-16
阅读 6 分钟
6.2k
Java之所以号称“一次编译,到处运行”,主要原因是JVM屏蔽了各个计算机平台相关的软件(大多指系统)或者硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。在本文,笔者将与大家概览JVM的体系结构与工作方式。

浅析JVM之内存管理

2016-04-13
阅读 10 分钟
12.8k
这是一篇有关JVM内存管理的文章。这里将会简单的分析一下Java如何使用从物理内存上申请下来的内存,以及如何来划分它们,后面还会介绍JVM的核心技术:如何分配和回收内存。

Java快速扫盲指南

2016-03-31
阅读 13 分钟
8.7k
本文面向 刚学完Java的新手们。这篇文章不讲语法,而是一些除了语法必须了解的概念。 将要去面试的初级工程师们。查漏补缺,以免遭遇不测。 目前由于篇幅而被挪出本文的知识点: 浅析JVM之内存管理 Java多线程笔记 Java反射学习小记 简谈Java String JDK,JRE和 JVM 的区别 JVM:java 虚拟机,负责将编译产生的字节码转...