首页 > 代码库 > 超大容量负载方案

超大容量负载方案

如何实现更大入量的负载

mysql 优点:数据完整,更新操作方便,数据量小

memcache 优点: 读取方便,操作方便

案例:

用户表:

createtable Discuz_user(

         user_id smallint(6) unsigned not nullAUTO_INCREMENT,  /*用户id*/

         user_name varchar(255) not null,  

         user_pwd varchar(255) not null, /*用户密码*/

         primary key(user_id)

)engine=innodb default charset=utf8 auto_increment=1;

文章表:

createtable Discuz_article(

         article_id smallint(6) unsigned notnull AUTO_INCREMENT, /*文章id*/

         article_title varchar(255) notnull,                     /*文章标题*/

         article_date timestamp not null defaultcurrent_timestamp, /*文章更新的时间*/

         user_id smallint(6) unsigned not null,

         primary key(article_id)

)engine=innodb default charset=utf8 auto_increment=1;

文章内容表:

createtable Discuz_article_content(

         article_content_id smallint(6) unsignednot null AUTO_INCREMENT,

         article_content text not null,                                                                                                                                                              /*文章内容*/

         article_id smallint(6) unsigned notnull,           

         primary key(article_content_id)                                                                       /*文章内容id*/

)engine=innodb default charset=utf8 auto_increment=1;

 

文章回复表:

createtable Discuz_reply(

         reply_id smallint(6) unsigned not nullAUTO_INCREMENT,

         reply_content text not null,

         article_id smallint(6) unsigned notnull, 

         user_id smallint(6) unsigned not null,

         primary key(reply_id)

)engine=innodb default charset=utf8 auto_increment=1;

 

由于我设计的数据库涉及多多库,所以就没必要设置外键

第一种实现负载:新闻每天20W的发布量,这个负载如何做???

方案:

         1.可以分成多库

         比如:mysql1 :  root  root  127.0.0.1  3306

                      mysql2:  root   root   192.168.1.2  3307

         把文章平均分配到 mysql服务器在

在显示列表页的时候,可以用memcache实现列表的储存

也可以实现的方案是:

把列表页可以单独拿出来生成数据库和表,这样就只单独对一个数据库和表操作

怎么更快的把数据库列表中的内容读出来

1.可以把数据库的东西只显示前2000条,那样在前端绑定的时候对数据库的访问速度更快一些,在绑定前端的时候,列表页可以用memcache先读取出来,用crontab做一下定时任务,那样就可以实时更新memcache中key的东西了

2.关于文章列表页的东西,回复

回复的实现可以用json和memcache实现,完全没有必要用数据库中单独拉一表或者数据库在储存

可以把回复的内容,用户,回复时间,全部放到json里面,在存储到memcache中就更大的缓解了服务器的压力实现了负载

3.也可以更大的实现负载加入squid(Squid Cache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛的,可以作为缓存服务器)可以毫无压力的实现负载

4.更好的一个手段,也可以把拿出来的列表信息,生成静态页面,完全无压力的实现在squid上实现缓存

 

DU比较大的,

实时达到文章的更新那是不可能的

可以多一些弹框的效果那样就可以为crontab重新生成新的key放在memcache争取时间

 

 

 

超大容量负载方案