??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成电影福利在线播放,色偷偷噜噜噜亚洲男人,亚洲AV无码专区在线电影成人http://m.tkk7.com/conans/articles/364566.htmlCONANCONANTue, 22 Nov 2011 07:01:00 GMThttp://m.tkk7.com/conans/articles/364566.html<script>
function getInfo()
{
var s = "";
s += " |页可见区域宽:(x)"+ document.body.clientWidth;
s += " |页可见区域高:(x)"+ document.body.clientHeight;
s += " |页可见区域宽:(x)"+ document.body.offsetWidth + " (包括边线和滚动条的宽)";
s += " |页可见区域高:(x)"+ document.body.offsetHeight + " (包括边线的宽)";
s += " |页正文全文宽:(x)"+ document.body.scrollWidth;
s += " |页正文全文高:(x)"+ document.body.scrollHeight;
s += " |页被卷ȝ?ff)Q?+ document.body.scrollTop;
s += " |页被卷ȝ?ie)Q?+ document.documentElement.scrollTop;
s += " |页被卷ȝ左:(x)"+ document.body.scrollLeft;
s += " |页正文部分上:(x)"+ window.screenTop;
s += " |页正文部分左:(x)"+ window.screenLeft;
s += " 屏幕分L率的高:(x)"+ window.screen.height;
s += " 屏幕分L率的宽:(x)"+ window.screen.width;
s += " 屏幕可用工作区高度:(x)"+ window.screen.availHeight;
s += " 屏幕可用工作区宽度:(x)"+ window.screen.availWidth;
s += " 你的屏幕讄?"+ window.screen.colorDepth +" 位彩?;
s += " 你的屏幕讄 "+ window.screen.deviceXDPI +" 像素/英寸";
//alert (s);
}
getInfo();
</script>
在我本地试当中Q?
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
卛_获得Q很单,很方ѝ?
而在公司目当中Q?
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则?
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果在页面中dq行标记的话

在IE中:(x)
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
在FireFox中:(x)
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
?
在Opera中:(x)
document.body.clientWidth ==> 可见区域宽度
document.body.clientHeight ==> 可见区域高度
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)(j)
document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)(j)
而如果没有定义W3C的标准,?
IE为:(x)
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0
FireFox为:(x)
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)(j)document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)(j)
Opera为:(x)
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)(j)document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)(j)
真是一仉?ch)事情,其实开发来看,宁可一些对象和Ҏ(gu)Q不使用最新的标准要方便许多啊?br />


有时候需要取面的底? ׃(x)用到document.body.clientHeight , 在HTML 标准?q一句就能取到整个页面的高度, 不论body 的实际内容到底有多高, 例如, 1074*768 的分辨率, 面最大化? q个高度Uؓ(f)720 , 即ə面上只有一?#8221;hello world” , 也仍然取?20.

可是在XHTML? 如果body 体中只有一? 则document.body.clientHeight 只能取到那一行的高度, U?0px, q时如何q想取到整个面的高? p用document.documentElement.clientHeight 来获取了(jin).

原因? 在HTML ? body 是整个DOM 的根, 而在XHTML ? document 才是? body 不再是根, 所以取body 的属性时, 不能再取到整个页面的?

区别新旧标准的行?
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
前者指明该面使用旧标? 后者指明该面使用新标?

ȝ:
XHTML中用 document.documentElement.clientHeight 代替
document.body.clientHeight



CONAN 2011-11-22 15:01 发表评论
]]>
主题Qsession的؜׃安全http://m.tkk7.com/conans/articles/338674.htmlCONANCONANMon, 22 Nov 2010 03:24:00 GMThttp://m.tkk7.com/conans/articles/338674.html[说明: 本文?nbsp;http://www.smithfox.com/?e=32 原创, 转蝲h明原? 谢谢]

session的安全有两层意?

1> Ҏ(gu)l客h? 不会(x)因ؓ(f)session的share和造成混ؕ, 使end-user的信息泄漏以?qing)其他安全问?/p>

2> 对系l本w来? 不会(x)因ؓ(f)有hacker通过模拟sessionid和cookie来获取server信Qq而进行恶意破?/p>

让我们逐层解释和展开问题:

1> 首先说明, 本文所有session专指Servlet HttpSession

2> 后台Session和Browser之间通过JSESSIONID来关? JSESSIONID是Servlet标准,也是关键? Servle规定Browser用Mem Cookie来存储JSESSIONID, 注意q不是disk cookie.一旦浏览器关闭后JSESSIONID׃PC消失, 更加安全.

3> Session也是一U很好的安全认证机制, 后台?x)标识session是不是已l被认证? 如果?׃?x)让用户再输入password. JSESSIONID可以被理解成Z个已l认证的key, 所以Session有安全问?

4> Servlet容器不会(x)构造相同的JSESSIONID, 客户端也很难预期JSESSIONID

5> HTTPS SSL{技术可以防止网l传输中有h恶意改JSESSIONID

6> 用Cookie的情况JSESSIONID必ȝURLRewrite. 我们可以通过对URL本n采用摘要法Q自认证来防止恶意篡改JSESSIONID.

比如:  http://www.smithfox.com/abc?x=x&y=y&JSESSIONID=sdfdfsdfsdfsdfsdf&HWD=4FE23AD9892C

HWD的值是Ҏ(gu)个URL的一个摘要算? 如果有h改动?jin)URLQ这个HWD值就对不上了(jin), 前提应该是这个算法别Z知道?

7> 用户在自qPC上肯定是可以看到当前的JSESSIONID? p׃在自q日记中看C(jin)自己备忘的password一? q个不是技术安全问?

8> 一台机器有多个自然人在使用Q?出现的JSESSIONIDƺ骗Q?应该没有技术办法可以解? 只能是end-user自己心(j)Q用完就关闭Browser. 我想q应该是在情理之中的? 你是合租被盗应该是怪不得小Z安的, 也是需要自己^时提高防盗意识,呵呵.

9> 最q看到Tomcat7有个新的Ҏ(gu)说是支?防JSESSIONID劫持", q个需要更多了(jin)?

10> User和Session的关p?

Session是只认JSESSIONID不认人的, 包括自然人和pȝAccount. q个问题比较?

我们用EndUser来表C然hQ?User-Account表示pȝ帐号Q?我们分析以下几种情况

10.1> 两个EndUserq一个UserAccountq且在同一台PC, q个混ؕ不是技术问题, 大家都可以理?/p>

10.2> 两个EndUser分别使用不同的UserAccount在同一台PC, q个是合U情况, 造成混ؕ不一定是技术问?/p>

10.3> 某EndUser有两个UserAccount在同一台PC? 我们需要考虑JSESSIONID在client端可以会(x)混ؕ的问?

因ؓ(f)不同的浏览器对于Cookie share的策略不同, 我们按程序设计必L最Ҏ(gu)出问题的Case惻I比如IE8.

无论你是IE多窗口还是多TAB都是Share Cookie? 所以ȝ指导斚w是在client端做一些机制不允许用户q么?

Google 的gmail是q么做的, 你可以一台机器上用IE打开两个不同的gmail account(两个H口或是两个TAB都行)Q点新email或是其他需要和后台交互的行为时Qgmail?x)退Z个,提示让你重新l(f)oginq且 gmail account已经固定为后输入的User-Account.

具体在Client怎么防止两个Accountq需高手指点.

10.4> 某EndUserA用自qUserAccountA先已lloginQ再讉K另一个UserAccountB的资源,而且该资源是需要访问密码的. 

q种情况Q往往因ؓ(f)后台Session设计的层ơ不清晰Q造成?jin)UserAccountA无需Passwordq接访问到?jin)UserAccountB的资? 而且q个解决Ҏ(gu)不能攑֜Client端, 因ؓ(f)讉KUserAccountB的资源可能就是一个在Email中的LinkQ这个click动作客户端程序JavaScript是无法拦截的.

10.5> ȝ来说:  

11> 从第10>点可以看出, session和自然h或是UserAccount有着千丝万缕的联p,但不是所有的pȝ只有Userq一层业务概念,所以我们需要理解后台的Session分划和设计好Session.Attribute层次.

? 们以一个假设业务模型ؓ(f)例说明问? q是一个只面向企业的图片共享web服务, 可以为多个公?企业)提供服务, 用户必须属于某一个公? 用户可以创徏"囄分组", 囄分组可以讄为private(需要密码访?, 也可以直接公开. 囄分组是公司胦(ch)? user可以创徏"囄分组", 但是囄分组资源是归属公? 同一公司内部的所有user可以直接讉K囄分组(如果是公开), 也可以通过password(如果需?讉K囄分组.

q个业务模型? 既有比U(ku)ser更高层的概念, 比如公司. 也有比U(ku)ser更底的概? 比如用户的上传图片分l?imageGroup).

11.1> 不同的war包部|在tomcat,不同的war包之间的session是不?x)؜q, q个是由tomcat架构军_? 另他的没有做q调? 也有可能是Servlet标准, 有高手可以帮认一?/strong>.

11.2> 多个公司又是q行在同一个tomcat application? 怎么防止不同公司之间的session混ؕ

可以采用cM于防止重复提交的技? 首先做一个优先很高的filter, 每次reqeust和response都需要经q这个filter

? 所有login模块, 讄一个ticket cookie,写入当前company信息, 每个reqeust到达的第一步就是检client cookie和当前的URL信息, 以及(qing)session信息是否一? 如果enduser是从一个company中click?jin)一个其他company的link, 该filter׃(x)发现ticket信息不一? 然后强制logout, 再次让user login. q且每次response时做ticket的改? 使client无法模拟

11.3> 怎么防止imageGroup信息混ؕ

Session本n是一个集? 具体q是使用session.attribute["key"]

Session本n是User level? 对于低于User level的信? 需要好好规划attribute key

惛_q样的case:

有两个imageGroup, 一个是public? 一个是需要password? 

http://www.smithfox.com/companyIBM/public_images/

http://www.smithfox.com/companyIBM/password_images/

后台对imageGroup输入密码逻辑的伪代码如下:

boolean needpasswd = true;
if(session.getAttribute("NEED_PASSWORD") == null){
session.setAttribute("NEED_PASSWORD", needpasswd);
boolean needpasswd = 一个很耗时很复杂的验证函数(user, imageGroup, xxx);
} else{
needpasswd session.getAttribute("NEED_PASSWORD");
}
if (needpasswd ){
showPasswordDialog() ;

看出什么问题没?

应该上面的代码中的所有attribute keyҎ(gu) "NEED_PASSWORD"+{imageGroupID}

否则用户只要先看?jin)一个public? 后面的所有图片分l都无需passwd可以访问了(jin), 即ɘq个imageGroup是private?

13> 在用session之前一定需要检查是否真的一定需要session来解? 比如只是想传value到JSP pageQ?nbsp;request.setAttribte()更适合

14> 比较?yu)而多的业务对象,如果必须save在session一定要?qing)时removeAttribute否则session用的内存?sh)(x)暴?

因ؓ(f)Session不会(x)因ؓ(f)客户端不用了(jin)Q就?x)自动清理,而是必须到SessionTimeOut才会(x)Q如果在SessionTimeOut期间内有很多的对象在Session内,׃(x)有问题。所以需要即时清理已l不用的Session.Attribute

15> Cookie和Session一? 同样需要注?cookie key的层ơ问题,以及(qing)q期问题Qdomain, path问题{等



CONAN 2010-11-22 11:24 发表评论
]]>
各大型网站架构分析收?/title><link>http://m.tkk7.com/conans/articles/325054.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 02 Jul 2010 03:24:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/325054.html</guid><description><![CDATA[form: http://blog.csdn.net/lovingprince/archive/2008/11/26/3379710.aspx<br /> <br /> 1. PlentyOfFish |站架构学习(fn)<br /> <a target="_blank">http://www.dbanotes.net/arch/plentyoffish_arch.html</a><br /> <br /> 采取 Windows 技术\U的 Web 2.0 站点q不多,除了(jin) MySpace Q另外就是这? PlentyOfFish。这个站Ҏ(gu)?“Online Dating” 服务。一个o(h)人|z乐道的、惊人的数据是这个只有一个h(创徏人Markus FrindQ的站点价?10 亿,估计要让很多人眼热,更何? Markus Frind 每天只用两个时打理|站–可操作性很强嘛?br /> <br /> 2. 从LiveJournal后台发展?大型|站pȝ架构以及(qing)性能优化Ҏ(gu)<br /> <a target="_blank">http://www.example.net.cn/archives/2006/03/olivejournaloio.html</a><br /> <br /> LiveJournal?9q始于校园中的项目,几个人出于爱好做?jin)这样一个应用,以实C下功能:(x)<br /> * 博客Q论?br /> * C会(x)性网l,扑ֈ朋友<br /> * 聚合Q把朋友的文章聚合在一?br /> <br /> LiveJournal采用?jin)大量的开源YӞ甚至它本w也是一个开源Y件?br /> <br /> 在上U后QLiveJournal实现?jin)非常快速的增长Q?br /> * 2004q?月䆾Q?80万注册用戗?br /> * 2005q?月䆾Q?80万注册用戗?br /> * 2005q?月䆾Q?90万注册用戗?br /> * 辑ֈ?jin)每U钟上千ơ的面h?qing)处理?br /> * 使用?jin)大量MySQL服务器?br /> * 使用?jin)大量通用lg?br /> <br /> 3. YouTube 的架构扩?br /> <a target="_blank">http://www.dbanotes.net/opensource/youtube_web_arch.html</a><br /> <br /> 在西雅图扩展性的技术研讨会(x)上,YouTube ?Cuong Do 做了(jin)关于 YouTube Scalability 的报告。视频内容在 Google Video 上有(地址)Q可惜国内用L(fng)不到?br /> Kyle Cordes 对这个视频中的内容做?jin)介l。里面有不少技术性的内容。值得分n一下?Kyle Cordes 的介l是本文的主要来?<br /> <br /> 4. WikiPedia 技术架构学?fn)分?br /> <a target="_blank">http://www.dbanotes.net/opensource/wikipedia_arch.html</a><br /> <br /> l基癄(WikiPedia.org)位列世界十大|站Q目前排名第八位。这是开攄力量?br /> <br /> 来点直接的数据:(x)<br /> <br /> * 峰值每U钟3万个 HTTP h<br /> * 每秒?3Gbit 量, q乎375MB<br /> * 350 ?PC 服务?br /> <br /> 5. Tailrank |站架构<br /> <a target="_blank">http://www.dbanotes.net/review/tailrank_arch.html</a><br /> <br /> 每天C千万计的 Blog 内容中,实时的热Ҏ(gu)什? Tailrank q个 Web 2.0 Startup 致力于回{这个问题?br /> <br /> 专门爆料|站架构?Todd Hoff ?Kevin Burton q行?jin)采ѝ于是我们能?jin)解一?Tailrank 架构的一些信息。每时索引 2400 万的 Blog ?FeedQ内容处理能力ؓ(f) 160-200MbpsQIO 写入大约?0-15MBps。每个月要处?52T 之多的原始数据。Tailrank 所用的爬虫现在已经成ؓ(f)一个独立品:(x)spinn3r?br /> <br /> 6. LinkedIn 架构W记<br /> <a target="_blank">http://www.dbanotes.net/arch/linkedin.html</a><br /> <br /> LinkedIn 雇员?180 个,?Web 2.0 公司中算是比较多的,不过人家自从 2006 q就盈利?jin),q在 Web 2.0 站点中可少的。用戯q?1600 万,现在每月新增 100 万,50Q??x)员来自?中国用户不少Q也包括?.<br /> <br /> 7. YahooQ社区架?br /> <a target="_blank">http://www.dbanotes.net/arch/yahoo_arch.html</a><br /> <br /> 旧金׃D行的 QCon ?x)议带给我们很多新鲜的信息。虽然没Z(x)参加Q但是看看各个网?#8221;晒架?#8221;也是个比较过瘄事情。请参观q收藏这个页面:(x)Architectures you’ve always wondered about?br /> <br /> 8. Craigslist 的数据库架构<br /> <a target="_blank">http://www.dbanotes.net/database/craigslist_database_arch.html</a><br /> <br /> Craigslist l对是互联网的一个传奇公司。根据以前的一则报道:(x)<br /> <br /> 每月过 1000 万h使用该站服务Q月览量超q?30 亿次Q?Craigslist每月新增的帖子近 10 亿条??)|站的网|量在以每q近癑ր的速度增长。Craigslist 至今却只?18 名员?现在可能?x)多一些了(jin))?br /> <br /> 9. Fotolog.com 的技术信息拾?br /> <a target="_blank">http://www.dbanotes.net/review/fotolog_arch.html</a><br /> <br /> 管是世界上最大的囄服务|站, Fotolog.com 在国内的名气q不是很响亮, 每当提到囄服务, 很多人第一个会(x)惌v Flickr. 但实际上 Fotolog 也的是很猛? Alexa 上的排名一直在 Flickr 前面, 目前注册用户过 1100 ? 而前不久也卖?jin)一个好价钱, 9000 万美? 下来的? 1 个注册用户大U?9 金. Yupoo 的刘q阳可以L(fng)算自己的网站如果卖l老外是怎样一个h(hun)g(jin).<br /> <br /> 10. Digg |站架构<br /> <a target="_blank">http://www.dbanotes.net/arch/digg_arch_cache_and_shard.html</a><br /> <br /> Digg 工程师采?LAMP (Linux, Apache, MySQL and PHP) 模式。这?Alexa 排名?100 左右的、自我估?1.5 亿美金的站点目前有超q?100 台的 PC 服务?_了(jin))Q可以粗略分成三个部分:(x)数据库服务器QW(xu)eb 服务器,搜烦(ch)服务器?br /> <br /> 11. Amazon ?Dynamo 架构<br /> <a target="_blank">http://www.dbanotes.net/techmemo/amazon_dynamo.html</a><br /> <br /> 我在 DBAnotes.net 上记录过不少比较大的|站架构分析(eg: eBay [1], eBay [2]) QAmazon 一直找不到太多的资料。国?jin)期间读C(jin)一关?Amazon Dynamo 的论文,非常_ֽ。Amazon Dynamo q个高可用、可扩展存储体系支撑?jin)Amazon 不少核心(j)服务.<br /> <br /> 12. 财帮子(caibangzi.comQ网站架?br /> <a target="_blank">http://www.dbanotes.net/arch/caibangzi_web_arch.html</a><br /> <br /> 财帮?caibangzi.com) 定位?#8221;基金理胦(ch)C֌”。是国内讉K量最大的Z Ruby on rails ?startup 目?#8220;理胦(ch)”q个词据说是光大银行发明的,且不ȝQ不可否认的是,目前国内”理胦(ch)”是个很有潜力的切入点。胦(ch)帮子|站潜在用户还是很大的?br /> <br /> 13. ?jin)解一?Technorati 的后台数据库架构<br /> <a target="_blank">http://www.dbanotes.net/web/technorati_db_arch.html</a><br /> <br /> 目前处理着大约 10Tb 核心(j)数据, 分布在大U?20 台机器上.通过复制, 多增加了(jin) 100Tb 数据, 分布?200 台机器上. 每天增长的数?1TB. 通过 SOA 的运? 物理与逻辑的访问相隔离, g消除?jin)数据库的瓶? 值得一提的? 该扩展过E始l是利用普通的g与开源Y件来完成? 毕竟 , Web 2.0 站点都不是烧q? 从数据量来看Q这l对是一个相Ҏ(gu)较大?Web 2.0 应用.<br /> <br /> 14. 说说大型高ƈ发高负蝲|站的系l架?br /> <a target="_blank">http://www.toplee.com/blog/?p=71</a><br /> <br /> 我在CERNET做过拨号接入q_的搭建,而后在Yahoo&3721从事q搜索引擎前端开发,又在MOP处理q大型社区猫扑大杂烩的架构升U等 工作Q同时自己接触和开发过不少大中型网站的模块Q因此在大型|站应对高负载和q发的解x(chng)案上有一些积累和l验Q可以和大家一h讨一下?br /> <br /> 15. 大型高负载网站架?的感?br /> <a target="_blank">http://atman.memoab.com/articles/194</a> <img src ="http://m.tkk7.com/conans/aggbug/325054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2010-07-02 11:24 <a href="http://m.tkk7.com/conans/articles/325054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大型|站架构演变和知识体p?/title><link>http://m.tkk7.com/conans/articles/325053.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 02 Jul 2010 03:23:00 GMT</pubDate><guid>http://m.tkk7.com/conans/articles/325053.html</guid><description><![CDATA[<p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;"><span style="font-family: ?hu)?">架构演变W一步:(x)物理分离</span>webserver<span style="font-family: ?hu)?">和数据库</span></span></span></strong></p> <p><span style="font-family: ?hu)?">最开始,׃某些x(chng)Q于是在互联|上搭徏 ?jin)一个网站,q个时候甚x(chng)可能L都是U借的Q但׃q篇文章我们只关注架构的演变历程Q因此就假设q个时?/span> <span style="font-family: ?hu)?">已经是托了(jin)一C机,q且有一定的带宽?jin),q个时候由于网站具备了(jin)一定的特色Q吸引了(jin) 部分问,逐渐你发现系l的压力来高Q响应速度来慢Q而这个时候比较明昄是数据库和应用互相媄(jing)响,应用出问题(sh)(jin)Q数据库也很Ҏ(gu)出现问题Q? 数据库出问题的时候,应用也容易出问题Q于是进入了(jin)W一步演变阶D:(x)应用和数据库从物理上分,变成?jin)两台机器,q个时候技术上没有什么新的要求,但你 发现实起到效果?jin),pȝ又恢复到以前的响应速度?jin),q且支撑住了(jin)更高的流量,q且不会(x)因ؓ(f)数据库和应用形成互相的媄(jing)响?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/1.PNG" height="99" width="195" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">q一步架构演变对技术上的知识体pd本没? 要求?/span><span><br /> <br /> </span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W二步:(x)增加面~存</span></span></strong></p> <p><span style="font-family: ?hu)?">好景不长Q随着讉K的h来多Q你发现? 应速度又开始变慢了(jin)Q查扑֎因,发现是访问数据库的操作太多,D数据q接竞争Ȁ烈,所以响应变慢,但数据库q?/span> <span style="font-family: ?hu)?">接又不能开太多Q否则数据库机器压力?x)很高,因此考虑采用~存机制来减数据库q接资源 的竞争和Ҏ(gu)据库ȝ压力Q这个时候首先也怼(x)选择采用</span>squid <span style="font-family: ?hu)?">{类似的机制来将pȝ中相寚w(rn)态的面Q例如一两天才会(x)有更新的面Q进行缓存(当然Q也可以采用? 面?rn)态化的方案)(j)Q这L(fng)序上可以不做修改Q就能够</span> <span style="font-family: ?hu)?">很好的减对</span>webserver<span style="font-family: ?hu)?">的压力以?qing)减数据库q接资源的竞争,</span>OK<span style="font-family: ?hu)?">Q于是开始采?/span>squid<span style="font-family: ?hu)?">来做相对?rn)态的面的缓存?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/2.PNG" height="156" width="195" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">前端面~存技术,例如</span>squid<span style="font-family: ?hu)?">Q如想用好的话还得深入掌握下</span>squid<span style="font-family: ?hu)?">的实现方式以?qing)缓存的失效? {?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W三步:(x)增加面片段~存</span></span></strong></p> <p><span style="font-family: ?hu)?">增加?/span>squid<span style="font-family: ?hu)?">做缓存后Q整体系l的速度实是提 升了(jin)Q?/span>webserver<span style="font-family: ?hu)?">的压力也开始下降了(jin)Q但随着讉K量的增加Q发现系l又开始变的有些慢?jin),在?/span> <span style="font-family: ?hu)?">C(jin)</span>squid<span style="font-family: ?hu)?">之类的动态缓存带来的好处后,开始想能不能让现在那些动态页面里相对?rn)态的部分也缓存v来呢Q因此? 虑采用类?/span>ESI<span style="font-family: ?hu)?">? cȝ面片段~存{略Q?/span>OK<span style="font-family: ?hu)?">Q于是开始采?/span>ESI<span style="font-family: ?hu)?">来做动态页面中相对?rn)态的片段部分的缓存?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/3.PNG" height="235" width="337" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">面片段~存技术,例如</span>ESI<span style="font-family: ?hu)?">{,想用好的话同样需要掌?/span>ESI<span style="font-family: ?hu)?">的实现方式等Q?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W四步:(x)数据~存</span></span></strong></p> <p><span style="font-family: ?hu)?">在采?/span>ESI<span style="font-family: ?hu)?">之类的技术再ơ提高(sh)(jin)pȝ的缓存效? 后,pȝ的压力确实进一步降低了(jin)Q但同样Q随着讉K量的增加Q系l还是开始变慢,l过查找Q可能会(x)发现p?/span> <span style="font-family: ?hu)?">l中存在一些重复获取数据信息的地方Q像获取用户信息{,q个时候开始考虑是不是可以将 q些数据信息也缓存v来呢Q于是将q些数据~存到本地内存,改变完毕后,完全W合预期Q系l的响应速度又恢复了(jin)Q数据库的压力也再度降低?jin)不?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/4.PNG" height="258" width="341" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">~存技术,包括?/span>Map<span style="font-family: ?hu)?">数据l构、缓存算法、所选用的框架本 w的实现机制{?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;"><span style="font-family: ?hu)?">架构演变W五步:(x)</span> <span style="font-family: ?hu)?">增加</span>webserver</span></span></strong></p> <p><span style="font-family: ?hu)?">好景不长Q发现随着pȝ讉K量的再度增加Q?/span>webserver<span style="font-family: ?hu)?">机器的压力在高峰期会(x)? 升到比较高,q个时候开始考虑增加一?/span>webserver<span style="font-family: ?hu)?">Q这也是Z(jin)同时解决可用性的问题Q避免单台的</span><span>webserver down</span><span style="font-family: ?hu)?">机的话就没法使用?jin),在做了(jin)这些考虑后,军_增加一?/span>webserver<span style="font-family: ?hu)?">Q增加一?/span>webserver<span style="font-family: ?hu)?">Ӟ?x)碰C些问题,? 型的有:(x)</span><span><br /> 1</span><span style="font-family: ?hu)?">、如何让讉K分配到这两台机器上,q个时候通常?x)考虑的方案是</span>Apache<span style="font-family: ?hu)?">自带的负载均衡方案,?/span>LVS<span style="font-family: ?hu)?">q类的Y件负载均衡方案;</span><span><br /> 2</span><span style="font-family: ?hu)?">、如何保持状态信息的同步Q例如用?/span>session<span style="font-family: ?hu)?">{,q个时候会(x)考虑的方案有? 入数据库、写入存储?/span>cookie<span style="font-family: ?hu)?">或同?/span>session<span style="font-family: ?hu)?">信息{机制等Q?/span><span><br /> 3</span><span style="font-family: ?hu)?">、如何保持数据缓存(sh)息的同步Q例如之前缓存的用户数据{,q个时候? 怼(x)考虑的机制有~存同步或分布式~存Q?/span><span><br /> 4</span><span style="font-family: ?hu)?">、如何让上传文gq些cM的功能l正常,q个时候通常?x)考虑的机制是 使用׃n文gpȝ或存储等Q?/span><span><br /> </span><span style="font-family: ?hu)?">在解决了(jin)q些问题后,l于是把</span>webserver<span style="font-family: ?hu)?">增加Z(jin)两台Q系l终于是 又恢复到?jin)以往的速度?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/5.PNG" height="244" width="341" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">负蝲均衡技术(包括但不限于g负蝲均衡? 软g负蝲均衡、负载算法?/span>linux<span style="font-family: ?hu)?">转发协议、所选用的技术的实现l节{)(j)、主备技术(包括但不限于</span>ARP<span style="font-family: ?hu)?">ƺ骗?/span><span>linux heart-beat</span><span style="font-family: ?hu)?">{)(j)、状态信息或~存同步技术(包括但不限于</span>Cookie<span style="font-family: ?hu)?">技术?/span>UDP<span style="font-family: ?hu)?">协议、状态信息广播、所选用的缓存同 步技术的实现l节{)(j)、共享文件技术(包括但不限于</span>NFS<span style="font-family: ?hu)?">{)(j)、存储技术(包括但不限于存储讑֤{)(j)?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W六步:(x)分库</span></span></strong></p> <p><span style="font-family: ?hu)?">享受?jin)一D|间的pȝ讉K量高速增长的q福 后,发现pȝ又开始变慢了(jin)Q这ơ又是什么状况呢Q经q查找,发现数据库写入、更新的q些操作的部分数据库q接?/span> <span style="font-family: ?hu)?">资源竞争非常Ȁ烈,D?jin)系l变慢,q下怎么办呢Q此时可选的Ҏ(gu)有数据库集群和分库策 略,集群斚w像有些数据库支持的ƈ不是很好Q因此分库会(x)成ؓ(f)比较普遍的策略,分库也就意味着要对原有E序q行修改Q一通修改实现分库后Q不错,目标辑ֈ ?jin),pȝ恢复甚至速度比以前还快了(jin)?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/6.PNG" height="243" width="341" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">q一步更多的是需要从业务上做合理的划分, 以实现分库,具体技术细节上没有其他的要求;</span></p> <p><font face="?hu)?>但同旉着数据量的增大和分库的q行Q在数据库的设计、调优(sh)?qing)维护上需? 做的更好Q因此对q些斚w的技术还是提Z(jin)很高的要求的?/font></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;"><span style="font-family: ?hu)?">架构演变W七步:(x)分表?/span>DAL<span style="font-family: ?hu)?">和分布式~存</span></span></span></strong><span><br /> </span><span style="font-family: ?hu)?">随着pȝ的不断运行,数据量开始大q度增长Q这个时候发现分库后查询仍然 ?x)有些慢Q于是按照分库的思想开始做分表的工作,当然Q这不可避免的会(x)需要对E序</span> <span style="font-family: ?hu)?">q行一些修改,也许在这个时候就?x)发现应用自p兛_(j)分库分表的规则等Q还是有些复? 的,于是萌生能否增加一个通用的框架来实现分库分表的数据访问,q个?/span>ebay<span style="font-family: ?hu)?">的架构中对应的就?/span>DAL<span style="font-family: ?hu)?">Q这个演变的q程相对而言需要花费较长的旉Q当?dng)也有可能q个通用的框架会(x){到分表做完后才开 始做Q同Ӟ在这个阶D可</span> <span style="font-family: ?hu)?">能会(x)发现之前的缓存同步方案出现问题,因ؓ(f)数据量太大,D现在不太可能缓存存在本 圎ͼ然后同步的方式,需要采用分布式~存Ҏ(gu)?jin),于是Q又是一通考察和折,l于是将大量的数据缓存{Ud分布式缓存(sh)?jin)?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/7.PNG" height="439" width="342" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">分表更多的同h业务上的划分Q技术上涉及(qing) 到的?x)有动?/span>hash<span style="font-family: ?hu)?">法?/span><span>consistent hash</span><span style="font-family: ?hu)?">法{;</span></p> <p>DAL<span style="font-family: ?hu)?">涉及(qing)到比较多的复杂技术,例如数据库连接的理Q超时、异常)(j)、数据库操作的控Ӟ时、异常)(j)、分 库分表规则的装{;</span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;"><span style="font-family: ?hu)?">架构演变W八步:(x)增加更多?/span>webserver</span></span></strong></p> <p><span style="font-family: ?hu)?">在做完分库分表这些工作后Q数据库上的压力 已经降到比较低了(jin)Q又开始过着每天看着讉K量暴增的q福生活?jin),H然有一天,发现pȝ的访问又开始有变慢的趋?/span> <span style="font-family: ?hu)?">?jin),q个时候首先查看数据库Q压力一切正常,之后查看</span>webserver<span style="font-family: ?hu)?">Q发?/span>apache<span style="font-family: ?hu)?">d?jin)很多的hQ而应用服? 器对每个h也是比较快的Q看?/span> <span style="font-family: ?hu)?">是请求数太高D需要排队等待,响应? 度变慢,q还好办Q一般来_(d)q个时候也?x)有些钱了(jin),于是d一?/span>webserver<span style="font-family: ?hu)?">服务器,在这个添?/span> webserver<span style="font-family: ?hu)?">服务器的q程Q有可能?x)出现几U挑(xi)战:(x)</span><span><br /> 1</span><span style="font-family: ?hu)?">?/span>Apache<span style="font-family: ?hu)?">的Y负蝲?/span>LVS<span style="font-family: ?hu)?">软负载等无法承担巨大?/span>web<span style="font-family: ?hu)?">讉K量(hq接数、网l流量等Q的调度?jin),q个时候如果经费允许的话,?x)采取的?gu)是购</span> <span style="font-family: ?hu)?">买硬件负载,例如</span>F5<span style="font-family: ?hu)?">?/span>Netsclar<span style="font-family: ?hu)?">?/span>Athelon<span style="font-family: ?hu)?">之类的,如经费不允许的话Q会(x)采取的方案是应用从逻辑上做一定的分类Q然后分散到不同的Y负蝲? 中Q?/span><span><br /> 2</span><span style="font-family: ?hu)?">、原有的一些状态信息同步、文件共享等Ҏ(gu)可能?x)出现瓶颈,需要进行改 q,也许q个时候会(x)Ҏ(gu)情况~写W合|站业务需求的分布式文件系l等Q?/span><span><br /> </span><span style="font-family: ?hu)?">在做完这些工作后Q开始进入一个看似完的无限伸羃的时代,当网站流量增 加时Q应对的解决Ҏ(gu)是不断的添?/span>webserver<span style="font-family: ?hu)?">?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/8.PNG" height="441" width="466" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">C(jin)q一步,随着机器数的不断增长、数据量 的不断增长和对系l可用性的要求来高Q这个时候要求对所采用的技术都要有更ؓ(f)深入的理解,q要根据网站的需求来做更加定制性质的品?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W九(ji)步:(x)数据d分离和廉价存储方?/span></span></strong></p> <p><span style="font-family: ?hu)?">H然有一天,发现q个完美的时代也要结? ?jin),数据库的噩梦又一ơ出现在眼前?jin),׃d?/span>webserver<span style="font-family: ?hu)?">太多?jin),D数据库连接的资源q是不够用,而这个时候又已经分库分表?jin),开始分析数据库的压力状况, 可能?x)发现数据库的读写比很高Q这个时候通常?x)想到数据读写分ȝ?gu)Q当?dng)q个Ҏ(gu)要实现ƈ?/span> <span style="font-family: ?hu)?">Ҏ(gu)Q另外,可能?x)发C些数据存储在数据库上有些费Q或者说q于占用数据库资源,? 此在q个阶段可能?x)Ş成的架构演变是实现数据读写分,同时~写一些更为廉L(fng)存储Ҏ(gu)Q例?/span>BigTable<span style="font-family: ?hu)?">q种?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/9.PNG" height="398" width="555" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">数据d分离要求Ҏ(gu)据库的复制?/span>standby<span style="font-family: ?hu)?">{策略有深入的掌握和理解Q? 同时?x)要求具备自行实现的技术;</span></p> <p><span style="font-family: ?hu)?">廉h(hun)存储Ҏ(gu)要求?/span>OS<span style="font-family: ?hu)?">的文件存储有深入的掌握和理解Q同时要 求对采用的语a在文件这块的实现有深入的掌握?/span></p> <p><strong><span style="font-family: ?hu)?"><span style="font-size: 14pt;">架构演变W十步:(x)q入大型分布式应用时代和廉h(hun)服务器群梦想时代</span></span></strong></p> <p><span style="font-family: ?hu)?">l过上面q个漫长而痛苦的q程Q终于是再度 q来?jin)完的时代Q不断的增加</span>webserver<span style="font-family: ?hu)?">可以支撑越来越高的讉K量了(jin)Q对于大型网站而言Qh气的重要?/span> <span style="font-family: ?hu)?">庸置疑,随着人气的越来越高,各种各样的功能需求也开始爆发性的增长Q这个时候突然发 玎ͼ原来部v?/span>webserver<span style="font-family: ?hu)?">上的那个</span>web<span style="font-family: ?hu)?">应用已经非常庞大</span> <span style="font-family: ?hu)?">?jin)? 当多个团队都开始对其进行改动时Q可真是相当的不方便Q复用性也相当p糕Q基本是每个团队都做?jin)或多或重复的事情Q而且部v和维护也是相当的ȝ(ch)Q?/span> <span style="font-family: ?hu)?">因ؓ(f)庞大的应用包?/span>N<span style="font-family: ?hu)?">台机器上复制、启动都需要耗费不少的时_(d)出问题的时候也不是很好查,另外一个更p糕的状冉|很有 可能?x)出现某个应用上?/span>bug<span style="font-family: ?hu)?">导</span> <span style="font-family: ?hu)?">致了(jin)全站都不可用Q还有其他的像调优(sh)好操作(因ؓ(f)? 器上部v的应用什么都要做Q根本就无法q行针对性的调优Q等因素Q根据这L(fng)分析Q开始痛下决?j),?/span> <span style="font-family: ?hu)?">pȝҎ(gu)职责q行拆分Q于是一个大型的分布式应用就诞生?jin),通常Q这个步骤需要耗费相当 长的旉Q因Z(x)到很多的挑(xi)战:(x)</span><span><br /> 1</span><span style="font-family: ?hu)?">、拆成分布式后需要提供一个高性能、稳定的通信框架Qƈ且需要支持多U? 不同的通信和远E调用方式;</span><span><br /> 2</span><span style="font-family: ?hu)?">、将一个庞大的应用拆分需要耗费很长的时_(d)需要进行业务的整理和系l? 依赖关系的控制等Q?/span><span><br /> 3</span><span style="font-family: ?hu)?">、如何运l_(d)依赖理、运行状늮理、错误追t、调优、监控和报警{)(j) 好这个庞大的分布式应用?/span><span><br /> </span><span style="font-family: ?hu)?">l过q一步,差不多系l的架构q入相对E_的阶D,同时也能开始采用大? 的廉h器来支撑着巨大的访问量和数据量Q结合这套架构以?qing)这么多ơ演变过E吸取的l验来采用其他各U各L(fng)Ҏ(gu)来支撑着来高的访问量?/span></p> <p><span style="font-family: ?hu)?">看看q一步完成后pȝ的图C:(x)</span></p> <p><span><!--[if gte vml 1]> <![endif]--><img alt="" src="../../images/blogjava_net/bluedavy/arch/10.PNG" height="431" width="554" /><br /> <!--[if gte mso 9]><![endif]--></span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)到了(jin)这些知识体p:(x)</span></p> <p><span style="font-family: ?hu)?">q一步涉?qing)的知识体系非常的多Q要求对? 信、远E调用、消息机制等有深入的理解和掌握,要求的都是从理论、硬件、操作系l以及(qing)所采用的语a的实现都有清楚的理解?/span></p> <p><span style="font-family: ?hu)?">q维q块涉及(qing)的知识体pM非常的多Q多数情 况下需要掌握分布式q行计算、报表、监控技术以?qing)规则策略等{?/span></p> <p><span style="font-family: ?hu)?">说v来确实不怎么费力Q整个网站架构的l典演变q程都和上面比较的类|当然Q每步采取的Ҏ(gu)Q演? 的步骤有可能有不同,另外Q由于网站的业务不同Q会(x)有不同的专业技术的需求,q篇</span>blog<span style="font-family: ?hu)?">更多的是从架构的角度来讲解演变的q程Q当?dng)其中q有很多的技术也未在此提?qing),像数据库集群、数 据挖掘、搜索等Q但在真实的演变q程中还?sh)(x)借助像提升硬仉|、网l环境、改造操作系l?/span>CDN<span style="font-family: ?hu)?">镜像{来支撑更大的流量,因此在真实的发展q程中还?sh)(x)有很多的不同,另外一个大型网站要做到的远q? 不仅仅上面这些,q有像安全、运l、运营、服务、存储等Q要做好一个大型的|站真的很不Ҏ(gu)Q写q篇文章更多的是希望能够引出更多大型|站架构演变的介 l,</span>:)<span style="font-family: ?hu)?">?/span></p> <br /> ps:最后附上几LiveJournal架构演变的文章:(x)<br /> 从LiveJournal后台发展看大规模|站性能优化Ҏ(gu)<br /> http://blog.zhangjianfeng.com/article/743    <br /> 另外从这里:(x)http://www.danga.com/words/大家可以扑ֈ更多关于现在LiveJournal|站架构的介l? <img src ="http://m.tkk7.com/conans/aggbug/325053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/conans/" target="_blank">CONAN</a> 2010-07-02 11:23 <a href="http://m.tkk7.com/conans/articles/325053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://006dh.com" target="_blank">޾Ʒ</a>| <a href="http://slmlxg.com" target="_blank">һѹۿƵwww</a>| <a href="http://gedebai.com" target="_blank">һ߹ۿ</a>| <a href="http://helloyp.com" target="_blank">Ƶһ</a>| <a href="http://xacfdq.com" target="_blank">ŮƵվ </a>| <a href="http://yuduruizhi.com" target="_blank">ŷߴSUV</a>| <a href="http://socgl.com" target="_blank">ձһ</a>| <a href="http://yw835.com" target="_blank">ִӲִֻƵƵѿ </a>| <a href="http://52xbjs.com" target="_blank">þþþþùaѹۿ </a>| <a href="http://yunyitai.com" target="_blank">jjizzȫѿƬ</a>| <a href="http://www00475.com" target="_blank">ĻMVƵ3</a>| <a href="http://www64427.com" target="_blank">޹</a>| <a href="http://by22877.com" target="_blank">++ۺ+ר</a>| <a href="http://18888kj.com" target="_blank">һ24޹˾ </a>| <a href="http://166sb.com" target="_blank">۲ݳѹۿ</a>| <a href="http://78avai.com" target="_blank">aëƬվ</a>| <a href="http://bqjonline.com" target="_blank">Ůվ </a>| <a href="http://jufandev.com" target="_blank">޳aƬӰԺ</a>| <a href="http://jx-dirui.com" target="_blank">¹ŮһëƬ</a>| <a href="http://eoeoyui.com" target="_blank">92˾ƷƵ </a>| <a href="http://1897tao.com" target="_blank">һþþþ</a>| <a href="http://by11gun.com" target="_blank">޸߹ۿ</a>| <a href="http://6132423.com" target="_blank">޾Ʒþþþ66</a>| <a href="http://langya2255.com" target="_blank">ۺϼר</a>| <a href="http://jaubus.com" target="_blank">av߹ۿһ</a>| <a href="http://www-44334.com" target="_blank">18Ƶѹۿ</a>| <a href="http://scbangde.com" target="_blank">һɫþһ</a>| <a href="http://zz1965.com" target="_blank">Ƶѹۿ</a>| <a href="http://5shitou.com" target="_blank">91þþƷֱ</a>| <a href="http://aqddv.com" target="_blank">84paoƵѲ</a>| <a href="http://ehiver.com" target="_blank">պƷѹۿ</a>| <a href="http://www789789.com" target="_blank">Ƶ</a>| <a href="http://wwwxue1888.com" target="_blank">aëƬѹۿվ</a>| <a href="http://www3ratcom.com" target="_blank">óav</a>| <a href="http://0515bh.com" target="_blank">һëƬaŮ˴̼Ƶ</a>| <a href="http://wenbye.com" target="_blank">˳ɶ߲r18</a>| <a href="http://jinluffcl.com" target="_blank">ѴƬ߹ۿ</a>| <a href="http://ssni703.com" target="_blank">һ߹ۿ</a>| <a href="http://dingdingduo.com" target="_blank">һëƬѲ</a>| <a href="http://4466n.com" target="_blank">ѹۿƵ</a>| <a href="http://51xinshiji.com" target="_blank">þþþþþ99Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>