﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-把永恒在一刹那间收藏-文章分类-net</title><link>http://www.blogjava.net/gm_jing/category/44339.html</link><description>生活之点点滴滴</description><language>zh-cn</language><lastBuildDate>Tue, 11 Jan 2011 21:25:41 GMT</lastBuildDate><pubDate>Tue, 11 Jan 2011 21:25:41 GMT</pubDate><ttl>60</ttl><item><title>【引】Load Balance实现方法</title><link>http://www.blogjava.net/gm_jing/articles/342496.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Fri, 07 Jan 2011 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/342496.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/342496.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/342496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/342496.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/342496.html</trackback:ping><description><![CDATA[<p><font color="#808080">1.基于 DNS run repeating</font></p>
<p><font color="#808080">最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的，在DNS服务器中，可以为多个不同的
地址配置同一个名字，而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此，对于同一个名字，不同的客户机会得到不同的地址，他们也就
访问不同地址上的Web服务器，从而达到负载均衡的目的。</font></p>
<p><font color="#808080"><em><span style="background-color: yellow;">me:利用一个DNS域名对应多个ip地址，我想一则DNS对应的ip数量有最大值，二如果直接访问ip不能体现loadbanance </span></em><br />
</font></p>
<div>
<div>
<div>
<div><img class="blogimg" src="http://hiphotos.baidu.com/%5Feding/pic/item/4ed06fd3441f44d2a9ec9a2e.jpg" border="0"  alt="" />例如如果希望使用三个Web服务器来回应对<a href="http://www.exampleorg.org.cn/">www.exampleorg.org.cn</a>的HTTP请求，就可以设置该域的DNS服务器中关于该域的数据包括有与下面例子类似的结果：</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www&nbsp;&nbsp;&nbsp;&nbsp;  N&nbsp;&nbsp;  A &nbsp;&nbsp;  192.168.1.1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  www2&nbsp;&nbsp;  IN&nbsp;&nbsp;  A &nbsp;&nbsp;  192.168.1.2</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  www3&nbsp;&nbsp;  IN&nbsp;&nbsp;  A &nbsp;&nbsp;  192.168.1.3</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  www&nbsp;&nbsp;  IN&nbsp;&nbsp;  CNAME&nbsp;&nbsp;  www1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  www&nbsp;&nbsp;  IN&nbsp;&nbsp;  CNAME&nbsp;&nbsp;  www2</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  www&nbsp;&nbsp;  IN&nbsp;&nbsp;  CNAME&nbsp;&nbsp;  www3</p>
<p>此后外部的客户机就可能随机的得到对应www的不同地址，那么随后的HTTP请求也就发送给不同地址了。</p>
<p>DNS
负载均衡的优点是简单、易行，并且服务器可以位于互联网的任意位置上，当前使用在包括Yahoo在内的Web站点上。然而它也存在不少缺点，一个缺点是为
了保证DNS数据及时更新，一般都要将DNS的刷新时间设置的较小，但太小就会造成太大的额外网络流量，并且更改了DNS数据之后也不能立即生效；第二点
是DNS负载均衡无法得知服务器之间的差异，它不能做到为性能较好的服务器多分配请求，也不能了解到服务器的当前状态，甚至会出现客户请求集中在某一台服
务器上的偶然情况。</p>
<p>2.基于Reverse Proxy Loan Balance</p>
<p>使用代理服务器可以将请求转发给内部的Web服务器，使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术，让代理服务器
将请求均匀转发给多台内部Web服务器之一上，从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同，标准代理方式是客户使用代理访问多个外部
Web服务器，而这种代理方式是多个客户使用它访问内部Web服务器，因此也被称为反向代理模式。</p>
<p>实现这个反向代理能力并不能算是一个特别复杂的任务，但是在负载均衡中要求特别高的效率，这样实现起来就不是十分简单的了。每针对一次代理，<span style="background-color: yellow;">代理服
务器就必须打开两个连接，一个为对外的连接，一个为对内的连接，因此对于连接请求数量非常大的时候，代理服务器的负载也就非常之大了，在最后反向代理服务
器会成为服务的瓶颈。</span>例如，使用Apache的mod_rproxy模块来实现负载均衡功能时，提供的并发连接数量受Apache本身的并发连接数量的限
制。一般来讲，可以使用它来对连接数量不是特别大，但每次连接都需要消耗大量处理资源的站点进行负载均衡，例如搜寻。</p>
<p>使用反向代理的好处是，可以将负载均衡和代理服务器的高速缓存技术结合在一起，提供有益的性能，具备额外的安全性，外部客户不能直接访问真实的服务
器。并且实现起来可以实现较好的负载均衡策略，将负载可以非常均衡的分给内部服务器，不会出现负载集中到某个服务器的偶然现象。</p>
<p><font color="#808080"><em><span style="background-color: yellow;">me:这样这个代理服务器需要分发请求，负担比较大 <br />
</span></em></font></p>
<p><font color="#808080"><em><span style="background-color: yellow;"><br />
</span></em></font></p>
<p>3.基于NAT Load Balance</p>
<p>网络地址转换为在内部地址和外部地址之间进行转换，以便具备内部地址的计算机能访问外部网络，而当外部网络中的计算机访问地址转换网关拥有的某一外
部地址时，地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址，此后外部网络中的计算机就
各自与自己转换得到的地址上服务器进行通信，从而达到负载分担的目的。</p>
<div>
<div>
<p><img class="blogimg" src="http://hiphotos.baidu.com/%5Feding/pic/item/5a00d636ce9a7bd0a3cc2b28.jpg" border="0"  alt="" /></p>
<p>地址转换可以通过软件方式来实现，也可以通过硬件方式来实现。使用硬件方式进行操作一般称为交换，而当交换必须保存TCP连接信息的时候，这种针对
OSI
网络层的操作就被称为第四层交换。支持负载均衡的网络地址转换为第四层交换机的一种重要功能，由于它基于定制的硬件芯片，因此其性能非常优秀，很多交换机
声称具备400MB-800MB的第四层交换能力，然而也有一些资料表明，在如此快的速度下，大部分交换机就不再具备第四层交换能力了，而仅仅支持第三层
甚至第二层交换。软件方法是使用免费的自由软件来完成这项任务。其中包括Linux Virtual Server
Project中的NAT实现方式，或者在FreeBSD下natd、PF实现方式。</p>
<p><br />
</p>
<p><font color="#808080"><em><span style="background-color: yellow;"><span style="background-color: yellow;"><font color="#808080"><em><span style="background-color: yellow;">me:</span></em></font>网络地址转换 (NAT) 是一个 Internet </span></span></em></font><font color="#808080"><em><span style="background-color: yellow;"><span style="background-color: yellow;">IETF</span></span></em></font><font color="#808080"><em><span style="background-color: yellow;"><span style="background-color: yellow;"> 标准，用于允许专用网络上的多台 PC (使用<strong><span style="color: red;">专用地址段</span></strong>，例如 10.0.x.x、192.168.x.x、172.x.x.x) 共享单个、全局路由的 IPv4 地址。IPv4 地址日益不足是经常部署 NAT 的一个主要原因。Windows XP 和 Windows Me 中的&#8220;Internet 连接共享&#8221;及许多Internet 网关设备都使用 NAT，尤其是在通过 DSL 或电缆调制解调器连接宽带网的情况下。</span></span></em></font></p>
</div>
<p>4.DSR（Direct Server Retun）Load Balance</p>
<p>上面使用网络地址转换来实现负载分担，毫无疑问所有的网络连接都必须通过中心负载均衡器，那么如果负载特别大，以至于后台的服务器数量不再在是几
台、十几台，而是上百台甚至更多，即便是使用性能优秀的硬件交换机也会遇到瓶颈。此时问题将转变为，如何将那么多台服务器分布到各个互联网的多个位置，分
散网络负担。当然这可以通过综合使用DNS和NAT两种方法来实现，然而更好的方式是使用一种半中心的负载均衡方式。</p>
<p>在这种半中心的负载均衡方式下，即当客户请求发送给负载均衡器的时候，中心负载均衡器将请求打包并发送给某个服务器，<span style="color: red;">而服务器的回应请求不再返回给中心负载均衡器，而是直接返回给客户，</span><span style="color: red;">因此中心负载均衡器只负责接受并转发请求，其网络负担就较小了。</span></p>
<div>
<div><img class="blogimg" src="http://hiphotos.baidu.com/%5Feding/pic/item/e51ee23ece3e9c3070cf6c2a.jpg" border="0"  alt="" /></div>
<p>上图来自Linux Virtual Server Project，为他们使用IP隧道实现的这种负载分担能力的请求/回应过程，此时每个后台服务器都需要进行特别的地址转换，以欺骗浏览器客户，认为它的回应为正确的回应。</p>
<p>这种方式的硬件实现方式也非常昂贵，但是会根据厂商的不同，具备不同的特殊功能，例如对SSL的支持等。我所用到的就是这种方法，DSR+PR来实现负载均衡。</p>
<p><br />
</p>
</div>
</div>
<p> </p>
</div>
</div>
</div>
<p> </p>
<p> </p>
<p> </p>
<div>比较上面的负载均衡方式，DNS最容易，也最常用，能够满足一般的需求。但如果需要进一步的管理和控制，可以选用反向代理方式或NAT方式，如果访问量很大而且经济条件许可的状况下还是选择DSR+RP方式比较好。</div>
<img src ="http://www.blogjava.net/gm_jing/aggbug/342496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2011-01-07 11:42 <a href="http://www.blogjava.net/gm_jing/articles/342496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络7层模型</title><link>http://www.blogjava.net/gm_jing/articles/315778.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Thu, 18 Mar 2010 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/315778.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/315778.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/315778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/315778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/315778.html</trackback:ping><description><![CDATA[<p><span style="color: rgb(0,0,0)">OSI七层模型结构图如图1所示。</span></p>
<p style="text-align: center"><span style="color: rgb(0,0,0)"><strong><img height="199" alt="1" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090917/1.jpg" width="126" /></strong></span></p>
<p style="text-align: center"><span style="color: rgb(0,0,0)"><strong>图 1 OSI七层模型</strong></span></p>
<p><span style="color: rgb(0,0,0)"><strong>物理层</strong> ： O S I 模型的最低层或第一层，该层包括物理连网媒介，如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡，你就建立了计算机连网的基础。换言之，你提供了一个物理层。尽管物理层不提供纠错服务，但它能够设定数据传输速率并监测数据出错率。网络物理问题，如电线断开，将影响物理层。</span></p>
<p><span style="color: rgb(0,0,0)"><strong>数据链路层</strong>： O S I 模型的第二层，它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输，从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包，它不仅包括原始数据，还包括发送方和接收方的网络地址以及纠错和控制信息。其中的地址确定了帧将发送到何处，而纠错和控制信息则确保帧无差错到达。数据链路层的功能独立于网络和它的节点和所采用的物理层类型，它也不关心是否正在运行Word、 Excel或使用Internet 。有一些连接设备，如交换机，由于它们要对帧解码并使用帧信息将数据发送到正确的接收方，所以它们是工作在数据链路层的。</span></p>
<p><span style="color: rgb(0,0,0)"><strong>网络层</strong>： O S I 模型的第三层，其主要功能是将网络地址翻译成对应的物理地址，并决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点Ａ 到另一个网络中节点Ｂ 的最佳路径。由于网络层处理路由，而路由器因为即连接网络各段，并智能指导数据传送，属于网络层。在网络中，&#8220;路由&#8221;是基于编址方案、使用模式以及可达性来指引数据的发送.</span></p>
<p><span style="color: rgb(0,0,0)"><strong>传输层</strong>： O S I 模型中最重要的一层。传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外，传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如，以太网无法接收大于1 5 0 0 字节的数据包。发送方节点的传输层将数据分割成较小的数据片，同时对每一数据片安排一序列号，以便数据到达接收方节点的传输层时，能以正确的顺序重组。该过程即被称为排序。工作在传输层的一种服务是 T C P / I P 协议套中的T C P （传输控制协议），另一项传输层服务是I P X / S P X 协议集的S P X （序列包交换）。 </span></p>
<p><span style="color: rgb(0,0,0)"><strong>会话层</strong>： 负责在网络中的两节点之间建立和维持通信。 会话层的功能包括：建立通信链接，保持会话过程通信链接的畅通，同步两个节点之间的对 话，决定通信是否被中断以及通信中断时决定从何处重新发送。你可能常常听到有人把会话层称作网络通信的&#8220;交通警察&#8221;。当通过拨号向你的 I S P （因特网服务提供商）请求连接到因特网时，I S P 服务器上的会话层向你与你的P C 客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时，你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。 <br />
<strong>表示层</strong>： 应用程序和网络之间的翻译官，在表示层，数据将按照网络能理解的方案进行格式化；这种格式化也因所使用网络的类型不同而不同。表示层管理数据的解密与加密，如系统口令的处理。例如：在 Internet上查询你银行账户，使用的即是一种安全连接。你的账户数据在发送前被加密，在网络的另一端，表示层将对接收到的数据解密。除此之外，表示层协议还对图片和文件格式信息进行解码和编码。</span></p>
<p><span style="color: rgb(0,0,0)"><strong>应用层</strong>： 负责对软件提供接口以使程序能使用网络服务。术语&#8220;应用层&#8221;并不是指运行在网络上的某个特别应用程序 ，应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。</span></p>
<p>TCP/IP四层模型如图2所示：</p>
<p style="text-align: center"><strong><img height="287" alt="2" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090917/2.jpg" width="434" /></strong></p>
<p style="text-align: center"><strong>图2 TCP/IP四层模型</strong></p>
<p><span style="color: rgb(0,0,0)">实际应用中往往采取折中的办法，即综合OSI和TCP/IP的优点，采用一种只有五层协议的体系结构。即应用层、传输层、网络层、数据链路层和物理层。具体每个层的功能如下：</span></p>
<p><span style="color: rgb(0,0,0)">(1) 应用层：确定了进程（正在运行的程序）之间通信性质以满足用户的需要。它提供应用进程所需信息交换以及用户代理语义上有意义信息交换所需功能。常用 HTTP、FTP等属于应用层协议。</span></p>
<p><span style="color: rgb(0,0,0)">(2) 传输层：负责主机中两个进程之间通信，传输单位是报文段。运输层具有复用和分用功能。即运输层中的多个进程可复用下面网络层功能。到了主机的网络层后，再使用分用功能，将数据交给相应的进程.可分为面向连接的TCP和无连接的UDP协议</span></p>
<p><span style="color: rgb(0,0,0)">(3) 网络层：为分组交换网上的不同主机提供通信。传输单位为分组。路由选择是网络层的主机功能。该层为无连接的，不可靠的协议。<br />
(4) 数据链路层：在两个相邻结点间线路上无差错地传送以帧为单位的数据。每一帧包括数据和必要控制信息，其控制信息包括：同步信息、地址信息、差错控制以及流量控制信息等。链路层把一条有可能出差错的实际链路，转变为让网络层向下看上去好像是一条不出差错的链路。</span></p>
<p><span style="color: rgb(0,0,0)">(5) 物理层：透明地传送比特流。在物理层上所传送的单位是比特。<br />
注意：传递信息所利用的一些物理媒体如双绞线、同轴电缆不包括在该层内，透明含义：某一实际存在的事物看起来好像并不存在一样。&#8220;透明地传送比特流&#8221;表示经实际电路传送后的比特流没有发生变化。</span></p>
<p><span style="color: rgb(0,0,0)">数据传送过程如图3所示：</span></p>
<p style="text-align: center"><span style="color: rgb(0,0,0)"><strong><img height="329" alt="3" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rocket5725/EntryImages/20090917/3.jpg" width="513" /></strong></span></p>
<p style="text-align: center"><span style="color: rgb(0,0,0)"><strong>图 3 两台主机数据传输过程</strong></span></p>
 <img src ="http://www.blogjava.net/gm_jing/aggbug/315778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2010-03-18 14:09 <a href="http://www.blogjava.net/gm_jing/articles/315778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaEE集群原理</title><link>http://www.blogjava.net/gm_jing/articles/270009.html</link><dc:creator>黎夕</dc:creator><author>黎夕</author><pubDate>Mon, 11 May 2009 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/gm_jing/articles/270009.html</guid><wfw:comment>http://www.blogjava.net/gm_jing/comments/270009.html</wfw:comment><comments>http://www.blogjava.net/gm_jing/articles/270009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gm_jing/comments/commentRss/270009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gm_jing/services/trackbacks/270009.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Preface More and more mission-critical and large scale applications are now running on Java 2, Enterprise Edition (J2EE). Those mission-critical applications such as banking and billing ask for more...&nbsp;&nbsp;<a href='http://www.blogjava.net/gm_jing/articles/270009.html'>阅读全文</a><img src ="http://www.blogjava.net/gm_jing/aggbug/270009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gm_jing/" target="_blank">黎夕</a> 2009-05-11 10:32 <a href="http://www.blogjava.net/gm_jing/articles/270009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>