MySQL Proxy

我考虑了一下Mysql数据库服务器负载均衡的架构,发现大多数应用似乎没有加载mysql-proxy,当然本意是为企业版本开发的,那么在这之前的load balancing,他们是用什么来做的呢?使用管理节点+集群的方式是一种,不过我估计PF中的address pools应该也可以,而且PF的方案更有通用性,但是设置过于复杂,且牵涉到具体网络结构,mysql-proxy是一种全新的方案,大家可以把它和mysql的关系理解为squid和apache的关系,不过mysql-proxy并不包含cache的部分,这部分由第三方连接池做了,当前的web应用,瓶颈其实都在数据库,奥运门票预订网站的垮掉,正是这种瓶颈的体现,并不是说在前端没有瓶颈,而是数据库的瓶颈尤为明显。

Mysql-proxy是一个很小巧的程序,只需要一行命令即可执行,如果仅仅是代理的话:

mysql-proxy –proxy-address=202.202.0.10:3389 –proxy-backend-addresses=10.0.0.2:3306

不过很显然,这样做就没办法在mysql中限制访问数据库的IP了,因为都是本地的访问,如果是mysql集群,那么可以用下面的命令来进行负载的均衡:

mysql-proxy –proxy-address=202.202.0.10:3389 –proxy-backend-addresses=10.0.1.2:3306 –proxy-backend-addresses=10.0.1.3:3306 –proxy-backend-addresses=10.0.1.4:3306

mysql-proxy是一个简单的程序,因为它仅仅是做一个代理,如果加上Master-Slaves的方式来做集群,然后把数据库的读写分离,应该是效率非常高的,但是,很多程序的读写并不是分离的,mysql-proxy中指定了一个参数,可以read-only,很大程度上这个参数是多余的,因为在mysql中去统一管理读写的不同用户,更为合理,如果mysql-proxy能把read-only和write-only分开,那么就完美了,把read-only请求转发到Slaves,把write-only请求转发到Master,使用一个端口,一个用户,就能够读写到不同的数据库服务器。

MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; failover; query analysis; query filtering and modification; and many more.

封掉百度MP3搜索下载

百度的MP3搜索流量果然是很大,一直没有找到合适的屏蔽方法,终于找到了一个较为合适的方法,依然是Setenv,不过和限制reffer不同,限制的是UA,这下大家明白为什么百度的MP3搜索在前年从直接网页点击改为了弹窗再点击,我原本以为是出于展示更多广告的目的,其实不是,是百度为了防止这些个网站封掉它的来源URL,将每个弹窗随机IP reffer,要封掉一堆reffer IP,简直就是疯了,虽然也是可行的,但是不可靠。

以下方法依然不够可靠,因为直接试听的话,还是可以收听的,只是不能下载,不过这至少达到了一个高尚的目的:音乐只能用来听~

# Play by mediaplayer
BrowserMatch “RealMedia” local_media=0
BrowserMatch “Media Player Classic” local_media=0
BrowserMatch “WMFSDK” local_media=0
BrowserMatch “Windows-Media-Player” local_media=0
BrowserMatch “NSPlayer” local_media=0
<FilesMatch “\.(mp3|wma|wmv)”>
Order Deny,Allow
Deny from all
Allow from env=local_media
</FilesMatch>