28
Jan

Oracle+Sun产品战略

今日乘着上班的空隙和下班后的一点时间,基本看完了Oracle+Sun产品战略Webcast和Presentation中的绝大部分,并在Twitter上做了中文的”推播”,整理于此,希望能对此次合并感兴趣的朋友有所帮助。

操作系统:
OS方面,埃里森大叔说:我们有世界上最好的Linux和Unix,任君挑选。个人觉得在Linux前面加上企业级更为妥当,要说RHEL/OEL是世界上最好的Linux,有几人会同意?这个问题根本就没有的答案。

以下是直接来自Presentation的内容,我就不翻译了:

Solaris And Linux Advantage
With Solaris and Linux, Oracle provides the industry’s most complete and open operating systems offering in the industry.

  • With Solaris, Oracle offers industry-leading scalability, reliability, security and performance through superior technical innovation
  • With Linux, Oracle delivers world-class support and technology leadership for the most widely deployed open source operating system

不知何时Solaris已经是Oracle Solaris Operating System了,定位就像猜测的那样,高端企业级用户。Webcast里着重讲ZFS,内置虚拟化技术,安全性,DTrace和自我恢复能力(原地复活?)。这样的话Oracle就拥有了最好的Unix操作系统和一个不错的企业级Linux发行版本。

目前Solaris主页还残留着一点Sun的印记,相信很快就会被彻底抹去,换上白底大红字。大家再最后看几眼吧,时日无多了。
http://www.sun.com/software/solaris/10/index.jsp

注意:Webcast和Presentation中都未提及OpenSolaris项目和Solaris Express Community Edition。

Linux方面,Oracle也将继续对Linux社区贡献代码。例如现在已被我们所熟知的,并已被认为是主流,被引入Linux内核的Btrfs,Oracle Cluster File System 2(OCFS2)。

更多的详见:http://oss.oracle.com/

虚拟化:
Oracle VM和VirtualBox将会被整合,外加Solaris中已有的虚拟化技术,组成了从桌面到数据中心,一个完整虚拟化解决方案。VirtualBox将会被重新命名为Oracle VM VirtualBox,专注于桌面虚拟化领域和新特性的引入,扮演类似于VMware Workstation,VMware Fusion(Mac)的角色。事实上在技术上,VirtualBox已经大有超越VMware Workstation,后来居上之势,尤其是3.x引入Teleportation实时迁移特性之后,非常看好之。

Oracle VM将是战略性产品,除了原有的x86/x86_64架构支持之外,SPARC架构支持很快会被加入。注意Oracle VM Server for x86和Oracle VM Server for SPARC是不同的,具体的可以参考Presentation16页。

谈到Oracle VM的优势时,Edward Screven – Chief Corporate Architect主要提到了如下几点:

  • 无许可证费用
    包含实时迁移和高可用特性,当然需要支持的得付费。
  • 完整的产品组合
    从桌面到数据中心,架构支持x86/x86_64和SPARC。而VMware仅支持x86/x86_64。
  • 易于部署和管理
    有Oralce VM template简化虚拟机的创建,Oracle VM Manager和Enterprise Manager进行监控和管理。
  • 高性能,低资源消耗/开支(overhead)
    运行Oracle数据库和企业及应用,搭建高可用集群的最佳选择。而VMware解决方案在负载过高时性能表现不佳。

说到VMware的解决方案的时候,提到VMware过于专注在虚拟化技术层面本身,而没有考虑到企业级应用中实际会遇到的各种问题。并说用VMware的解决方案相当于额外引入了一个虚拟化层,相对于Oracle VM来说,增加了IT基础架构的复杂性。

办公套件:
OpenOffice.org将作被作为一个独立的(开源)全球业务部门来管理。Oracle将保留Sun的开发和支持团队,继续开发和支持OpenOffice.org,以便和现有的产品线整合。用户还将看到StarOffice,StarSuite改名以融入Oracle产品线,Oracle将专注于OOo与BI和Content Management系统的整合。

此外还将会有一个基于Web的Cloud办公套件诞生,跨平台,可以再任何浏览器(包括移动设备)上使用,将使用ODF格式。

Java Virtual Machine (JVM):
Sun HotSpot JVM和BEA JRockit JVM都是strategic JVM,两者将会被整合起来。但不知道整合起来的JVM叫什么,也如何定位。

Java应用服务器:
目前Oracle拥有4个Java应用服务器,毫无疑问WebLogic Server是其中的王中之王,也是业界企业级应用服务器的标杆。

GlassFish还将继续是Java EE的参考实现,也将将会成为新技术和新标准的试验田,类似于Fedora和Red Hat Enterprise Linux,OpenSUSE和SUSE Linux Enterprise Server之间的关系。

Sun Java System Web Server和Oracle Application Server将则功成身退,归隐山林。不过应该会继续对现有的用户提供支持,Lifetime support policy放在那里。

Java IDE:
JDeveloper是Oracle的Strategic开发工具。不过我个人不是很喜欢这个东西,也不适应ADF,可能是Eclipse用多了,习惯问题。

NetBeans则将继续作为Java开发者首选之轻量级开发工具,专注于Java EE6,Java ME,添加更多动态脚本语言支持。

Eclipse方面,Oracle还将继续是该项目Strategic Member,会继续向其贡献代码。也会继续更新Oracle Enterprise Pack for Eclipse(OEPE),这是BEA WebLogic Workshop(Oracle Workshop for WebLogic)和BEA Workshop Studio的替代品。

Portal:
Portal又多了一个,达到了前所未有的5个。WebCenter Suite是Strategic产品,WebCenter Interaction(Plumtree/ALUI)目前是作为WebCenter Suite的一部分来卖,和WebLogic Portal一起都会继续被开发并整合到WebCenter大家族中。Oracle Portal和Glassfish WebSpace Server,基本上是等着退休了。

大家最关心的MySQL之命运:
MySQL将作为独立的(开源)全球业务部门运作,有独立的开发和销售团队,MySQL将被继续开发和支持,就像InnoDB那样,并和Oracle数据库的管理工具整合。按照Oracle的承诺来看,MySQL应该会变得更好,拭目以待。

还有一些不是很重要的产品,在Webcast里都没有提及,比如那个Sun Java System Directory Server(LDAP)等等,也就没太关注。

此外,来爆一下料。曾经的Sun有8000左右的Mac用户,使用不同的硬件,包括Macbook/MacBook Pro,Mac Pro,不排除还有mini和Server的可能。他们将给Oracle IT部门带来什么问题和挑战?将得到来自IT的何种程度的支持?他们使用哪些软件办公?暂时都还是疑问。处理的当的话将来有没有可能会被当成案例呢?其他的我所知不多,Sun内部使用的办公套件标准肯定不会是微软的Office套件,StarOffice/StarSuite才是Sun的标准办公套件。

暂时就写这么多,还比较乱。来日再编辑整理加入更多内容,欢迎留言交流,提出你的看法和反馈,当然也可以用Twitter直接@我,谢谢;-)

内容来源:
Oracle + Sun Webcast and Presentation

Oracle + Sun Product Strategy Webcast Series

01
Jan

从Firefox到Chrome

新年第一天,我还在坚守工作岗位。也是在今天决定将自己的主力浏览器从Firefox向Chrome迁移。

已经无从得知具体是什么时候开始用Firefox的,只依稀记得当初用Fedora Core 1当桌面。那时Linux下主流的浏览器就是Mozilla怪兽和Opera,我对后者一如既往的不习惯。第一次用Firefox是因为Mozilla的土鳖用户界面实在无法容忍,那时候它的名字还是Firebird 0.7。到0.8的时候正式改名为Firefox,从那时候起这个浏览器大概真正算是可用了;-)

如今,Firefox发布已整整5年有余,版本号也到了3.5,3.6。某种程度上来讲,加上插件后它已经不能再算是一个简单的浏览器了,已俨然成为一个巨无霸浏览平台,Integrated Browse Environment。

Firefox发展到现在,稳定性已经不再是大问题了。我还记得1.x和2.0.x时代内存泄露问题一直没有被有效解决,直到3之后才有所改观。

目前我觉得其最大的瓶颈在于其性能,尤其表现在Disk I/O上。大家知道Firefox以SQLite来存储数据,其数据文件可以增长到几十甚至上百M,对这样在普通硬盘文件系统上的数据库文件频繁读写更新,性能能好么?当然,用Linux折腾的人已经想到把profile移动到利用物理内存创建的tmpfs上来改善性能,但毕竟太繁琐不可能普及,Windows上的Firefox Portable放到高速SSD存储上用倒是个不错的方法,冏。还有个问题就是Firefox的JavaScript引擎性能的低下,不知道的可以去看看评测,或者直接用@virushuo大虾的phpjsrsa页面做个简单的测试。Firefox 3.5.x和Chrome dev相比,差了近20倍…

目前阻碍用户向Chrome迁移的,可能主要还是Firefox丰富的插件在Chrome下有无好的替代品。

我个人迁移到Chrome的主要原因有以下几个特性:

  1. 多进程设计
    每个tab一个独立sub-process的设计,各个tab之间可以不互相影响。万一有一个崩溃掉也不至于crash掉整个浏览器进程。当然,实际还是遇到过一个页面导致tab崩溃,继而所有tab均出错的情况 http://twitpic.com/wq93u
  2. 沙盒
    提高了浏览器的安全性。
  3. Incognito模式
  4. 扩展
    安装,删除,启用,停用或者升级后重载,都无需重启浏览器即可完成,强。比较恨Firefox更新,启/停用Add-ons之后必须重启才能生效这一点。
  5. V8 JavaScript引擎
  6. Task Manager
    很有特色的工具,作为一个浏览器拥有task manager可谓绝无仅有了。

以前基本不在意这个所谓的JavaScript引擎到底能有多大区别,虽然也曾经多次看过主流浏览器JavaScript引擎性能相关测试,惊讶的发现Firefox的引擎性能竟然如此低下。Chrome的V8几乎一枝独秀,貌似只有最新版Opera的Prestro有望与之一较高下。

除了上面提到的这些特性之外,还有一点让我下定决心迁移:平时工作需要用到用Oracle ADF开发的Web应用,页面中还包含大量JS,经常导致Firefox高CPU占用且失去响应。失去响应也就罢了,最恶心最不能忍受的就是按某些特定的按钮,多次(至少7-8次)导致Firefox崩溃,继而xorg-server崩溃。这在我看来几乎有点不可思议的,浏览器崩溃能导致Linux的X Server完全崩溃并自动重启!这个后果是严重的,我甚至去找开发人员和launchpad问,也没找到问题的根源。后来才知道是ADF惹的祸,用Chrome即使所有tab都崩溃也没事;-)

目前Google Chrome只有Windows平台有稳定分支,Linux和Mac只有Beta和Dev两个channel。其中Beta相对比较稳定,而Dev则是新特性的试验田,比较激进更新很快,据说会比较不稳定,但我一直在用Dev,感觉还是很稳定的。

下载:

Chrome 必备之扩展列表

  • Proxy Switchy! (替代Multiproxy Switch)
    这玩意儿在Linux下一直有问题,到1.6.x才算可用。但是发现在Linux和Windows下切换代理会影响全局,这…
  • Domain Details (Header Spy替代品)
  • Tab Menu (Tab增强)
  • Super Drag
  • Click&Clean (Windows Only)
  • Xmarks Bookmark Sync
  • Chromed Bird (我觉得是最完美的浏览器扩展类Twitter客户端,选项太强了!)
  • AdBlock (不用多说了)
  • FlashBlock (有两个同名的,自己甄别吧)
  • Firebug Lite
  • Chrome Flags (Flagfox equivalent)
  • Chrowety (Another good Twitter Client)
  • Chroemilk (RememberTheMilk)

最后,提一下目前Chrome在日常使用中存在的缺陷,还没有解决方案(若你知道,请告诉我):
没法和Firefox 3.x一样缩放Zoom Text Only,也没有此类扩展。做了一点研究,发现问题是Chrome本身,或者说上游的Chromium就没有此特性,所以短期内看来是无法解决了。

若在墙内碰到无法访问扩展安装扩展,可以用加上参数启动Chrome通过ssh -D开的tunnel proxy访问并安装;-)

Linux & Mac OS X
google-chrome --proxy-server=socks5://localhost:port

Windows
%userprofile%\AppData\Local\Google\Chrome\Application\chrome.exe --proxy-server=socks5://localhost:port

补充一点:Chrome内置中文分词技术,光标移动到页面上的任何中文内容,尝试双击某个中文字符,然后看看会发生什么;-)

各位读者看到日期,估计又要郁闷了。实在对不起大家了,在draft里躺了太久,今天终于下定决心完成之;-)

31
Dec

2009的最后一天

一转眼,就到了2009年的最后一天了。

到这个新的国度也快要满两年了。

这一年,Twitter和Google Reader成为了知识和信息获取的核心(FriendFeed基本不看了)。

俩女儿,悉悉和尼尼都长大了,能说会跑。我和TAOTAO则都老了…

12月过得不是很顺利,不过终于要熬过去了;-) 去年的12月也有够倒霉的。

昨天下午还看到一件囧事,Macquarie shopping center的express car parking里看到一哥们儿在我去年撞瘪车门的同一个停车位上,把他可爱的敞篷Saab 93的左前部分都撞坏了。貌似恼羞成怒,横在道中央给保险公司打电话。痛恨那黄色的混凝土柱子啊,靠!

即将过去的一年里,给自己设定的目标大部分都完成了。新的一年里,会有更多的目标任务,还有挑战,bring it on!

离开回家的日子越来越近了,非常期待与家人团聚,一起过这个年。已经记不太起最近一次回上海是啥时候了。久违了,上海。

21
Dec

善用Twitter官方List

发现自己是2007年7月24日开始用Twitter,用dabr,iPhone上的Tweetie都可以看,官方应该有提供此API。最初是被搞Enterprise 2.0的同事忽悠了才开始用Twitter和LinkedIn的。

随着Twitter上朋友的圈子的扩大,follow的推优众逼近200关口。在这个数字附近起伏了很久,自己也逐渐发现timeline的信息量已经超过自己所能承受和有效获取的范围。该是时候梳理并且做一些取舍了。在必要的时候unfollow掉一些对自己来说价值不大的推优,也是不得已而为之。记得有人说过Twitter上follower和followee之间的关系不像传统IM的联系人那样是对称的。简单来说:不是你follow了我,我就一定得follow你的。若别人觉得你的tweet对他有价值的时候,自然而然就会follow你了。

其实说实在的,我很崇拜那些follow上千人还能做到基本不漏掉重要tweets的牛人,仰视中。

那么,除了unfollow之外就没有其他更好的解决方法么?
答案当然是有,这要得益于Twitter官方引入的新特性List

官方对Lists的简单解释是:

Twitter users can now organize users they follow (or users that they don’t) into groups, or “lists”.

一个Twitter用户可以用来组织管理他们follow以及还没有follow的帐号(用户)的工具-列表。

优点:

  1. 可以当Email的filter来用,分离不同的用户。
  2. 不需要follow某个推优就可以将其加入到一个List。
  3. 列表可以是公开或者私有的,满足不同用户的需求

缺点:

  1. 目前只能通过Web或者支持list的客户端来follow列表。大多数客户端还继续停留在石器时代
  2. Twitter官方没有给每个List提供独立的RSS feed。不然的话用Google Reader备份和快速搜索某个列表/推优圈的tweets简直易如反掌。
  3. 一个用户可以创建20个列表。不能算是个缺点,说限制更妥当,一般来说够用了。

我目前的解决方法:
将自己认为重要的推优加入到VIP(Very Important Pigs^_^)列表。这样的话,平时只要只要关注好这个列表就不会遗漏任何有价值的tweets了。至于大推友圈的timeline,能撇到多少是多少。当然,这个VIP列表是在不断增长中的;-)

在我的另外两大信息源:FriendFeed和Google Reader里也做了同样的设置,以免错过有价值地信息,目前看来效果还是不错的。

Twitter客户端:目前iPhone上的Tweetie 2和国人的TwitBird(有免费版本,Premium版本感恩节曾经免费过)支持官方的List。

以上只是我自己在使用Twitter过程中遇到问题并尝试去解决地过程,分享一下或许会对有同样困惑的后来者有所帮助。欢迎围观!

延伸阅读:
Introducing: Twitter Lists!

07
Dec

Linux下用kexec实现快速重启

其实kexec这个快速启动技术出来已经有好几年的时间了,被传地很神秘。快速内核“热”切换,这个字其实有着一定的误导性,导致不明真相的围观群众盲目崇拜。

先简单介绍一下kexec

kexec (kernel execution) is a mechanism of the Linux kernel that allows “live” booting of a new kernel over the currently running one. kexec skips the bootloader stage (hardware initialization phase by the firmware or BIOS) and directly loads the new kernel into memory, which starts executing immediately. This avoids the long times associated with a full reboot, and is useful on systems with high availability requirements, where minimizing downtime is of essence.

kexec是Linux内核的一个补丁,让您可以从当前正在运行的内核直接引导到一个新内核。在上面描述的引导序列中,kexec跳过了整个引导装载程序阶段(第一部分)并直接跳转到我们希望引导到的内核。不再有硬件的重启,不再有固件操作,不再涉及引导装载程序。完全避开了引导序列中最弱的一环 — 固件。这一功能部件带来的最大益处在于,系统现在可以极其快速地重新启动。对企业级系统而言,kexec大大减少了重新启动引起的系统宕机时间。对内核和系统软件开发者而言,kexec 帮助您在开发和测试成果时可以迅速重新启动系统,而不必每次都要再经历耗时的固件阶段。

kexec的好处:要求高可用性的系统,以及需要不断重新启动系统的内核开发人员,都将受益于kexec。因为 kexec跳过了系统重新启动过程中最耗时的部分(也就是固件初始化硬件设备的阶段),所以重新启动变得非常快,可用性得到了提高。

我个人一直觉得这个技术是适合被应用在生产环境中的服务器上来减少重启所需要的时间,从而减少系统和整个IT基础架构的宕机时间,提高可用性。而在桌面个上,其意义并不是太大,因此一直没有去尝试。

今天趁着Ubuntu Server有内核升级的机会,就顺便体验了一把传说中的kexec快速启动。

两个测试环境
Ubuntu Server 9.10 Karmic Koala x86
Running kernel: 2.6.31-15-generic-pae
New kernel: 2.6.31-16-generic-pae

Debian GNU/Linux squeeze/sid x86
Running kernel: 2.6.30-2.686
New kernel: 2.6.30-2.686
你没看错我也没打错,一样的也可以,因为我只留了一个内核,囧

kexec工作需要先满足的两个条件

  1. kernel patch: 编译的时候得选上CONFIG_KEXEC=y,该选项会打开kernel execution。
    Debian sid, Ubuntu desktop和Ubuntu Server的内核都已经开启该选项。
  2. userspace tool: 安装kexec-tools包

Debian GNU/Linux和Ubuntu, Ubuntu Server (所有命令均假设用户有root权限)
apt-get install kexec-tools

Arch Linux
pacman -S kexec-tools

使用kexec

kexec的执行过程包括两个步骤

  1. 在当前被使用的内核下,将要使用的新内核载入到内存中
  2. 重新启动到之前预先载入的新内核

第一步:加载新内核
kexec -l kernel-image --append=command-line-options --initrd=initrd-image

kernel-image:需要重启进入的那个新内核的内核文件
command-line-options:新内核启动时必须要传递给它的命令行参数,记住在不确定的情况下,传递/proc/cmdline的内容总是最安全的

最后一个可选项initrd:启动时用到的initrd image。

更多信息请参阅man page。

第二步:载入完成之后”切换”到新内核
kexec -e

至于command-line-options,不同发行版有些出入,我就大胆假设一下能坚持看到这里的都能看明白:
Ubuntu Server
root=UUID=8850aec2-d10a-43b4-8c86-10c8d350a12e ro quiet splash

全新安装的Ubuntu 9.10,GRUB2,LVM上是这样的鸟(我工作机上的)
BOOT_IMAGE=/vmlinuz-2.6.31-16-generic root=/dev/mapper/ubuntu-root ro quiet splash

Debian squeeze/sid GRUB2
root=/dev/sda1

测试结果
1. Ubuntu Server
这个服务器跑的是文本模式,ssh到服务器载入新内核之后执行kexec -e。终端冻结无法再执行任何操作,可以看到服务器按照初始化相反的顺序关闭当前的系统:关闭进程,关闭系统服务,将cache buffers写回到文件系统,撤销交换分区的使用,unmount文件系统,重启。

可以注意到这次重启跳过了bootloader阶段,直接从内核阶段开始。这时候Linux内核获得对系统的控制权,它设置所需要的数据结构,侦测现有系统上的设备并载入所需的驱动程序,初始化这些设备,包括​初​始​化​和​文​件​系​统​相​关​联​的​虚​拟​设​备​,如LVM或者software RAID。启动过程中最后一个环节涉及到用户级别初始化,由内核执行init(/sbin/init)完成。用户级别初始化阶段,内核检查文件系统的完整性,挂载/etc/fstab里列出的文件系统,激活交换分区(或者交换文件),启动系统服务,设置系统终端,并完成所有其他设置。

注意:测试了几次发现这么干有时候会导致服务器终端(显示器+键盘)无法操作,但是ssh过去还是可以正常操作的。不知是操作不当还是bug。

2. Debian sid gdm作为系统服务启动
在XFCE4桌面下执行,桌面会冻结,无法进行任何操作。重启完成后会直接看到GDM登录窗口,很容易理解。

总结一下
其实所谓的内核”热”切换,归根结底还是一个系统重启,uptime归零,不同之处在于跳过了传统的bootloader stage(包括hardware -> firmware/BIOS stage -> first level bootloader/MBR -> second level bootloader/GRUB ),直接进入了kernel stage。

很难说到底能节省多少时间,但是保守估计在不同的硬件上至少可以节省5-10秒的启动时间,甚至更多。目前还不知道kexec能否正常工作在amd64/x86_64和ppc平台上。

本文仓促中完成,若有不当之处,欢迎围观并请不吝指正。

参考及延伸阅读
http://en.wikipedia.org/wiki/Kexec
Reboot Linux faster using kexec
使用 kexec 快速重启 Linux
Inside the Linux boot process
GRUB and the x86 Boot Process
Boot Process, Init, and Shutdown

    Subscribe

    Follow Me;-)

    SNS

    delicious  Google Reader  TWiki  豆瓣  

    Recent Posts

    Categories

    Recent Comments

Loading

    Tag Cloud

    Archives

    Blogroll

    Links

    RSSTwitter