OpenSource 类别下的文章

Oracle 在 7 月份收购了 Ksplice。使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性。现在该产品已经合并到 Oracle Linux 中。目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了?)

Oracle Linux

今天看到,Oracle 今后将只对 Oracle Linux Premier Support 客户提供 Ksplice 服务(refer)。毫无疑问,这个产品从一定程度上大大提升生产环境(尤其是数据库服务器)的安全性、可靠性和可用性,对购买了 Oracle 相关服务的用户来说,无疑这是个好产品,但对于 Linux 生态来说可能是灾难,尤其是 Red Hat,市场或许将进一步被 Oracle 蚕食,短时间内不太可能找到替代性的产品,看 fork 出来的 Ksplice 分支会怎样吧。Oracle 已经成为 Linux 操作系统市场上举足轻重的玩家,但是不交钱,用户没办法和 Oracle 玩儿。

MySQL 最重要的存储引擎 InnoDB 也控制在 Oracle 手上,当然 MySQL 也在 Oracle 手上。最近的有部分迹象表明 MySQL 部分功能即将闭源。MySQL 官方博客说部分插件只有商业版才会提供,比如 Thread Pool ,官方的测试报告显示,配置了 Thread Pool 的MySQL企业版,在4K个并发链接的情况下展示了良好的可扩展性(refer)。想使用? 交钱吧!

别忘了,Java 也在 Oracle 手里。

--EOF--

本文已经首发于InfoQ中文站,版权所有,原文为年度技术回顾之数据库、NoSQL、开源软件,如需转载,请务必附带本声明,谢谢。

InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、 Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。

年终岁尾,做个总结吧。要说过去的这一年,起码国内的技术会议多了很多,甚至是几千块的门票也有市场了,可能也是物价上涨的副作用?像 QCon(Beijing)、SD 2.0 、微博开发者大会、TUP、UCD 年会、D2 年会、Verlocity(Beijing) 等会议,参会人都非常踊跃甚至有些会议一票难求,这是好现象,相信 2011 年有更多有价值的会议值得我们参加。再说说技术方面的事儿吧,下面是我的几个关注点。

数据库

Oracle RDBMS 、SQL Server 、DB2 等几大商业化产品似乎没什么值得一说的事件。Oracle 公司收购 Sun 之后,MySQL 前途曾一度堪忧,现在看起来 MySQL 生命力依旧顽强,只是在今年开发节奏明显慢了不少,也或许是 Oracle 在调整节奏,不过 5.5 版本的发布还是让不少 DBA 颇为惊喜,除了 InnoDB 成为默认的存储引擎之外,其他的一些特性倒是差不多都来自技术社区的反馈或是驱动,比如来自 Google、Facebook 的改进,多少对新的 MySQL 特性产生了一定影响。值得注意的是,这一年中 PostgreSQL 发展相当的迅猛,随着 9.0 的发布,引入了更为高级的复制技术,弥补了功能上的一个短板,MySQL 的命运多舛给 PostgreSQL 带来了契机,令人感慨。以前我期待的 SSD 虽说已经逐渐成熟,但似乎没有像预期的那样对数据库软件带来更大的影响。

NoSQL

去年的回顾文章中我说到 "就数据管理方式的趋势来看,NoSQL在将来会成为一个非常重要的数据解决方案"。一年之后,NoSQL 的确已经成为网络架构中一个基础的组成部分了。涌现出来的 NoSQL 相关的产品,最成功的要数 MongoDB,在新型 Startup 中颇为流行,赢得了不少创业技术团队的青睐 (比如,引领创新潮流的 LBS 先驱 FourSquare就是采用的 MongoDB ,尽管为此吃了不小的亏 ),创建 MongoDB 的 10gen 技术团队甚至在年底拿到了红杉的风险投资。除了 MongoDB 之外, Redis 的发展也不错。来自名门大厂的 Cassandra、Dynamo、CouchDB 等产品的发展倒是稍显平淡。作为 MySQL 的 NoSQL 插件出现的 HandlerSocket 的让人感到惊喜。这个技术方案会给很多应用场景带来新的契机,相信新的一年会有很多技术团队大胆的采用 HandlerSocket。其它几个 DB,似乎到现在仍没有类似的解决方案出现。

我有一个猜测是 Redis 从 VM 转向 Diskstore 模式后,有可能超越 MongoDB 么?

开源试水

Yahoo! 发布的 S4 不出意外的话,极有可能成为 Hadoop 那样有影响力的项目,对于实时计算领域会带来极大的冲击 。相信今年国内会有用户进行尝试。LinkedIn 开源的 Kafka 也有必要关注一下。针对招聘类网站会有一定的借鉴意义。

2010 或许可以称之为中国互联网企业回馈开源领域的试水之年。先是淘宝网开源平台,淘蝌蚪 (code.taobao.org) 的上线并且推出分布式 Key-Value 存储及高性能缓存系统----TAIR,随后开放了淘宝文件系统以及 WebX 框架,足见诚意。說起 WebX,人人网也发布了自己的开源 Web 开发框架 Rose。然后有盛大创新院开源哼唱检索引擎,随后在互联网口水大战尘埃落定之后,金山的启动金山卫士开源计划,甚至百度也发布了 JavaScript 开发框架 Tangram --喊了一年终于开源了一个产品出来,颇为不易阿。而淘宝系的前端工程师们的开源项目 KISSY 发展也颇为迅猛,推荐关注。更早一些的开源项目,豆瓣的 BeansDB 在年底进行了大幅度更新,再次引起技术社区的注意。此外,射手播放器作者沈晟发布的基于MongoDB的短网址分支项目 SESO 也很有意思,希望能继续发展下去。基于 Key-Value 的开源产品多了不少,天涯也开放了一个 Memlink

以团队为单位进行的产品开源,很容易变成一个只是"公开代码"的项目,开源,还应积极鼓励技术团队成员积极的与技术社区互动,输出更多文档,用更多的案例支撑,这样才能相辅相成,才能取得真正的收益。否则的话,容易被看成为了开源这个"名"而开源,有始无终。

期待在 2011 年,腾讯能在开源领域做点表率?还是网易开源一个游戏引擎呢?只有拭目以待了。也期待国内互联网企业能积极支持开源社区,不要只顾着开源自己的那几个产品。开源比封闭更值得欣赏,心态也比姿态更为重要。

说到开源,顺便说一下"开放平台",2009年喊着做开放平台的各大网站,现在已基本偃旗息鼓,国内这一年中也没有一家将所谓的"开放平台"真正的做起来,倒是经过一年多的铺垫,新浪以微博为基础的的应用平台已经具备了一定的潜力和规模,2011年值得期待。如果说开源,看的是心态,那么,开放平台,则看的是企业的心胸。

2011 做点什么?

眼看着越来越多的解决方案,越来越开放的技术分享,不由得让人生疑:架构是否已经不再重要?其实,构建一般中到大型的站点,已经没什么秘密技术可言(比如,还有人一度放出来"腾讯大讲堂"这样的内部信息资料,颇为戏剧性,但大家看了之后也就是新鲜几天而已,网络中更有价值的信息已经是比比皆是了)。重要的是如何用成熟的技术将产品做好,加快开发节奏,更快改进产品质量。

所以,对我自己而言,新的一年重要的还是回归基本技术,和团队一起将丁香园( http://dxy.com )的产品做好,"望着天上的星,也要看着脚下的坑",关注新东西,更要避免因为技术冒进造成不必要的人力物力浪费,说起来容易,真的做起来,怕是也没那么简单。

--EOF--

有过 MySQL 使用经验的人应该知道,MySQL 要想在线修改个 Schema 结构是个麻烦事,规模不大的表增加个索引造成的锁也可能导致整个 Web 应用宕机。这一点没办法和 Oracle RDBMS 、DB2 等商业数据库相比,甚至 PostgreSQL 也具备联机 DML DDL 的能力。我在过去写过一系列并不成熟的《MySQL 大企业级应用可行性分析》 文章中,也很是担忧这个问题。有些公司想迁移到 MySQL ,也因此而只能采取保守的做法。

不过现在这个缺陷临近被彻底修复。Facebook 的数据库技术团队将 Online Schema Change (OSC) 的代码开源,并且撰文进行了详尽的阐述。这是个很大的技术革新,Facebook 数千台 MySQL 服务器在过去增加个索引需要几个月的滚动升级,现在只需要几天即可。

MySQL 5.1 的 InnoDB 引擎具备 Fast Index Creation 的功能,在创建索引的时候无需复制整个表的内容,但是对于一定规模的大表增加索引,仍然需要花费大量时间,对于在线应用来说,仍然不可忍受。而 Facebook 的 OSC 则进一步进行了改进。对于 MySQL DBA 来说,这是个福音。感谢 Facebook 的员工 Vamsi Ponnekanti 的工作。如果要我说,年度 MySQL DBA 应该授予给他。当然,Online Schema Change 的部分代码从 Shlomi Noach 的 Openark Kit 中派生,建议 Shlomi Noach 一同获奖...

对于 MySQL 来说,我认为这是个里程碑式的时刻,无论 Oracle 将给与 MySQL 多大的投入,其它公司已经主动拿过接力棒。Facebook 技术团队再次立功了!

--EOF--

Update: Facebook 工程师在帖子里说了"Note that the above operations can be done within the storage engine itself, or using an external (PHP) script." 要知道,这并非只是一个 PHP 脚本的实现。我建议技术人员看帖子应该更仔细一些。也不要说这东西你早都想到了之类的技术阿Q的话,我倒现在为止没听到国内一个公司的技术人员做出来这东西。从想法到实现,其实还有十万八千零一公里呢。

MySQL Sunday 见闻

| 10 Comments

Oracle Open World 第一天一般是注册日加上 Keynote,但这次下午安排了 MySQL Sunday 的活动,这倒是 Open World 上第一次出现 MySQL 的活动,去年可能正在忙于和 Sun 整合,来不及安排吧。之前,搜索了一下议程,有两场 Facebook 的工程师的 Session,早早赶到会场,听完虽然感觉料不够多,但也很过瘾。

Facebook 进行分享的两位工程师分享的议题一个为 Advanced MySQL Replication Techniques ,MySQL Team 的 Harrison Fisk 是演讲人,另一个话题为 Success with MySQL ,分享人是 Mark Callaghan,他也是 MySQL Engineering Team 的 Lead,Facebook 有个 MySQL Performance Team,是介于运维护与工程师之间的团队。演讲的过程中除了 Facebook 之外只能听到 Google,其它公司或许不值一提,也或许是 Facebook 和 Google 渊源颇深的缘故吧。

Facebook 的数据库团队之所以能够维护几千台 MySQL DB,和他们对 MySQL 代码层的驾驭能力有很大关系,Facebook 自己就发布了不少 MySQL 的 Patch(在 Lunchpad 上可以找到),另外,Google 发布的 Patch 对他们来说也有很大帮助。此外,Facebook 也是当前世界上最大的 Memcached 用户,MySQL 的压力反而小了很多。基本上 DB 是用来做关系数据的存储以及跨 IDC 的数据同步。Faceook OLTP 环境的一些基本数据:查询响应时间 4ms ,写操作的响应时间为 5ms, 峰值每秒钟读取 3.5 亿行数据,修改行数为 350 万行,网络峰值吞吐量为 38GB,每秒钟应对的查询有 1300 万次。相当的惊人。大一点的表基本都进行了 Sharding,会后问了一下,Facebook 目前也没有使用 SSD,但是在做初步测试。

MySQL_Sunday.jpg
(这是 Facebook 之前的演讲现场,会场人不多,毕竟是第一天报到日)

会场同时也有其它关于 MySQL 的演讲,有关于 MySQL 5.5 新特性的介绍以及一些业界公司的 DBA 分享经验,可惜的是,人不算特别多,可能是听众目标不是集中的缘故吧。很多人的兴趣都还在傍晚时候 Oracle CEO 的主题演讲,当然,那些猛料这会儿大家应该都知道了。

--EOF--

Red Hat 正式发布了企业版 Linux 5.5 版本。原以为这个版本发布不会有太多新鲜的内容,读了一下 Release Notes,还是有不少值得关注的地方。

注意其中有一句话,一定要关注一下,每个逻辑 CPU 推荐至少需要 1GB 的内存。为什么?

这一版本对于虚拟化环境中使用 HugePages 有所改进。系统设定使用 HugePages 之后,Libvirt(虚拟化 API) 针对 Virtual Guest Memory 自动使用 HugePages 。需要技术人员考虑这对虚拟化环境中的 DB 有什么影响?

改进了 Completely Fair Queuing (CFQ) I/O 调度器在某些应用场景下的性能。很多 Linux 用户都不太注意默认调度器的问题。性能上其实还是会有很大差异的。知其所以然才好。

关于 SystemTapValgrind 的引入对于系统管理员来说,是个好消息。前者有助于性能调查,后者有助于内存泄漏分析。

阅读 Release Notes 是个很有趣的事情,技术人针对自己感兴趣的领域可以多关注一些类似产品的特性,用其所长,技术选型上应该采取主动一点的态度。

--EOF--

在 Twitter 上看到笑来和几个推友说起关于提供下载为何不用更通用的 ZIP 文件格式而用 7z 的格式(refer)。这个倒是挺有趣的话题,刚好我也是 7-Zip 的用户,对这个不习惯也由来已久了,也一直不喜欢这个方式。

7-Zip 的默认压缩文件格式为"7z" (扩展名是 .7z) ,就是这个微小的差异给用户添加了很大的麻烦。设想一下,你用 7-Zip 压缩了一个文件,扩展名为 foo.7z ,传给了你的朋友(非IT人士),而你的朋友用的是 WinRAR,这是压缩软件市场上的主流,他看到这个格式之后,他会如何反应? 换个应用场景,如果一个普通用户,从网络上下载一个软件,下载完毕之后发现默认没有软件能打开这个 .7z 为扩展名的文件,他会如何做?

必须要承认,7z 压缩格式有很多优点,而 7-Zip 是个很好的压缩工具软件,但在预设格式上的这个事儿,不折不扣的是在挑战用户习惯。或许有人支持这样的做法,一个支持观点是 7z 格式压缩比更高。这是个很好的理由,不过,那么一点点的压缩比收益,考虑到当前个人用户所用设备的存储能力以及网络支撑能力等,对于单个用户来说,无法抵消使用习惯带来的麻烦。除非全世界都是 7-Zip 的用户,很可惜,现在的 WinRAR 仍然是市场绝对的主流,而 Zip 与 RAR 格式也是事实上的标准。另一种支持观点是现在所有主流压缩软件都支持 7z 格式了,所以使用是合理的。的确,主流压缩软件可能支持了 ,但是,绝大多数计算机用户不知道这个事实,和他们不知道没什么本质区别。或许,会有人认为这是 7-Zip 发展用户的一种独特的手段,如果是的话,那恐怕这是最拙劣的营销方式,形同绑架用户一样。

如果不是市场的绝对主导者,任何挑战用户习惯的的行为无疑是危险的。相比 WinRAR 和 WinZip 来说,作为开源软件的 7-Zip ,只需要使用习惯和前两者一样,而功能甚至都未必那么强,就会赢取大量用户。但是给用户习惯設置障碍的做法无疑是不可取的。如果有人不同意,那么还记得"兼容机"这个词汇吧 ?

开源软件应该多考虑使用习惯上的"兼容性",做网站也是一样,有多少人在设计网站的过程中真的尊重用户的遗留习惯? 而你是如何做的呢?

--EOF--

Movable Type 与 WordPress

| 13 Comments

在几次跳票之后,Six Apart 终于发布了 Movable Type 5。作为少数坚守在 MT 阵地的用户,当然是第一时间升级到新版本进行了一番体验,结果就是这几天正在一点点修改升级后的一些模板上的问题。倒是有活干了。

一点小经验是如果是延续用旧的主题的话,迁移到新的目录后要确保有 "theme.yaml" 这个文件,否则后台点击 Setting 按钮的时候会弹出一个"Can't call method "label" on unblessed reference" 的错误。多数插件都能继续用,可以打开 MT 的 Debug 模式,然后查看 Plugin 列表,会显示哪些插件兼容性不够好。我觉得用好 MT 的一个秘诀就是...尽量少用插件。

总体来看 MT 新版本的确带来了很大改进,除了增加了版本历史功能外,内容结构的组织有更大的改进,模板的可定制化非常好,是目前能看到的 CMS 平台的登峰造极之作。只是从平台的角度考虑恐怕还竞争不过 WordPress ,我个人觉得语言的实现(Perl vs. PHP)造成了二者在最初发展上的差异,进而导致插件上开发的 Movable Type 远远不如 WordPress 容易,而插件的多寡影响功能的完善与丰富性。用户会接受哪一个不言而明了。另外一个影响因素就是更多的主机提供商对 PHP 的支持更为友好,甚至一些提供商提供一键安装 WordPress 的服务。而 MT 的安装怎么也需要用户懂一点点技术才成。

好的工具才会激发写作的乐趣,MT 属于这样的工具

--EOF--

DRBD 与 Pacemaker

| 5 Comments

如果有人问你一台 PC 服务器是否可以达到 99.99% 的高可用,该如何回答呢? 或许没有一台机器能"确保"达到这样的可用率,当然在某个时间段或许不会出问题,但这个肯定是看运气,而高可用基本上是没办法通过一台来达到目标的,我们更多的时候是设计方案确保在出问题的时候尽快接管故障机器,当然这要付出更大的成本。

对于 Oracle 的高可用方案可以参考 Maximum Availability Architecture (MAA) 白皮书,不过 Oracle 并不推崇操作系统级别的解决方案。MySQL 的指导策略倒是更为灵活一些,DRBD® (Distributed Replicated Block Device) 就是个可以考虑的选择。以前关注过这东西,但是据我了解,好像国内实现的案例不多,不知道是不是处于对网卡同步速度的限制考虑。现在这个有了新的转机,在 8.3 版本上已经能够支持 InfiniBand 。而原来通过网卡同步数据块的方式毕竟受网卡延时和带宽的限制,InfiniBand 的支持的实现相信能赢得一部分企业用户的信赖。

DRBD_overview.jpg

Linux Kernel Summit 2009 上这次有对 DRBD 的介绍(注意对数据一致性的介绍),这意味着能正式进入 Kernel 么?

相对专有的集群管理工具,也有开源的集群管理工具 Pacemaker (支持 HeartbeatOpenAIS 标准)可供配套使用。Pacemaker 能够较为灵活的实现主备、N+1 、N-N 等多种模式。感人感觉会比较有生命力。

Pacemaker.jpg

好的开源解决方案就是设计活动木板房,廉价灵活环保,当然,牢固肯定是第一目标。

补充:

根据 MySQLPerformanceBlog 的说法,MySQL 几种高可用解决方案能达到的可用性如下:


HA_ratio.png

--EOF--

<< 1 2 3 4 5 6 7 8 9 10

关于归档

本页包含 OpenSource 类别下的所有文章.

上一类别为 MyLife.

Review 为下一类别.

回到 首页 查看最近发表的文章或者查看所有 归档文章.