NinGoo@Net --- Just a simple Oracle & MySQL DBA
常用标签:

转载:恕道

作者:王鼎均

你必须有理想,但是不要公然鄙视那些鼠目寸光的人。你必须有操守,但是不要公然抨击那些蝇营狗苟的人。你必须培养高尚的趣味,但是不要公然与那些逐臭之夫为敌。

我们做好事,别勉强别人也照着我们的样子去做,别责备别人也照着我们的样子去做,别责备他们为什么不做。道德是一种修养,不是一种权力,道德最适合拿来约束自己,不适合拿来压制别人。道德如果成为运动,也是“自己做”运动。

“恃清傲浊”比恃才傲物的后果更坏。人们之所以尊重道德,就是因为道德对他们无害。如果道德成为他们毡上的针、背上的刺,他们就要设法拔去。人们之所以提倡道德,是因为道德可以增进社会的安宁和谐,不希望引起纠纷、造成风波。否则,他们就要对不道德的分子加以安抚了。

这就是以道德自命的人应该守的分寸。

—————转载的分割线———————————————————————-

范美忠郭松民余秋雨,大地震后红遍全国(当然余大师成名已久,这次只能算友情演出),但是范美忠你最多不欣赏不赞同,最多去指责去批判,于你本人不会有大多危害,甚至还能让你带一点优越感。而后面两位,却让我觉得就像在黑夜里地球突然沉向宇宙深处一样无助,恐惧感四面八方汹涌而来。尤其是看了余大师blog上的那些转载的帖子,才发现二三十年来时差一直没有倒过来。

正是:皇帝可以穿新衣,小民切勿做童声;大师含泪劝世人,和谐盛世迎奥运。

在FireFox3中使用不兼容的插件

FireFox3正式发布了,其实从beta4开始就从FireFox2换成3了。在内存使用和浏览速度方面,FireFox3确实改进不少。不过有些插件一直不更新,比如Gladder等,导致在FireFox3中由于不兼容而不能使用,有点烦人。不过这个兼容性检查,其实只是check了一下插件的兼容版本号,大部分旧版本的插件,其功能在FireFox3其实还是可以使用的。那么就有两个办法来绕过这个兼容性检查,一是修改插件的可以支持的版本号,二是设置FireFox3不执行插件兼容性检查。

一、修改插件
首先将插件下载到本地。FireFox的插件扩展名是xpi,其实是一个zip压缩打包文件,用winrar等可以打开。找到里面的install.rdf文件,可以找到如下内容:

<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>3.0b3pre</em:maxVersion>
</Description>
</em:targetApplication>

发现了没(通过rss阅读的朋友可能看不到上面的代码,请移步到这里),minVersionmaxVersion就定义了该插件可以支持的FireFox版本,将3.0b3pre改成3.0,保存后重新安装插件即可。嗯,怎么修改?把install.rdf拖出来整完再拖回去;怎么重新安装?再把xpi拖进FireFox,搞定收工。

二、设置FireFox
在FireFox3地址栏输入about:config,出来一个警告页面,不理他,“我保证我会小心”。然后点右键,选择“新建”->“布尔”,创建一个布尔变量extensions.checkCompatibility,值为false,表示不检查扩展插件的兼容性。同样的步骤再创建一个布尔变量extensions.checkUpdateSecurity,值为false,不检查安全更新。重启,搞定。

用HSCALE实现MySQL的数据分布式存储

针对单个表过大造成的性能问题,MySQL在5.1开始引入了分区表(partition),可以将数据在内部拆分存储,对应用透明,但是分区表只能将表在同一个数据库内部分解,而且对于表的维护(比如执行alter table)还是比较麻烦。手工分表也是一个解决方法,手工分表还有一个好处是可以将表分布到不同的服务器中,实现分布式存储。但是手工分表要求应用程序做相应的改写,以支持从不同的表中来存取数据。

HSCALE简单来说就是一个支持手工分表的中间层,对于应用来说看起来还是一个表,而由HSCALE来负责底层子表的数据存取。HSCALE是基于MySQL Proxy的一个插件应用,通过MySQL Proxy的lua脚本拦截分拆对应的SQL语句来实现数据的分布存储,而且使用lua脚本可以自由定制分表策略,比起MySQL自己的partition更加灵活些。现在版本还是0.2,功能有限,只能实现同库分表,但是基于MySQL Proxy的架构,未来要实现示分库分表也不是什么难事。

作者利用mysqlslap对HSCALE和MySQL Proxy做了几组性能测试,结果参考这里,还有这里

当然,现在MySQL Proxy和HSCALE都是刚刚起步,要在产品库中应用还有很长的一段路要走,从上面的性能测试中可以看到基于最新的MySQL Proxy 0.7版的HSCALE性能有了较大的提升,期待后续版本有更好的表现。

什么是CDN

CDN(Content Delivery Network)内容分发网络,简单的说就是通过在不同地点缓存内容,然后通过负载平衡等技术将用户请求定向到最近的缓存服务器上获取内容,提高用户访问网站的响应速度。和简单的内容镜像不同,CDN通过用户就近性和服务器负载的判断,以一种更为高效的方式为用户的请求提供服务。

CDN包括分布式存储负载均衡网络请求的重定向内容管理,其中内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。内容服务基于缓存服务器,也称作代理缓存(Surrogate),这样的缓存服务器分布在各地,为就近用户提供服务,缓存内容从数据中心自动获取,对用户透明。据说采用CDN技术能处理整个网站页面的 70%~95%的内容访问量,对于一些大型网站来说,没有CDN,单靠数据中心支撑所有访问量是不可想象的。

CDN中的关键技术包含以下几个方面;

部署CDN后,用户访问网站的流程如下图:
CDN

  1. 用户请求页面,域名解析的请求发送到网站的DNS域名解析服务器;
  2. 网站的DNS服务器将请求指向到智能DNS负载均衡系统;
  3. 智能DNS负载均衡系统对域名进行智能解析,将响应速度最快的CDN节点IP返回给用户;
  4. 浏览器向速度最快的CDN节点发出访问请求;
  5. 如果请求的内容是第一次访问,CDN节点将回到数据中心获取用户请求的数据,缓存并发给用户;
  6. 当有其他用户再次访问同样内容时,CDN将直接将缓存数据返回给客户,完成请求/服务过程。

从以上流程可以看到,CDN其实也没有什么特别的,主要是通过负载均衡访问路由转向本地代理缓存来加速网站访问,同时对于用户访问来说是透明的,用户端无须进行任何设置。

对于CDN一无所知,从网上找了点资料,主要内容参考的这里