http://blog.sina.com.cn/jianghao0726[订阅][手机订阅]
个人资料
分类
    内容读取中…
评论
读取中...
参考他人blog
好友
读取中...
博文
IT行业创业,讲究的是抓住一个巨大的市场。如果能够抓住一个杀手级的应用,并在此应用上取得绝对份额,则这个公司不福则贵,前途无量。所谓杀手级应用,就是每天绝大部分用户都会用到的应用。我们每天打开电脑,必然会安装必然会用到什么东西呢? 还有多少杀手级应用有创业机会呢?

在我看来,下面这些应用可以算杀手级的应用,因为绝大部分互联网用户均会用到:

1、搜索引擎。互联网太巨大了,没有搜索工具几乎无法使用。这也是为什么每天大家都无法不使用搜索引擎的原因。今天搜索引擎是一个富人的游戏,百度和Goolge

Google的十诫(2008-11-10 18:18)
  1. 一切以用户为中心,其他一切纷至沓来 Focus on the user and all else will follow.    2. 把一件事做到极致. It's best to do one thing really, really well.    3. 快比慢好. Fast is better than slow.    4. 网络社会需要民主. Democracy on the web works.   5. 您不一定要在桌子前找答案. You don't need to be at your desk to need an answer.   6. 不做坏事也能赚钱. You can make money without doing evil.    7. 未知的信息总是存在的. There's always more information out there.   8. 对信息的需求无所不在. The need for information crosses all borders.   9. 不穿西装也可以严肃认真. You can be serious without a suit.   10. 仅有优秀是远远不够的. Great just isn't good enough.  

架构演变第九步:数据读写分离和廉价存储方案

突然有一天,发现这个完美的时代也要结束了,数据库的噩梦又一次出现在眼前了,由于添加的webserver太多了,导致数据库连接的资源还是不够用,而这个时候又已经分库分表了,开始分析数据库的压力状况,可能会发现数据库的读写比很高,这个时候通常会想到数据读写分离的方案,当然,这个方案要实现并不容易,另外,可能会发现一些数据存储在数据库上有些浪费,或者说过于占用数据库资源,因此在这个阶段可能会形成的架构演变是实现数据读写分离,同时编写一些更为廉价的存储方案,例如BigTable这种。

看看这一步完成后系统的图示:

 

<!--[if !vml]--&

架构演变第七步:分表、DAL和分布式缓存

随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作,当然,这不可避免的会需要对程序进行一些修改,也许在这个时候就会发现应用自己要关心分库分表的规则等,还是有些复杂的,于是萌生能否增加一个通用的框架来实现分库分表的数据访问,这个在ebay的架构中对应的就是DAL,这个演变的过程相对而言需要花费较长的时间,当然,也有可能这个通用的框架会等到分表做完后才开始做,同时,在这个阶段可能会发现之前的缓存同步方案出现问题,因为数据量太大,导致现在不太可能将缓存存在本地,然后同步的方式,需要采用分布式缓存方案了,于是,又是一通考察和折磨,终于是将大量的数据缓存转移到分布式缓存上了。

看看这一步完成后系统的图示:

架构演变第四步:数据缓存

在采用ESI之类的技术再次提高了系统的缓存效果后,系统的压力确实进一步降低了,但同样,随着访问量的增加,系统还是开始变慢,经过查找,可能会发现系统中存在一些重复获取数据信息的地方,像获取用户信息等,这个时候开始考虑是不是可以将这些数据信息也缓存起来呢,于是将这些数据缓存到本地内存,改变完毕后,完全符合预期,系统的响应速度又恢复了,数据库的压力也再度降低了不少。

看看这一步完成后系统的图示:

<!--[if !vml]-->
<!--[endif]-->

这一步涉及到了这些知识体系:

缓存技术,包括像Map数据结构、缓存算法、所选用的框架本身的实现机制等。

 

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

架构演变第一步:物理分离webserver和数据库

最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而

mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具. 
启用 slow log
有两种启用方式:
1, 在my.cnf 里 通过 log-slow-queries[=file_name]2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项
比较的五款常用工具
mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter 
mysqldumpslowmysql官方提供的慢查询日志分析工具. 输出图表如下:
[align=left][url=http://www.kuqin.com/upimg/allimg/081011/2027560.jpg][/align]
主要功能是, 统计不同慢sql的
出现次数(Count), 
执行最长时间(Time), 
累计总耗费时间(Time), 
等待锁的时间(Lock), 
发送给客户端的行总数(Rows), 
扫描的行总数(Rows), 
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 lim
怎么用ssh生成key而不用每次都输入密码?

ssh为你在两条机器之间建立一个安全通道,加密所有的数据,应用rsa公钥私钥机制进行安全认证......
假设情况,你想通过机器A 通过ssh登陆到机器B.当然AB 双方都支持ssh,所以的命令都在A机器上输入,用[]区分,一个[]内的是一条命令.
第一步, 确认你有个帐户在B上;

第二步,A机器,命令 [ssh-keygen -t rsa] 生成你的公私钥.第一行,输入存放公私钥的目录,直接回车默认就行(自动存放在~/.ssh/id_rsa 私钥 ~/.ssh/id_rsa.pub公钥)..第二行,你要输入对应你的私钥的口令: 最好写个像样的口令,就ok了.还有要当心他们的存取权限,公钥644.私钥600一般都没问题.看来你已经搞定了..

第三步, 把你在A机器上生成的公钥文件拷到B机器上不过要存成~/.ssh/authorized_keys.  
可以用[scp ~/.ssh/id_rsa.pub 机器B:~/.ssh/authorized_keys] 回车后输入你的私钥口令..ok应该没问题.(如果你有多个帐户可以登陆到B机器的话,可以把其他帐户的公钥也加到~/.ssh/authorized_keys里面,我想你应该没有问题的)
dd使用(2008-08-27 14:49)
先简要介绍dd的参数,后边通过几个实例介绍dd的应用,参考了其他网友的资料,在此一并感谢

小菜水平有限文中有什么错误请大家指正,关于dd还有什么好的使用方法,可以贴出来,小菜会及时更新


dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

1. 命令简介

dd 的主要选项:

指定数字的地方若以下列字符结尾乘以相应的数字:

b=512, c=1, k=1024, w=2, xm=number m

if=file

输入文件名,缺省为标准输入。

of=file

输出文件名,缺省为标准输出。

ibs=bytes

一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes

一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes

同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

cbs=bytes

一次转换 bytes 个字节,即转换缓冲区大小。

skip=blocks

从输入文件开头
MySQL搭建主从同步设置
主库:192.168.1.1
从库:192.168.1.2
数据文件存放位置:/var/mysql/data
待同步数据库:syncdb
 
一、设置MASTER
1、修改my.cnf
============================
# vi /etc/my.cnf
server-id = 1
log-bin
binlog-ignore-db=mysql