网站架构设计

1.大访问量解决方案?

负载均衡技术:以太网通道 ; windos NBL   ;  linux lvs ,   ;   F5

冗余技术(集群):linux HA集群技术

解决单点故障

0                                                                                                                                       0 (主)     1(从)   集群圈(集群圈里都是通过一根心跳线来连接,当一个服务器宕机了,则选举另一台)

0                   (交换机)    nginx(负载均衡)      LVS(地址装换到服务器)                          0                 1

0                                                                                                                                        0               

lvs负载均衡技术:

OSI七层模型:

1.物理层 :连接线缆的标准

2.数据链路层 :加mac地址的标记(网卡的物理地址)  802.3,802.2

3.网络层:源ip地址,目的ip地址    ip

4.传输层 : 源端口,目的端口     tcop/udp

5.会话层 :通信状态           操作系统

6.表示层 : 编码方式          ASCII

7.应用层 : 


大数据存储

MySQL 主从复制:

主数据库用来写,从数据库用来读,通过主数据库的binary_log日志进行同步到从数据库来保证数据的一致性

 水平分表:

垂直分表:

分区技术:将一张表分成若干张表存储,业务层无需修改表名,名称不变 

解决水平分表修改业务逻辑sql的维护修改难问题

分区(partition by range(year(date))) (by range(一般用这个,给定个连续的区间) ; by list(适合枚举类型确认的固定下拉), by hash(一般用于测试), by key(没用))

partioton by hash(id)
partioton 5 --以id分五个区域


为什么用分区?:
ans:因为用水平分表的模式,会造成php代码层维护更难(需要改查询的表名,还要写一个php路由层来判断选择哪张表)
逻辑上,物理上减压,分表技术虽然物理层减压,但是逻辑上增压,不符合程序设计,所以产生了分区.


分区写法?:
ans:
partition by range(id)(
partition p0 values less than(5)
partition p1 values less than(10)
partioton p2 values less than(15)
);


partition by range(year(peirod))(
partition p1 values less than(2016)
partition p2 values less than(2017)
partition p3 values less than(2018)
partition p4 values less than maxvalue
)

myisam的表,增删改查的速度快 插入速度 200万/s

索引大小可能大于数据大小(两三倍),1000万行数据占用250m大小,花了两分钟左右时间(id 及索引)

分区文件存储格式(myisam)?:
ans:
.frm表描述文件
.par 分区标志
p0.myd 数据存放
p0.myi 索引存放
p1.myd 数据存放
p1.myi 索引存放
p2.myd 数据存放
p2.myi 索引存放

mysql 存储过程?


写一个插入八百万数据,按年来分区的存储过程?:
create procedure load_part()
begin
declare v int default 0;
while v < 8000000 do
insert into part_tab values(v,testing_partitions,adddate('1995-01-01',(rand(v)*36520) mod 3650));
set v = v+1;
end while
end //

猜你喜欢

转载自www.cnblogs.com/-cyh/p/10164842.html