<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>鱼常游而忘飞 &#187; Frameworks</title>
	<atom:link href="http://www.oulan.com/w/category/tech/frameworks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oulan.com/w</link>
	<description>+++仿佛轻云应笑我--相携水岸弄朝霞--此生只为听天籁--坐拥书城看落花+++</description>
	<lastBuildDate>Fri, 23 Jul 2010 02:41:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>NUI &#8211; cross-platform for OpenGL app</title>
		<link>http://www.oulan.com/w/2009/08/14/nui-cross-platform-for-opengl-app/</link>
		<comments>http://www.oulan.com/w/2009/08/14/nui-cross-platform-for-opengl-app/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 12:34:14 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[关注]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[NGL]]></category>
		<category><![CDATA[NUI]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=728</guid>
		<description><![CDATA[NUI is a cross-platform C++ GUI programming framework for OpenGL applications built on top of the NGL framework. In other words, its purpose is to help programmers write multi-platform GUI applications with a simple knowledge in C++. The rendering being based on OpenGL, graphics can intensively use alpha blending, anti-aliasing, complex primitives and even 3D with [...]]]></description>
			<content:encoded><![CDATA[<p><strong>NUI</strong> is a cross-platform C++ GUI programming framework for OpenGL applications built on top of the <strong>NGL</strong> framework. In other words, its purpose is to help programmers write multi-platform GUI applications with a simple knowledge in C++. The rendering being based on OpenGL, graphics can intensively use alpha blending, anti-aliasing, complex primitives and even 3D with full hardware acceleration when available.</p>
<p>NUI是一个跨平台的，用于OpenGL应用开的的C++ GUI框架，它基于NGL框架构建。换句话说，它的目标是帮助程序员利用简单的C++知识就可以编写出多平台的GUI程序。渲染部分基于OpenGL，alpha混合、抗锯齿、复杂的原始的计算，特别是当硬件加速可用的时候，可以进行加速。</p>
<p>(后面一句我胡翻的，大致的意思如此吧)</p>
<p><img class="alignleft" src="http://home.gna.org/ngl/shots/nuitest.png" alt="" width="800" height="600" /></p>
<p>来源, <a href="http://www.oulan.com/w/?ShUFtd19">NGA</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/08/14/nui-cross-platform-for-opengl-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enterprise open source cloud computing platform</title>
		<link>http://www.oulan.com/w/2009/07/20/enterprise-open-source-cloud-computing-platform/</link>
		<comments>http://www.oulan.com/w/2009/07/20/enterprise-open-source-cloud-computing-platform/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:54:57 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[关注]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件推荐]]></category>
		<category><![CDATA[cloud computing]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=478</guid>
		<description><![CDATA[近日Abiquo公司宣布推出其一款开源的云计算平台——“abiCloud” ，使公司能够以快速、简单和可扩展的方式创建和管理大型、复杂的IT基础设施(包括虚拟服务器，网络，应用，存储设备等等)。
我们与Abiquo公司合作创始人兼首席执行官Diego Mariño进行了沟通，他告诉我们，AbiCloud较之同类其他产品的一个主要的区别在于其强大的Web界面管理。他告诉我们：“你可以通过拖拽一个虚拟机来部署一个新的服务。这个版本允许通过VirtualBox 部署实例，它还支持VMware，KVM和Xen。
最初的测试包括在其基础设施上运行Virtualbox，因为它运行起来非常简单，还可以将它运行在不同的架构上，这就是他的第一个重点区别。
今天，他通过libvirt支持Xen及KVM，并将在第二季度为这些虚拟设备提供连接器。支持的VMware，是提供给托管服务提供商封闭模块。
基本上， Abiquo允许公司将其基础设施转换到服务。该领域的其他竞争者包括最近成立的Eucalyptus 、Enomaly和Sun公司收购的云计算公司Q-layer。
Abiquo表示，不同的产品有不同的重点和方法，该公司的产品能够为更复杂的基础设施创建私人云计算。
该公司自己的开放API将于今年第三季度公布，但并没有支持亚马逊API的计划。
AbiCloud可以从SF.net上下载。
http://www.abiquo.com/
]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">近日Abiquo公司宣布推出其一款开源的云计算平台——“abiCloud” ，使公司能够以快速、简单和可扩展的方式创建和管理大型、复杂的IT基础设施(包括虚拟<a style="text-decoration: none; font-size: 14px; color: #005a98;" href="http://www.oulan.com/w/?KvjDG79H" target="_bank">服务器</a>，网络，应用，存储设备等等)。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">我们与Abiquo公司合作创始人兼首席执行官Diego Mariño进行了沟通，他告诉我们，AbiCloud较之同类其他产品的一个主要的区别在于其强大的Web界面管理。他告诉我们：“你可以通过拖拽一个虚拟机来部署一个新的服务。这个版本允许通过VirtualBox 部署实例，它还支持VMware，KVM和Xen。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">最初的测试包括在其基础设施上运行Virtualbox，因为它运行起来非常简单，还可以将它运行在不同的架构上，这就是他的第一个重点区别。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">今天，他通过libvirt支持Xen及KVM，并将在第二季度为这些虚拟设备提供连接器。支持的VMware，是提供给托管服务提供商封闭模块。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">基本上， Abiquo允许公司将其基础设施转换到服务。该领域的其他竞争者包括最近成立的Eucalyptus 、Enomaly和Sun公司收购的云计算公司Q-layer。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">Abiquo表示，不同的产品有不同的重点和方法，该公司的产品能够为更复杂的基础设施创建私人云计算。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">该公司自己的开放API将于今年第三季度公布，但并没有支持亚马逊API的计划。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">AbiCloud可以从SF<a style="text-decoration: none; font-size: 14px; color: #005a98;" href="http://www.oulan.com/w/?DX6hbyVD" target="_bank">.net</a>上下载。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;"><a href="http://www.oulan.com/w/?QPB8qb6w">http://www.abiquo.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/07/20/enterprise-open-source-cloud-computing-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enomalism</title>
		<link>http://www.oulan.com/w/2009/07/20/enomalism/</link>
		<comments>http://www.oulan.com/w/2009/07/20/enomalism/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:52:40 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[关注]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件推荐]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Enomalism]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=476</guid>
		<description><![CDATA[Enomaly&#8217;s Elastic Computing Platform (ECP)是一个可编程的虚拟云架构，ECP平台可以简化在云架构中发布应用的操作。
Enomalism 云计算平台是一个 EC2 风格的 IaaS 。Enomalism 是一个开放源代码项目，它提供了一个功能类似于 EC2 的云计算框架。Enomalism 基于 Linux，同时支持 Xen 和 Kernel Virtual Machine（KVM）。与其他纯 IaaS 解决方案不同的是，Enomalism 提供了一个基于 TurboGears Web 应用程序框架和 Python 的软件栈。
参考：
1. Enomaly
2. Enomalism介绍

]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Enomaly&#8217;s Elastic Computing Platform (ECP)是一个可编程的虚拟云架构，ECP平台可以简化在云架构中发布应用的操作。</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Enomalism 云计算平台是一个 EC2 风格的 IaaS 。Enomalism 是一个开放源代码项目，它提供了一个功能类似于 EC2 的云计算框架。Enomalism 基于 Linux，同时支持 Xen 和 Kernel Virtual Machine（KVM）。与其他纯 IaaS 解决方案不同的是，Enomalism 提供了一个基于 TurboGears Web 应用程序框架和 Python 的软件栈。</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">参考：</p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">1. <a href="http://www.oulan.com/w/?8qaNIwbh">Enomaly</a></p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">2. <a href="http://www.oulan.com/w/?SkLnhKVK">Enomalism介绍</a></p>
<p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><img class="alignnone" src="http://www.oschina.net/uploads/img/200809/22111650_R9Gc.jpg" alt="" width="569" height="480" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/07/20/enomalism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX相关资料整理</title>
		<link>http://www.oulan.com/w/2009/07/19/ajax-docs/</link>
		<comments>http://www.oulan.com/w/2009/07/19/ajax-docs/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 12:40:53 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[关注]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[DWR]]></category>
		<category><![CDATA[ExtJs]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[YAML]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=453</guid>
		<description><![CDATA[1. Ajax 入门简介
 http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html
2. Prototype
http://www.prototypejs.org/
3. jQuery
http://jquery.com/ 
4. ExtJS
http://extjs.com/
http://code.google.com/p/js-builder/
5. Dojo
http://www.dojotoolkit.org/
6. DWR
http://directwebremoting.org/
http://www.okajax.com/a/200904/ajax_javascript_web.html 
http://hge.relishgames.com/
http://modulesjs.com/
YAML，非常重要的数据结构描述方法
http://www.yaml.de/en/home.html
2个商业化的产品
http://www.backbase.com/ 
http://www.smartclient.com/
CSS
http://960.gs/
]]></description>
			<content:encoded><![CDATA[<p>1. Ajax 入门简介<br />
<a href="http://www.oulan.com/w/?OqJR1akc"> http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html</a></p>
<p>2. Prototype<br />
<a href="http://www.oulan.com/w/?TW7I64dJ">http://www.prototypejs.org/</a></p>
<p>3. jQuery<br />
<a href="http://www.oulan.com/w/?BPJGjKsy">http://jquery.com/ </a></p>
<p>4. ExtJS<br />
<a href="http://www.oulan.com/w/?oY1j_OsN">http://extjs.com/</a><br />
<a href="http://www.oulan.com/w/?42uU3FWM">http://code.google.com/p/js-builder/</a></p>
<p>5. Dojo<br />
<a href="http://www.oulan.com/w/?qTjmMnVc">http://www.dojotoolkit.org/</a></p>
<p>6. DWR<br />
<a href="http://www.oulan.com/w/?2tJb41zh">http://directwebremoting.org/</a></p>
<p><a href="http://www.oulan.com/w/?OqrN4KqX">http://www.okajax.com/a/200904/ajax_javascript_web.html </a></p>
<p><a href="http://www.oulan.com/w/?BLGtfs5w">http://hge.relishgames.com/</a></p>
<p><a href="http://www.oulan.com/w/?beINrtQj">http://modulesjs.com</a>/</p>
<p>YAML，非常重要的数据结构描述方法<br />
<a href="http://www.oulan.com/w/?NokGfJOU">http://www.yaml.de/en/home.html</a></p>
<p>2个商业化的产品</p>
<p><a href="http://www.oulan.com/w/?IxgpGHl_">http://www.backbase.com/ </a></p>
<p><a href="http://www.oulan.com/w/?BkecJbdq">http://www.smartclient.com/</a></p>
<p>CSS<br />
<a href="http://www.oulan.com/w/?05wTENG6">http://960.gs/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/07/19/ajax-docs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinxGUI &#8211; WINX</title>
		<link>http://www.oulan.com/w/2009/07/19/winxgui-winx/</link>
		<comments>http://www.oulan.com/w/2009/07/19/winxgui-winx/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 12:14:54 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[关注]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[stdext]]></category>
		<category><![CDATA[winx]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=451</guid>
		<description><![CDATA[WinxGui is composed of some sub-libraries. They are winsdk, wtl, stdext, winx.
winsdk, wtl are 3rdparty libraries. winsdk is Windows Platform SDK, which is provided by Microsoft. wtl is Windows Template Library. It is a C++ library for developing Windows applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, [...]]]></description>
			<content:encoded><![CDATA[<p style="max-width: 65em;"><a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?ofplXQ2e">WinxGui</a> is composed of some sub-libraries. They are <em>winsdk</em>, <em>wtl</em>, <em>stdext</em>, <em>winx</em>.</p>
<p style="max-width: 65em;"><em>winsdk</em>, <em>wtl</em> are 3rdparty libraries. <em>winsdk</em> is Windows Platform SDK, which is provided by Microsoft. <em>wtl</em> is Windows Template Library. It is a C++ library for developing Windows applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more.</p>
<p style="max-width: 65em;"><em><a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?LFWRl7DV">stdext</a></em> is a GUI-less library. <em>stdext</em> means STL (Standard Template Library) extensions. It extends STL and provides a set of classes for diagnosis, memory management, unit tests, file io, etc. <em>stdext</em> is self systematic. It depends nothing else, and you can use it freely.</p>
<p style="max-width: 65em;"><em>winx</em> is the core of <a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?ofplXQ2e">WinxGui</a> library, of course. It depends <em>winsdk</em>(optional), <em>wtl</em>, and <em>stdext</em>. You may ask me why you based on WTL. In <a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?LQtKXJoR">Dive into WinxGui</a> I will answer the question.</p>
<p style="max-width: 65em;">In fact, <em><a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?LFWRl7DV">stdext</a></em> library is more general and useful than <em>winx</em>. So, we decided to release <em>stdext</em> library independently. Its homepage is <a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?LFWRl7DV">http://code.google.com/p/stdext/</a>. The wiki of <em>stdext</em> library is <a style="color: #0000cc;" rel="nofollow" href="http://www.oulan.com/w/?RxLnJWfY">http://cpp.winxgui.com/</a>.</p>
<p style="max-width: 65em;"><a href="http://www.oulan.com/w/?1v_Ob1SM">http://code.google.com/p/winx/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/07/19/winxgui-winx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用户怎样选择虚拟化解决方案(转)</title>
		<link>http://www.oulan.com/w/2009/06/09/user-vt/</link>
		<comments>http://www.oulan.com/w/2009/06/09/user-vt/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 03:51:47 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[虚拟化]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=47</guid>
		<description><![CDATA[目前服务器领域最热门的新技术之一就是虚拟化，虚拟化技术能允许用户在一台服务器上安装一个或者多个操作系统的多重实例。这项技术对于那些工作负载 不大的服务器来说尤其适用，因为它取代了为所需的操作系统上的每个实例配置一台单独的物理服务器的传统方式。然而我们现在面临许多不同的虚拟化选择，在相 互竞争争夺这块市场。本文意在阐明对虚拟化各种可能性的看法，你也可以从中了解如何安装Ubuntu服务器来实现虚拟化。
了解虚拟化
你将会了解到有关虚拟化的不同解决方案，我们会对两种主要的虚拟化途径进行深度解析：即全虚拟化和半虚拟化。
目前市场上有很多虚拟化解决方案，其中有三种解决方案尤其重要：即VMware，Xen，KVM (Kernel平台上的虚拟机)
对于其他的解决方案，你经常无法在数据中心寻觅到它们的踪迹。因为其他的虚拟化解决方案都存在很多的局限性，诸如缺乏必要的技术支持，在虚拟机上安装的操作系统的选择限制，使用过程中严重的性能不足等。出于以上原因的考虑，我们对这些解决方案忽略不计。
在这三个重要的虚拟化技术中，VMware公司是目前市场上的领军人物，原因可能是源于它为多个不同操作系统的虚拟化提供了一套商用解决方案。在数 据中心中应用的最重要的VMware版本是VMware ESX虚拟化管理程序，它提供了一套结合了Virtual Machine Manager的Linux kernel。如果你想将VMware ESX作为虚拟化平台使用，你就必须在VMware虚拟化环境中通过将Ubuntu服务器作为虚拟化客户端操作系统的方式来实现。目前还没有办法能将 VMware ESX与Ubuntu服务器结合起来共同作为虚拟化主机平台使用。
提示：在Xen社区，在我们讨论操作系统时通常避免使用&#8221;主机&#8221;"客户机&#8221;这样的词汇。我会在稍后&#8221;使用Xen安装虚拟机&#8221;的章节中解释其中原因。 不过为了更加清楚的对虚拟化进行解析，我在随后的定义中还会继续使用这样的词汇来描述。主机就是提供虚拟化服务的物理服务器，主机可能会也可能不会运行特 定的操作系统来提供这些服务。客户机是指没有任何与虚拟化有关职责的虚拟机。
在虚拟化领域位居第二把交椅的是KVM，它们在Linux kernel上技工虚拟化支持。如果你要使用KVM，你需要运行Linux操作系统的kvm.ko kernel模块，一个提供嵌入式虚拟化支持的中央处理器，当然还有支持KVM虚拟化的kernel(2.6.20 kernel是第一款支持虚拟化的Linux kernel)。要想创建KVM虚拟机，你需要使用/dev/kvm界面和QEMU程序的修订版。QEMU最初是作为开源虚拟化产品研发的，但它并不十分 成功。不过它的自带工具却非常有用，QEMU工具和解决方案在KVM和Xen虚拟化环境中广泛使用。目前KVM的虚拟化主机能支持多数操作系统，能在同样 的处理器体系架构上运行。
Linux虚拟化市场上第三个主角是Xen，它在剑桥大学作为一项研究计划开始发展起来。Xen的核心组件是它的管理程序，管理程序层使创建虚拟机 成为可能。当使用虚拟机主机时，管理程序取代常规的Linux kernel(它在Xen管理程序之后进行装载)。Xen是目前供Linux操作系统使用的最佳虚拟化平台之一，这主要是因为它有强大的开发者社区作为支 持，这个社区包括硬件厂商(诸如英特尔公司，惠普公司和AMD公司)和软件厂商(诸如NOVELL和红帽公司)。自Ubuntu服务器7.10发布之 后，Ubuntu服务器成为Xen主机虚拟化平台一个强有力的选择。
虚拟化的途径
Xen和KVM这两种虚拟化解决方案都能提供两种途径的虚拟化方式：全面虚拟化和部分虚拟化。在创建虚拟化解决方案之前，你需要先了解一下这两种虚拟化途径的不同之处。
半虚拟化
半虚拟机需要一个客户端操作系统的修订版，这个修订版产生的指令能相对容易的被管理程序处理，这个管理程序是能够破译虚拟化指令并将它们传递给物理 硬件的组件。因为操作系统能在部分虚拟化中产生修订指令，因此对于虚拟化而言它也是最有效的途径。这些修订指令意味着虚拟机管理员不再需要按照虚拟化环境 中的格式更改虚拟机的常规指令。部分虚拟化也不需要任何特定的硬件，不过它最大的劣势在于它需要客户端操作系统的一个特定的修订版。出于竞争的需要，一些 操作系统(诸如Windows操作系统)都不提供这样的版本。
全虚拟化
相对部分虚拟化而言的另外一个选择就是全虚拟化，它能允许用户使用常规的，无需修订的操作系统来作为客户端。但它需要特定的硬件支持，目前AMD公 司和英特尔公司的中央处理器都能提供这种支持。因为这是一种服务器中央处理器中的嵌入式支持，全面虚拟机就能够最大可能的提升工作效率。不过来自虚拟化操 作系统的指令需要虚拟机管理人员自行破译，因为客户端操作系统对虚拟机
没有概念，只能产生常规指令。因此这可能会导致客户端操作系统和硬件之间的虚拟化层产生问题。向中央处理器传递指令对虚拟化来说比较困难，特别是对于i386体系架构。因此要确保中央处理器的硬件虚拟化支持的性能代价不会太大。
哪种虚拟化途径是最佳选择?
看到这里，你可能会考虑这两种虚拟化途径那种是你的最佳选择。事实上，你不可能总是选择到理想的解决方案。如果你的操作系统无法提供部分虚拟化支 持，全面虚拟化就成为唯一可供选择的方式。不过，如果你的中央处理器和操作系统都能提供虚拟化支持，那么最好选择部分虚拟化的方式，因为虚拟化操作系统产 生的指令对于虚拟化环境来说是最优的。采用这种方式，由于虚拟化而导致的性能损失也能降低到最小化。
如果你因为你的操作系统无法提供支持而不能采用部分虚拟化的方式，你可以检查一下是否部分虚拟化驱动程序是可用的。这种驱动程序在很多情况下都能提 供，它们能帮助提高特殊设备的性能，诸如你的网络接口卡。不过通常情况下，你会发现全面虚拟化是你唯一的解决方案，因为你想虚拟化的操作系统没有给你选择 的机会。如果是KVM虚拟化方案，对于完整的操作系统的部分虚拟化也无法提供支持。因此接下来的章节我们假设有可以提供虚拟化支持的中央处理器。
提示：多数Pentium IV和至强处理器都能提供虚拟化支持。如果你对自己的中央处理器不能确认，只需检查一下系统上的BIOS(基本输入输出系统)设置。如果可以支持虚拟 化，BIOS将包含一个虚拟化选项。作为一个选择，你也可以检查中央处理中/proc/cpuinfo文件的VMX标记，如果有这个标记，那就说明你的中 央处理器能够支持虚拟化。
使用KVM安装虚拟机
如果你的中央处理器能支持虚拟化，KVM虚拟化解决方案是最为简便的使用方式(虽然它还只是刚刚发展起来)。在本节中，你会了解到如何将KVM虚拟主机来进行部署，如何在KVM虚拟化环境中将Windows和Ubuntu作为虚拟化操作系统进行安装。
警告：在使用虚拟化时，有个非常好的方法将主机操作系统与其他操作系统相区别。主机操作系统你的服务器引导的第一个操作系统。它也对其他的操作系统 负有特别的职责，诸如对驱动器入口和虚拟机本身进行管理等。为了确保它能以最有效的方式执行任务，请不要在主机操作系统上运行任何服务性工作。
在Ubuntu服务器上安装KVM
按照以下的步骤执行来安装虚拟服务器(这里描述的安装步骤以Ubuntu Server 7.04为基础)
1.安装所有KVM虚拟化所需的软件(KVM和QEMU套装)。作为根文件，使用&#8221;apt-get install kvm qemu.&#8221; 命令。
2.安装玩这些软件套装后，确保所需的驱动程序已经装载完毕。作为根文件，如果你使用的是英特尔公司出品的CPU，使用modprobe kvm-intel，如果是AMD公司的CPU，则使用modprobe kvm-amd
3.进入kernel kvm.ko模块界面，在/dev目录下创建/dev/kvm文件。你要确认你的用户有权限访问这个文件，然后使用chmod 777 /dev/kvm。
现在大功告成!你的Ubuntu服务器目前已经为客户端操作系统虚拟化已经准备就绪。以后的章节我们会继续讲解如果将Windows作为客户端操作系统进行安装。
点击这里查看原文
]]></description>
			<content:encoded><![CDATA[<p>目前服务器领域最热门的新技术之一就是虚拟化，虚拟化技术能允许用户在一台服务器上安装一个或者多个操作系统的多重实例。这项技术对于那些工作负载 不大的服务器来说尤其适用，因为它取代了为所需的操作系统上的每个实例配置一台单独的物理服务器的传统方式。然而我们现在面临许多不同的虚拟化选择，在相 互竞争争夺这块市场。本文意在阐明对虚拟化各种可能性的看法，你也可以从中了解如何安装Ubuntu服务器来实现虚拟化。<span id="more-47"></span></p>
<p><strong>了解虚拟化</strong></p>
<p>你将会了解到有关虚拟化的不同解决方案，我们会对两种主要的虚拟化途径进行深度解析：即全虚拟化和半虚拟化。</p>
<p>目前市场上有很多虚拟化解决方案，其中有三种解决方案尤其重要：即VMware，Xen，KVM (Kernel平台上的虚拟机)</p>
<p>对于其他的解决方案，你经常无法在数据中心寻觅到它们的踪迹。因为其他的虚拟化解决方案都存在很多的局限性，诸如缺乏必要的技术支持，在虚拟机上安装的操作系统的选择限制，使用过程中严重的性能不足等。出于以上原因的考虑，我们对这些解决方案忽略不计。</p>
<p>在这三个重要的虚拟化技术中，VMware公司是目前市场上的领军人物，原因可能是源于它为多个不同操作系统的虚拟化提供了一套商用解决方案。在数 据中心中应用的最重要的VMware版本是VMware ESX虚拟化管理程序，它提供了一套结合了Virtual Machine Manager的Linux kernel。如果你想将VMware ESX作为虚拟化平台使用，你就必须在VMware虚拟化环境中通过将Ubuntu服务器作为虚拟化客户端操作系统的方式来实现。目前还没有办法能将 VMware ESX与Ubuntu服务器结合起来共同作为虚拟化主机平台使用。</p>
<p>提示：在Xen社区，在我们讨论操作系统时通常避免使用&#8221;主机&#8221;"客户机&#8221;这样的词汇。我会在稍后&#8221;使用Xen安装虚拟机&#8221;的章节中解释其中原因。 不过为了更加清楚的对虚拟化进行解析，我在随后的定义中还会继续使用这样的词汇来描述。主机就是提供虚拟化服务的物理服务器，主机可能会也可能不会运行特 定的操作系统来提供这些服务。客户机是指没有任何与虚拟化有关职责的虚拟机。</p>
<p>在虚拟化领域位居第二把交椅的是KVM，它们在Linux kernel上技工虚拟化支持。如果你要使用KVM，你需要运行Linux操作系统的kvm.ko kernel模块，一个提供嵌入式虚拟化支持的中央处理器，当然还有支持KVM虚拟化的kernel(2.6.20 kernel是第一款支持虚拟化的Linux kernel)。要想创建KVM虚拟机，你需要使用/dev/kvm界面和QEMU程序的修订版。QEMU最初是作为开源虚拟化产品研发的，但它并不十分 成功。不过它的自带工具却非常有用，QEMU工具和解决方案在KVM和Xen虚拟化环境中广泛使用。目前KVM的虚拟化主机能支持多数操作系统，能在同样 的处理器体系架构上运行。</p>
<p>Linux虚拟化市场上第三个主角是Xen，它在剑桥大学作为一项研究计划开始发展起来。Xen的核心组件是它的管理程序，管理程序层使创建虚拟机 成为可能。当使用虚拟机主机时，管理程序取代常规的Linux kernel(它在Xen管理程序之后进行装载)。Xen是目前供Linux操作系统使用的最佳虚拟化平台之一，这主要是因为它有强大的开发者社区作为支 持，这个社区包括硬件厂商(诸如英特尔公司，惠普公司和AMD公司)和软件厂商(诸如NOVELL和红帽公司)。自Ubuntu服务器7.10发布之 后，Ubuntu服务器成为Xen主机虚拟化平台一个强有力的选择。</p>
<p><strong>虚拟化的途径</strong></p>
<p>Xen和KVM这两种虚拟化解决方案都能提供两种途径的虚拟化方式：全面虚拟化和部分虚拟化。在创建虚拟化解决方案之前，你需要先了解一下这两种虚拟化途径的不同之处。</p>
<p><strong>半虚拟化</strong></p>
<p>半虚拟机需要一个客户端操作系统的修订版，这个修订版产生的指令能相对容易的被管理程序处理，这个管理程序是能够破译虚拟化指令并将它们传递给物理 硬件的组件。因为操作系统能在部分虚拟化中产生修订指令，因此对于虚拟化而言它也是最有效的途径。这些修订指令意味着虚拟机管理员不再需要按照虚拟化环境 中的格式更改虚拟机的常规指令。部分虚拟化也不需要任何特定的硬件，不过它最大的劣势在于它需要客户端操作系统的一个特定的修订版。出于竞争的需要，一些 操作系统(诸如Windows操作系统)都不提供这样的版本。</p>
<p><strong>全虚拟化</strong></p>
<p>相对部分虚拟化而言的另外一个选择就是全虚拟化，它能允许用户使用常规的，无需修订的操作系统来作为客户端。但它需要特定的硬件支持，目前AMD公 司和英特尔公司的中央处理器都能提供这种支持。因为这是一种服务器中央处理器中的嵌入式支持，全面虚拟机就能够最大可能的提升工作效率。不过来自虚拟化操 作系统的指令需要虚拟机管理人员自行破译，因为客户端操作系统对虚拟机</p>
<p>没有概念，只能产生常规指令。因此这可能会导致客户端操作系统和硬件之间的虚拟化层产生问题。向中央处理器传递指令对虚拟化来说比较困难，特别是对于i386体系架构。因此要确保中央处理器的硬件虚拟化支持的性能代价不会太大。</p>
<p><strong>哪种虚拟化途径是最佳选择?</strong></p>
<p>看到这里，你可能会考虑这两种虚拟化途径那种是你的最佳选择。事实上，你不可能总是选择到理想的解决方案。如果你的操作系统无法提供部分虚拟化支 持，全面虚拟化就成为唯一可供选择的方式。不过，如果你的中央处理器和操作系统都能提供虚拟化支持，那么最好选择部分虚拟化的方式，因为虚拟化操作系统产 生的指令对于虚拟化环境来说是最优的。采用这种方式，由于虚拟化而导致的性能损失也能降低到最小化。</p>
<p>如果你因为你的操作系统无法提供支持而不能采用部分虚拟化的方式，你可以检查一下是否部分虚拟化驱动程序是可用的。这种驱动程序在很多情况下都能提 供，它们能帮助提高特殊设备的性能，诸如你的网络接口卡。不过通常情况下，你会发现全面虚拟化是你唯一的解决方案，因为你想虚拟化的操作系统没有给你选择 的机会。如果是KVM虚拟化方案，对于完整的操作系统的部分虚拟化也无法提供支持。因此接下来的章节我们假设有可以提供虚拟化支持的中央处理器。</p>
<p>提示：多数Pentium IV和至强处理器都能提供虚拟化支持。如果你对自己的中央处理器不能确认，只需检查一下系统上的BIOS(基本输入输出系统)设置。如果可以支持虚拟 化，BIOS将包含一个虚拟化选项。作为一个选择，你也可以检查中央处理中/proc/cpuinfo文件的VMX标记，如果有这个标记，那就说明你的中 央处理器能够支持虚拟化。</p>
<p><strong>使用KVM安装虚拟机</strong></p>
<p>如果你的中央处理器能支持虚拟化，KVM虚拟化解决方案是最为简便的使用方式(虽然它还只是刚刚发展起来)。在本节中，你会了解到如何将KVM虚拟主机来进行部署，如何在KVM虚拟化环境中将Windows和Ubuntu作为虚拟化操作系统进行安装。</p>
<p>警告：在使用虚拟化时，有个非常好的方法将主机操作系统与其他操作系统相区别。主机操作系统你的服务器引导的第一个操作系统。它也对其他的操作系统 负有特别的职责，诸如对驱动器入口和虚拟机本身进行管理等。为了确保它能以最有效的方式执行任务，请不要在主机操作系统上运行任何服务性工作。</p>
<p><strong>在Ubuntu服务器上安装KVM</strong></p>
<p>按照以下的步骤执行来安装虚拟服务器(这里描述的安装步骤以Ubuntu Server 7.04为基础)</p>
<p>1.安装所有KVM虚拟化所需的软件(KVM和QEMU套装)。作为根文件，使用&#8221;apt-get install kvm qemu.&#8221; 命令。</p>
<p>2.安装玩这些软件套装后，确保所需的驱动程序已经装载完毕。作为根文件，如果你使用的是英特尔公司出品的CPU，使用modprobe kvm-intel，如果是AMD公司的CPU，则使用modprobe kvm-amd</p>
<p>3.进入kernel kvm.ko模块界面，在/dev目录下创建/dev/kvm文件。你要确认你的用户有权限访问这个文件，然后使用chmod 777 /dev/kvm。</p>
<p>现在大功告成!你的Ubuntu服务器目前已经为客户端操作系统虚拟化已经准备就绪。以后的章节我们会继续讲解如果将Windows作为客户端操作系统进行安装。</p>
<p>点击这里查看<a href="http://www.oulan.com/w/?K3J99vFJ">原文</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/06/09/user-vt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>国人的模板引擎EasyTemplate(ET?)</title>
		<link>http://www.oulan.com/w/2009/06/08/et-template/</link>
		<comments>http://www.oulan.com/w/2009/06/08/et-template/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 04:19:55 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[软件推荐]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=37</guid>
		<description><![CDATA[PHP工程中的模板应用，关于它的好处，我想无论是在实际开发阶段还是上升到设计模式的角度都已经有很多“前辈先哲”&#8221;讨论过了。就项目实施而言，在一些 中型甚至大型的项目中，有效的将HTML（还有其他文本形式的表现层）和PHP代码分开，不仅在开发阶段可以提高界面设计人员和应用程序编写人员的工作效 率，更会给项目的测试和维护带来巨大的便利。
什么是模板技术？
PHP模板发展自Perl的Template。剥开神秘的面纱，模板技术的核心概念简单得令人心跳：要将你的美工页面指定为模板文件，只需将页面中活 动的内容部分(如数据库输出，用户交互等)定义成形式为的变量放在模板文件中相应的位置，当用户浏览时，由PHP程序文件打开该模板文件，将模板文件中定 义的变量进行替换。当然，替换成对应的数据库输出或者用户交互等动态生成内容。
Ease Template 模板能够改善网站的结构，其特点有:
* 可以在几秒钟改变整个站点的外观；
* 可以让网站更容易实现多语言；
* 抽象程序设计，没有垃圾HTML代码；
* 稳定性能初期的强大甚至超越混编代码；
* 提供完善的 Debug 平台；
* 开发效率快地令人惊讶；
* 更容易重用模版；
* 开源版权保护（保证您的版权不会被侵犯）。
官网:http://www.systn.com/
]]></description>
			<content:encoded><![CDATA[<p>PHP工程中的模板应用，关于它的好处，我想无论是在实际开发阶段还是上升到设计模式的角度都已经有很多“前辈先哲”&#8221;讨论过了。就项目实施而言，在一些 中型甚至大型的项目中，有效的将HTML（还有其他文本形式的表现层）和PHP代码分开，不仅在开发阶段可以提高界面设计人员和应用程序编写人员的工作效 率，更会给项目的测试和维护带来巨大的便利。</p>
<p>什么是模板技术？<br />
PHP模板发展自Perl的Template。剥开神秘的面纱，模板技术的核心概念简单得令人心跳：要将你的美工页面指定为模板文件，只需将页面中活 动的内容部分(如数据库输出，用户交互等)定义成形式为的变量放在模板文件中相应的位置，当用户浏览时，由PHP程序文件打开该模板文件，将模板文件中定 义的变量进行替换。当然，替换成对应的数据库输出或者用户交互等动态生成内容。</p>
<p>Ease Template 模板能够改善网站的结构，其特点有:</p>
<p>* 可以在几秒钟改变整个站点的外观；<br />
* 可以让网站更容易实现多语言；<br />
* 抽象程序设计，没有垃圾HTML代码；<br />
* 稳定性能初期的强大甚至超越混编代码；<br />
* 提供完善的 Debug 平台；<br />
* 开发效率快地令人惊讶；<br />
* 更容易重用模版；<br />
* 开源版权保护（保证您的版权不会被侵犯）。</p>
<p>官网:<a href="http://www.oulan.com/w/?BMt531mY">http://www.systn.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/06/08/et-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS的使用总结(引用)</title>
		<link>http://www.oulan.com/w/2009/06/05/extjs-rel/</link>
		<comments>http://www.oulan.com/w/2009/06/05/extjs-rel/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 03:20:06 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=35</guid>
		<description><![CDATA[不知不觉2008已经走到了尽头，在这近一年中，一直不断的尝试用ExtJS做项目，从1.1到现在的2.2，吃了不少苦头，也有不少收获，总结一下，一起分享！
1. ExtJS的定位是RIA，和Prototype、jQuery等类库的定位不同。使用ExtJS做开发，就是意味着以客户端开发为主，不然就不叫RIA框架了，而Prototype、jQuery等只是辅助性的客户端框架，和ExtJS不在同一条起跑先上。如果一定要和其它的框架做比较的话，应该和Isomorphic SmartClient、Backbase Enterprise Ajax之类的框架做比较，当然，和他们相比，ExtJS还是有很大的优势的。
原文网址
]]></description>
			<content:encoded><![CDATA[<p>不知不觉2008已经走到了尽头，在这近一年中，一直不断的尝试用ExtJS做项目，从1.1到现在的2.2，吃了不少苦头，也有不少收获，总结一下，一起分享！</p>
<p>1. <strong>ExtJS的定位是RIA，和Prototype、jQuery等类库的定位不同</strong>。使用ExtJS做开发，就是意味着以客户端开发为主，不然就不叫RIA框架了，而Prototype、jQuery等只是辅助性的客户端框架，和ExtJS不在同一条起跑先上。如果一定要和其它的框架做比较的话，应该和<a href="http://www.oulan.com/w/?BkecJbdq" target="_blank">Isomorphic SmartClient</a>、<a href="http://www.oulan.com/w/?IxgpGHl_" target="_blank">Backbase Enterprise Ajax</a>之类的框架做比较，当然，和他们相比，ExtJS还是有很大的优势的。</p>
<p><a href="http://www.oulan.com/w/?MDPLeQCG">原文网址</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/06/05/extjs-rel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>比较牛RIA框架(AJAX)</title>
		<link>http://www.oulan.com/w/2009/06/05/ajax-ria/</link>
		<comments>http://www.oulan.com/w/2009/06/05/ajax-ria/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 03:13:13 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=33</guid>
		<description><![CDATA[JavaScript现在是不是用的太多了。:)
backbase.com
http://demo2.backbase.com/rich-portal/demo/
smartclient.com
http://www.smartclient.com/
]]></description>
			<content:encoded><![CDATA[<p>JavaScript现在是不是用的太多了。:)</p>
<p>backbase.com<br />
<a href="http://www.oulan.com/w/?yFa9w1uN">http://demo2.backbase.com/rich-portal/demo/</a></p>
<p>smartclient.com</p>
<p><a href="http://www.oulan.com/w/?BkecJbdq">http://www.smartclient.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/06/05/ajax-ria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop分布式文件系统：架构和设计要点</title>
		<link>http://www.oulan.com/w/2009/06/04/hadoop-infrastr/</link>
		<comments>http://www.oulan.com/w/2009/06/04/hadoop-infrastr/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:06:49 +0000</pubDate>
		<dc:creator>Ou Lanhui</dc:creator>
				<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://www.oulan.com/w/?p=22</guid>
		<description><![CDATA[Hadoop分布式文件系统：架构和设计要点 原文：http://hadoop.apache.org/core/docs/current/hdfs_design.html 一、前提和设计目标 1、硬件错误是常态，而非异常情况，HDFS可能是有成百上千的server组成，任何一个组件都有可能一直失效，因此错误检测和快速、自动的恢复是HDFS的核心架构目标。 2、跑在HDFS上的应用与一般的应用不同，它们主要是以流式读为主，做批量处理；比之关注数据访问的低延迟问题，更关键的在于数据访问的高吞吐量。 3、HDFS以支持大数据集合为目标，一个存储在上面的典型文件大小一般都在千兆至T字节，一个单一HDFS实例应该能支撑数以千万计的文件。 4、 HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写，关闭之后就不需要改变。这一假设简化了数据一致性问 题，使高吞吐量的数据访问成为可能。典型的如MapReduce框架，或者一个web crawler应用都很适合这个模型。 5、移动计算的代价比之移动数据的代价低。一个应用请求的计算，离它操作的数据越近就越高效，这在数据达到海量级别的时候更是如此。将计算移动到数据附近，比之将数据移动到应用所在显然更好，HDFS提供给应用这样的接口。 6、在异构的软硬件平台间的可移植性。  二、Namenode和Datanode HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服 务器，负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个，负责管理节点上它们附带的存储。在内 部，一个文件其实分成一个或多个block，这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作，例如 打开、关闭、重命名文件和目录，同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创 建、删除和复制。Namenode和Datanode都是设计成可以跑在普通的廉价的运行linux的机器上。HDFS采用java语言开发，因此可以部 署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode节点，集群中的其他机器各跑一个Datanode实例。这个架构并不排 除一台机器上跑多个Datanode，不过这比较少见。
原文：

http://www.blogjava.net/killme2008/archive/2008/06/05/206043.html

]]></description>
			<content:encoded><![CDATA[<p>Hadoop<span style="font-family: 宋体,SimSun;"><span id="nekf2" lang="zh-CN">分布式文件系统：架构和设计要点</span></span><br id="nekf3" /> 原文：http://hadoop.apache.org/core/docs/current/hdfs_design.html<br id="nekf4" /> <span style="font-family: 宋体,SimSun;"><span id="nekf6" lang="zh-CN">一、前提和设计目标</span></span><br id="nekf7" /> 1<span style="font-family: 宋体,SimSun;"><span id="nekf9" lang="zh-CN">、硬件错误是常态，而非异常情况，</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf11" lang="zh-CN">可能是有成百上千的</span></span>server<span style="font-family: 宋体,SimSun;"><span id="nekf13" lang="zh-CN">组成，任何一个组件都有可能一直失效，因此错误检测和快速、自动的恢复是</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf15" lang="zh-CN">的核心架构目标。</span></span><br id="nekf16" /> 2<span style="font-family: 宋体,SimSun;"><span id="nekf18" lang="zh-CN">、跑在</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf20" lang="zh-CN">上的应用与一般的应用不同，它们主要是以流式读为主，做批量处理；比之关注数据访问的低延迟问题，更关键的在于数据访问的高吞吐量。</span></span><br id="nekf21" /> 3<span style="font-family: 宋体,SimSun;"><span id="nekf23" lang="zh-CN">、</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf25" lang="zh-CN">以支持大数据集合为目标，一个存储在上面的典型文件大小一般都在千兆至</span></span>T<span style="font-family: 宋体,SimSun;"><span id="nekf27" lang="zh-CN">字节，一个单一</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf29" lang="zh-CN">实例应该能支撑数以千万计的文件。</span></span><br id="nekf30" /> 4<span style="font-family: 宋体,SimSun;"><span id="nekf32" lang="zh-CN">、 </span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf34" lang="zh-CN">应用对文件要求的是</span></span>write-one-read-many<span style="font-family: 宋体,SimSun;"><span id="nekf36" lang="zh-CN">访问模型。一个文件经过创建、写，关闭之后就不需要改变。这一假设简化了数据一致性问 题，使高吞吐量的数据访问成为可能。典型的如</span></span>MapReduce<span style="font-family: 宋体,SimSun;"><span id="nekf38" lang="zh-CN">框架，或者一个</span></span>web crawler<span style="font-family: 宋体,SimSun;"><span id="nekf40" lang="zh-CN">应用都很适合这个模型。</span></span><br id="nekf41" /> 5<span style="font-family: 宋体,SimSun;"><span id="nekf43" lang="zh-CN">、移动计算的代价比之移动数据的代价低。一个应用请求的计算，离它操作的数据越近就越高效，这在数据达到海量级别的时候更是如此。将计算移动到数据附近，比之将数据移动到应用所在显然更好，</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf45" lang="zh-CN">提供给应用这样的接口。</span></span><br id="nekf46" /> 6<span style="font-family: 宋体,SimSun;"><span id="nekf48" lang="zh-CN">、在异构的软硬件平台间的可移植性。</span></span><br id="nekf49" /> <br id="nekf50" /> <span style="font-family: 宋体,SimSun;"><span id="nekf52" lang="zh-CN">二、</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf54" lang="zh-CN">和</span></span>Datanode<br id="nekf55" /> HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf57" lang="zh-CN">采用</span></span>master/slave<span style="font-family: 宋体,SimSun;"><span id="nekf59" lang="zh-CN">架构。一个</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf61" lang="zh-CN">集群是有一个</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf63" lang="zh-CN">和一定数目的</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf65" lang="zh-CN">组成。</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf67" lang="zh-CN">是一个中心服 务器，负责管理文件系统的</span></span>namespace<span style="font-family: 宋体,SimSun;"><span id="nekf69" lang="zh-CN">和客户端对文件的访问。</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf71" lang="zh-CN">在集群中一般是一个节点一个，负责管理节点上它们附带的存储。在内 部，一个文件其实分成一个或多个</span></span>block<span style="font-family: 宋体,SimSun;"><span id="nekf73" lang="zh-CN">，这些</span></span>block<span style="font-family: 宋体,SimSun;"><span id="nekf75" lang="zh-CN">存储在</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf77" lang="zh-CN">集合里。</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf79" lang="zh-CN">执行文件系统的</span></span>namespace<span style="font-family: 宋体,SimSun;"><span id="nekf81" lang="zh-CN">操作，例如 打开、关闭、重命名文件和目录，同时决定</span></span>block<span style="font-family: 宋体,SimSun;"><span id="nekf83" lang="zh-CN">到具体</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf85" lang="zh-CN">节点的映射。</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf87" lang="zh-CN">在</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf89" lang="zh-CN">的指挥下进行</span></span>block<span style="font-family: 宋体,SimSun;"><span id="nekf91" lang="zh-CN">的创 建、删除和复制。</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf93" lang="zh-CN">和</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf95" lang="zh-CN">都是设计成可以跑在普通的廉价的运行</span></span>linux<span style="font-family: 宋体,SimSun;"><span id="nekf97" lang="zh-CN">的机器上。</span></span>HDFS<span style="font-family: 宋体,SimSun;"><span id="nekf99" lang="zh-CN">采用</span></span>java<span style="font-family: 宋体,SimSun;"><span id="nekf101" lang="zh-CN">语言开发，因此可以部 署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的</span></span>Namenode<span style="font-family: 宋体,SimSun;"><span id="nekf103" lang="zh-CN">节点，集群中的其他机器各跑一个</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf105" lang="zh-CN">实例。这个架构并不排 除一台机器上跑多个</span></span>Datanode<span style="font-family: 宋体,SimSun;"><span id="nekf107" lang="zh-CN">，不过这比较少见。</span></span></p>
<p><span style="font-family: 宋体,SimSun;"><span lang="zh-CN">原文：<br />
</span></span></p>
<p><span style="font-family: 宋体,SimSun;"><span lang="zh-CN"><a href="http://www.oulan.com/w/?j3TssS6j">http://www.blogjava.net/killme2008/archive/2008/06/05/206043.html</a><br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oulan.com/w/2009/06/04/hadoop-infrastr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
