Monthly Archives: 十一月 2014

You are browsing the site archives by month.

Neutron 的软件架构

综述

OpenStack 是目前开源界第二大的项目,参与的厂商之多可谓少见,同时作为目前最大的以 Python 作为主要语言的项目,可以说这个项目是经过重重困难发展起来的,算是目前在发展的分布式系统软件大作了,面对这么一个项目,我想我们有很多值得学习和借鉴的地方,因为时间和个人经验的缘故,我在这里主要与大家分享以 Neutron 为例的 OpenStack 软件设计。

Why Python

设计一个分布式系统可以说会面对诸多挑战,这不只是 Python 会遇到的,使用别的语言也会碰到,但是呢,Python 作为一个与 Java 等语言相比不够成熟的语言可能会面临一些其他可能已经在一些语言下解决了的问题,在 OpenStack 社区里就有人提过多次这个问题,为什么我们选择 Python,而非别的语言。

在我看来,一个大型软件的选型是一个复杂的事情,对于 OpenStack,可能第一是因为历史原因。因为我们知道 OpenStack 最早的源代码是 Rackspace 和 NASA 一起贡献的,他们当初内部的选择为我们建立了一个基调,如果再用其他语言重写的话,可能在当时是一个不合实际的考虑;再有,OpenStack 与其说是一个大型软件,倒不如说是一个框架,它的虚拟化来自于 KVM、Qemu 等的支持,它的网络来自于 Open vSwitch、iptables 等的支持,至于存储,也需要 lvm、Ceph 作为底层。那么 OpenStack 是干嘛的呢,它是一个总的调度器,集成这一切功能,完成一个真正的自由云计算软件。做运维的同学一般比较熟的语言都是 Shell、Python,老一点的可能熟悉 Perl,为什么?因为这些脚本语言,很适合做这种调度的工作,或者说它很适合做粘合剂,正如一些人称 Python 为“胶水语言‘一样,它能够方便的粘合各个组件,而且代码量相对少,可以让人专注于高层的事情,而不是为了底层费脑筋;再有,作为一个高级语言,Python 有着一些相对完美的特性,比如社区的有过提交的开发者有数千,活跃的开发者也有几百,为什么 OpenStack 能快速吸引这么多开发者,所有人都是之前就接触过 Python 么?不是的,很多人都是现学的,因为 Python 的基本语法真的很简单,只需要看一个晚上第二天就能阅读 OpenStack 基本的代码了,这对吸引开发者来说很有好处,就像为什么有些公司做项目首先考虑 Java,因为好招人啊!Python 作为一个学习曲线平滑的语言,可以说为吸引开发者带来很多方便。再有,反射、自省这些高级特性也不缺,这位开发带来了方便,丰富的库,比如Paste、Routes、requests、WebOb、alembic、Jinja2 等,更是提升前期效率的利器。

分布式系统中面临的问题

连接建立与服务初始化
事件分离与事件处理程序分派
IPC 与网络协议处理
静态和动态组件
并发与同步

Neutron 简介

因为很多人对 OpenStack 不那么熟,我就先简单介绍下 Neutron 是什么。Neutron 是 OpenStack 的虚拟网络组件,用洋气点的话说,就是一个 SDN 控制器。为什么我们需要虚拟网络?过去我们只给客户提供虚拟机,你花钱,我租你一台,想连接上就再买个公网 IP,就像很多人在 DigitalOcean 做得一样(当然 DigitalOcean 现在也有虚拟网络)。那有了虚拟网络可以干什么呢?我们来看一下 UStack 控制面板里的一张图:
Read More →

六个月没更新博客,很是惭愧,而且六个月也没憋出什么大招来,光给公司写了四篇软文,就没好意思贴到这里。

最近心里颇为纠结,事情也很乱,就写个随笔整理下心情吧。

圈子里的人大概都知道了我现在在 UnitedStack,以此身份还去了些个小会,而且这周六还要在 PyCon 上做个演讲,本以为应该是纯技术的讨论,没想到公司还对会议有赞助,这下又增加了点宣传的任务。我倒不是不愿意,公司在技术圈名声不错,而且也我很愿意为公司做些事情,所以主观上挺高兴的,就是心想自己还是在公司的荫护下啊。

前段时间社区的 PTL,Kyle 跳槽去了 HP,我是从 Cisco 的朋友那里知道这件事情的,Kyle 在博客里完全没提这件事,我和大师兄说,大师兄也不信,因为 Kyle 他在社区里也只用自己域名的邮箱,不用公司邮箱,于是我特意去 Linkedin 查了下,果然跳到 HP 了。想一想,人家这么牛逼的社区 Lead,公司对他来说也就是个名片上的字吧,还不是想去哪就去哪。

牛逼的工程师会有自己的品牌,比如 Kyle,比如大师兄,比如 Linus,有自己品牌的工程师对公司来说应该说不一定是个很好的事情,因为这样他会比较值钱,会有很多人挖他,由他来做宣传活动可能对他个人的宣传效果甚至大于公司,比如 Guido,圈子里的人可能知道他从 Google 跳到了 Dropbox,但是对于很多 Python 开发者来说,Who cares?类似于 C 的创造者,其实也差不多。

我无意将自己去与这些牛逼闪闪的工程师的结晶去比较,但是觉得他们确实因为个人品牌,在与外界交流时增加了话语权,获得了更多的自由。

对,我想说的其实是自由。

想一想自己一直在追求的是什么?为什么要做演讲?为什么写博客?为什么自己自愿的在公司多呆几个小时?为什么下了班还不时连连 VPN,检查下线上的问题?

是为了赚钱么?应该是有的,但我情愿称他为财务自由,原谅我的矫情。

前几天看到有一个词叫做 Fuck you money,大意是攒够一笔钱,但你看老板不爽的时候,你就可以对他说 Fuck you,然后拿着这笔钱过一段自己想要的生活,寻找自己其他想要的工作。

挺有意思的,我和女朋友聊过几次这样的话题,大概说的是,我觉得工作也是为了自己过的爽,觉得有价值,有意义,而不是单单为了赚钱,为了买车,买房。一直很喜欢 Beyond 的歌,而且歌词也很有深意,里面说“原谅我这一生放荡不羁爱自由”。我喜欢这句话,尽管它看起来可能有点像借口。

年少的我还心存了一点改变世界的梦想,我希望能因为我的存在让这个世界更美好一些。不是像马云那样豪情壮志的颠覆什么产业,改变哪个行业,而是期望能借助技术或者其他什么能力,能让一些人,或者某个角落,感受到世界更加美好,活着真爽。

比如 ScaleIO,让存储更快一点,比如 Nicira,让网络更自由一点,比如曲径,让生活更方便一点,比如豆瓣音乐,让音乐更简单一点……

我喜欢这些小而美的企业或者服务,它们是我心之所向,我不知道自己是否终有一天可以做到,但是我觉得自己心里想着这件事情,就很高兴了。可能我的愿望就是这么简单而庞大。

在 UnitedStack,我不知道我们能做成什么样子,或许过去我们很理想,但是为了生存,为了迎合市场我们变了。我不知道我们将来能不能打败那些现在看起来很牛逼的企业,或许过去我们有这个想法,后来屈服了。我不知道我们将来团队是什么样子的,或许有人为了什么外部的原因,为了能让老婆孩子先过得更好离开了。我不知道我们现在做的事情,在一些牛逼的人眼里,在一些市场的领导者眼里,是不是就是一个笑话,或许终有一天,我们会承认,是我们太年轻。

但是,我希望在自己年轻的时候,能够在自己觉得靠谱的地方,做一点事情,试试是不是真的可以用云计算让世界变得更好一点。

我爱这个世界。 Read More →