写点什么

话费系统、加油站、Qumranet 与红帽:一个 oVirt 开发者的编程人生

  • 2013-06-04
  • 本文字数:4197 字

    阅读完需:约 14 分钟

在 2013 年 5 月 8 日、9 日举办的 oVirt 研讨会上,InfoQ 对红帽工程师 Doron Fediuck 进行了一次采访。Doron 来自以色列,是前 Qumranet 员工,现在在红帽的一个虚拟化项目中任团队经理。在下面的采访中,Doron 会介绍他加入这个项目的过程,以及他对 oVirt 和其他虚拟化项目的一些看法。

InfoQ:Doron 你好!刚才我听了你针对 oVirt SLA 讲的课程,感觉很有意思。能否先简单的做一个自我介绍?

Doron:当然可以。我在 1998 年加入 IT 行业,一开始的工作是在一家名叫 Amdocs 的以色列公司。这家公司做手机的管理系统,比如手机运营商的计费系统和客户管理系统等。当时我还是个学生,跟着公司的项目也去拜访了不少大公司,了解到不少新鲜事物,包括人们是如何处理大数据的过程。1998 年到 1999 年前后,正是手机产业的革命性阶段,当时的一大挑战在于处理来自交换机的大量信息,包括为每个用户生成每个月的费用单等等。

InfoQ:你是从那时开始了解有关网络和硬件相关的知识的吗?

Doron:我对网络研究的不深,只是知道它是怎么回事而已。当时我主要的工作是在费用单系统这块。我当时是“费用单预备”系统的小组组长,这一块工作涉及很多数学计算,比如每个用户签的是哪个合约,他是在白天还是在晚上打电话,他在哪个国家,那个国家的税率是多少,等等。

后来,公司派我去悉尼建立一个支部。我在那里学到了一些安全相关的知识,因为澳大利亚在政策上要求进行欺诈侦测。在 SIM 卡出来之前,复制一个手机身份、盗取手机上的信息很容易,所以我们需要对安全方面进行加固。

这样做了一段时间之后,公司希望我往经理的方向发展,但是我当时还很年轻,想多深入行业业务,不想做经理,于是我加入了另一家以色列公司,接触到一些网络和嵌入式系统方面的项目。

我们的第一个项目是针对加油站做的。我的公司有一项专利,就是在汽车里面有一个内置的信用卡。大企业会购买这种设备放到公司的汽车里面去,当员工开着这辆车去加油站的时候,加油的油嘴上有一根天线,能够直接从设备上的信用卡读取数据,进行验证;验证通过之后,油嘴就开始加油,同时油钱会直接从信用卡上扣除,员工无需另外付费。大公司用这种方案的好处在于省钱,因为加油站对大公司是可以提供折扣的。当时做这个项目的时候,我对金融的交易过程、网络协议这方面都研究了很多。这套系统一开始的原型是采用 Linux Slackware 配合 SSD 做的。在 2001 年,SSD 还不多见,不过我们拿到的工业 PC 上配置的就是 SSD。原型做出来之后,我们提供给荷兰的一家加油站试用,结果用了两三个星期也没遇到什么问题。

这个项目之后,我进入了另一个完全不同的项目,跟安全相关:PKI、数字签名、加密等等。有一个项目是网络安全相关的,用于进行企业内网的权限管理。比如一个陌生人进入一家公司,拿着网线接入,尝试通过以太网连接,那么他需要获取一个 IP。当时的很多企业用的是很简单的 DHCP,这样陌生人就可以轻松获得一个 IP。即使有些企业关闭了 DHCP,这个陌生人仍然可以尝试手动给自己分配静态的 IP,最终成功连入企业网络。我们做的系统就是为了防止这种任意接入的问题。这个方案跟后来的 802.1x 标准要实现的目标是一样的,即 NAC。

2008 年,我的一个前同事给我打了一个电话,他当时刚加入一家创业公司,公司的名字是 Qumranet。他说他们在做虚拟化,需要我过去帮忙。我就跟我的经理打个招呼,请了一个月的假期,去他那里帮他解决一些 C++ 的问题。本来我跟 Qumranet 只是短期合同的关系,但在这段时间,我之前的公司出了一些问题,面临破产;而在同时,红帽宣布收购了 Qumranet。于是在 2008 年 12 月 1 日,我成了一个红帽的员工。

InfoQ:很有意思的经历。你加入红帽之后,做的仍然是虚拟化方面的项目吗?

Doron:是的。Qumranet 的人都非常有创造力,而他们在早期折腾的一些东西,后来都逐渐发展成为 Spice 和 oVirt 这样的项目和产品。KVM 和 oVirt 实际上是同根而生。从 KVM 诞生之日起,我们就决定要有一个管理它的系统,因为我们不可能靠脚本实现所有的操作。oVirt 就是这样诞生的——只不过一开始叫 Solid Ice 这个名字。

我在早期的项目之一是将 oVirt node 和 oVirt 进行集成。oVirt node 相当于虚拟机系统,是宿主机的子集:oVirt node 会包含所有相关的软件包,我们要做的是让虚拟机能够跟 oVirt node 进行交互。之前,我们已经在 RHEL 上实现了类似的功能,不过 oVirt node 的情况跟 RHEL 不太一样,我花了好几个月才把它搞定。

之后的项目是 VDSM,我们开始为 oVirt 存储撰写早期代码。当时我跟 Ayal Baron 一起做这一块,他现在是 oVirt 存储项目的经理。

InfoQ:之前在 Qumranet 的项目都是用.NET 编写的,后来全部用 Java 重写?

Doron:是的。由于 Qumranet 是初创企业,选择.NET 能够非常快速的写出东西来。早期的管理系统都是 C#写的。Web 部分完成了之后,整个集成没花费多长时间。虽然我是个搞 Linux 的,对.NET 不怎么喜欢,但那种快速开发、快速实现,的确很管用。事实上,当时的一些思路,比如热迁移的实现,如何从管理应用对整个系统进行监控等,后来的 OpenStack 项目中也有所借鉴。

总之,后来我们按照已经理顺的思路将整个项目用 Java 重写,操作系统也从 Windows 迁移到 Linux。在这个过程中,有些组件进行了改进,有些还是遗留代码。项目本身总是会有改进的空间。不过跟之前很不同的一点就是,迁移之后——尤其是去年这段时间,我们看到了大量来自社区的参与、贡献。Linux 社区的动力非常大。而且,oVirt 项目在 UI 这块,来自社区的贡献很多,因为 UI 这块只需要搞 JavaScript 就行,无需修改引擎本身。无论你使用 Nagios 还是其他什么系统,都可以很轻松的进行集成。最近两三个月,也有不少对 oVirt 的贡献进入了下游的 RHEV 产品,我觉得这非常好。

InfoQ:电信领域对 SLA 的要求是非常高的。你加入红帽之后,感觉这方面最大的区别是什么?

Doron:主要是情景的不同。打一个电话,和管理一台虚拟机,是完全不同的情景,不过有些概念是通用的。两个情景都需要 SLA。而且时代不同,同一个领域的情景也会不同。

比如在早期的电信时代,经常会发生一种情况:你打一个电话,打了 30 秒之后就掉线了;然后你重新拨打,通话了 30 秒,又掉线了。这是非常糟糕的 QoS(服务质量),不过在那时候的以色列,某运营商提供的服务就是这样的。

现在,大家用手机都要上移动网络,我们关注的是我在手机上能下载多少东西,是不是可以直接在线观看视频等等。大家谈论的是手机网络的 QoS。

虚拟化领域,虚拟机也有类似的需求。比如存储,现在的共享存储都是基于网络的,所以如果网络不稳定,你的存储也会不稳定甚至失效。另外,如果你的物理 CPU 过载,你的虚拟机也会很难受。

无论是哪种场景,QoS 的本质无非是:我们愿意付出多大代价换取好的体验?所以,我以前在其他领域积累的经验,经常能够在另一个领域看到对应问题的解决思路。

InfoQ:你刚才的演讲中提到 oVirt 和 OpenStack 有很多合作和组件共用。红帽内部也有 OpenStack 的团队。你们是如何分工的?

Doron:oVirt 项目内部有不同的小组,每个组专注的方向不同。存储组专注于存储,这个组跟 OpenStack 的存储组有非常密切的合作,目前在一起做一些 Glance 方面的集成工作。

网络组也是一样。我的同事 Dan Kenigsberg 就在网络组,他们也在观察 OpenStack 的网络组件,寻找可以相互借力的点。第一个 oVirt 研讨会是由思科主办的,当时的一个分享有关 OpenStack 的 Quantum 组件。他们组就研究了 Quantum 的工作原理,并提出了集成两个项目的 PoC(Proof of Concept)。同时,社区中也有人在进行同样方向的工作,比如惠普的工程师就提交了一个蓝图,让 OpenStack 使用 oVirt 集群作为计算节点,以及为 oVirt 创建模板,让 Glance 可以使用 oVirt 的镜像模板组建 OpenStack 环境。

OpenStack 和 oVirt 的受众是不同的,不过双方合作对大家都有好处。我们可以借力 Quantum 在网络上的成果,Glance 可以使用我们的镜像和集群,这样大家都方便很多。我们最近在评估对 oVirt 任务计划进行重写,也研究了不少 Nova 任务计划的代码。Nova 的很多观点是很好的。如果重写后的实现方式足够贴近,用户很可能能够在两个项目之间复用代码。

InfoQ:oVirt 的配置过程很简单吗?要知道,很多人吐槽 OpenStack,就是因为它的配置太复杂。

Doron:当然。在 Qumranet 的时代,我们就在致力于简化这个过程。刚才我提到的 oVirt node 项目,就是为了让用户能够在两分钟内添加一台新的服务器进入到 oVirt 配置当中。这个过程非常简单。

从 OpenStack 本身的角度,它也没什么错,因为我们的受众不同。OpenStack 的目标是实现大规模的集群,同时,他们对单点高可用也没什么需求:如果一个 VM 死掉了,他们可以启动一个新的 VM,没什么关系。

oVirt 实现的是一个虚拟数据中心。如果我的邮件服务器挂掉了,我需要 1 分钟内把它搞回来,同时我也不想丢数据。所以我们需要简化操作:自动完成虚拟机系统的安装,保持用户操作方式的一致,改进稳定性,改进 UI 等。整个 UI 的 Web 应用是一个 GWT 应用,有用户界面和管理员界面。在新版的网络管理界面,你可以使用拖拽来将两个网络接口联合成一个绑定,这都是非常简单直观的操作。

社区里还有人呼吁开发 Android 和 iPad 的 oVirt 客户端。实际上一开始社区里有一个 Android 客户端,叫做 Nomad 项目,是一个非常轻量级的 App。不过,这个项目很久没更新了,估计是废弃了。但是不管怎么说,我们对这样的项目是非常欢迎的。

oVirt 还有 VDSM hooks 的机制,用户可以通过 VDSM hooks 扩展自己的 oVirt 系统。如果用户愿意将自己开发的 VDSM hook 反馈给社区,可以直接给 hooks 的 RPM 提交一个补丁。我们十分欢迎大家参与这方面的工作。

InfoQ:既然 oVirt 是项目,RHEV 是产品,这是否意味着 oVirt 更多面向工程师,而客户还是直接去购买 RHEV 的服务比较好?

Doron:这个倒是不一定,因为 oVirt 社区里有很多成员已经把 oVirt 作为提供给客户的解决方案。

项目和产品的最大区别就是在于你是否需要靠谱的服务。就算在大企业中,也不是所有的环境都需要服务支持,比如测试环境,你总是可以用 Fedora 和 oVirt 来进行测试的。

同时,项目和产品之间也有点轮回的关系,做好事总是有好报。比如 RHEV,虽说是直接拿了 oVirt 项目的成果去运作,但是 RHEV 使用过程中反馈的 bug 和针对这些 bug 的 fix,也都会回馈到 oVirt 项目中。

2013-06-04 03:352218

评论

发布
暂无评论
发现更多内容

游戏夜读 | 2020周记(3.27-4.3)

game1night

Day 47|Week 07-5 曾国藩家书|问学篇-学问何处何时都可做

熊小北同学

Java并发编程系列——锁

孙苏勇

Java Java并发 并发编程 多线程

从数据闭环谈微服务拆分

松花皮蛋me

微服务

为什么正在使用的Java版本跟环境变量的版本不一致

阡陌r

Java 踩坑

神经网络的激活函数为什么要使用非线性函数

王坤祥

神经网络 激活函数

把成功过成自己的生活

子铭

成功学 生活状态

韦小宝真的幸福吗 | Random Forest

张利东

Python 学习

浅析 Cocoapods-Packager 实现

Edmond

ruby ios CocoaPods binary packager

KubeFATE: 用云原生技术赋能联邦学习(一)

亨利笔记

人工智能 学习 FATE KUBEFATE

关于5G RCS的产品猜想

机器鸟

经济大萧条对我的启示

Neco.W

创业 自我管理 职场 自我提升

MySQL中order by语句的实现原理以及优化手段

天堂

Java MySQL 性能优化

阿里巴巴Java开发手册泰山版解读

Bruce Duan

高仿瑞幸小程序 00 准备工作

曾伟@喵先森

小程序 微信小程序 大前端 瑞幸

学习来应对创业的未知

Neco.W

创业 重新理解创业

InfoQ写作平台首秀,来个自我介绍

nuhcoad

个人感想

MySQL的死锁系列- 锁的类型以及加锁原理

程序员历小冰

MySQL

使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源

mzlogin

CDN Jekyll GitHub Pages 个人博客

死磕Java并发编程(7):读写锁 ReentrantReadWriteLock 源码解析

Seven七哥

Java并发 读写锁 ReentrantReadWriteLock

程序员陪娃漫画系列——魔方

孙苏勇

程序员 生活 陪伴 漫画

即将步入职场,忐忑而又期待的新人菜鸟

菜农阿飞

成长 新人

南丁格尔科普

小匚

如何优雅滴在手机上跑Python代码

王坤祥

Python 移动应用 手机编程

怎样算是一个好的开发者?

水滴

开发者

DDD 实践手册(2. 实现分层架构)

Joshua

设计模式 领域驱动设计 DDD 系统架构 分层架构

说出来就不灵啦

伯薇

糊涂 活在当下 享受状态 生活状态 观察者

Netty 源码解析(四): Netty 的 ChannelPipeline

猿灯塔

多云的一点思考

HU

消息队列Kafka - acks参数

Java收录阁

kafka

HashMap 的 7 种遍历方式与性能分析

Bruce Duan

Java 性能 hashmap 遍历

话费系统、加油站、Qumranet与红帽:一个oVirt开发者的编程人生_Java_sai_InfoQ精选文章