您的位置:首页 > 运维架构 > 网站架构

第2章 大型网站及其架构演进过程

2016-06-03 15:52 555 查看

2.1 什么是大型网站

大型一般是指三个方面来形容大:

访问量高
数据大
系统架构复杂(因为流量大,所以修改成多个微服务)

2.2 大型网站的架构演进

2.2.1 单机服务:流量很小时:应用程序 + 数据库都在一台机器

2.2.2 数据库压力比较大,latency 扛不住时,应用与数据库分离,成2台机器

2.2.3 机器压力比较大(cpu/io 压力很大导致延迟latency 太大,无法接受),此时就会通过负载均衡把一台机器扩展成一个集群

2.2.4 解决应用服务器变为集群后的session 问题 

[session 问题就是保持用户登陆状态,只要用户登陆在一段时间内可以自动登陆];session 数据是存储在web 服务器上的,所以如果同一个用户下次不访问这个机器,那session 机制就失效,导致用户只能重新登陆;所以需要在负载均衡(proxy 机器)上进行流量转发规则;另外一种方式是把session 集中存放到一台机器,然后从这台机器上获取session 【session 设计成数据存在db或者缓冲中】,提供http服务或者client
供其他机器来查询即可

2.2.5 数据库读压力大,读写分离,难点是要保证2个database 数据一致性

2.2.6 DB 数据读取是从磁盘上读取,latency 比较大,尤其是数据库很大时,情况会恶化;

所以这时我们一般加上一层缓存,把频繁访问的数据放到缓存中【缓存一般是kv 格式的数据放到内存中,类似kv 的索引】

2.2.7 弥补关系型数据库的不足,引入分布式存储系统

我们之前讲的数据库是单机数据库,有些情况下单机数据库是不合适的;我们还有其他的存储系统;也就是我们常说的分布式存储系统;
我们常说的分布式存储系统包括:分布式文件系统、分布式kye-value 系统、分布式数据库。


2.2.8 读写分离后,数据库又遇到了瓶颈

这时只能分库分表了,分为2种:

分库:垂直方向:一般按照业务的紧密程度,把数据库分成多个数据( 可以不放在一台机器,也可以放在多台机器;只要修改配置或者数据库的中间件即可)
分表:水平方向:当一张table 里面的数据特别大,导致数据crud 很慢;这时我们就才取按照一定的规则进行分拆table
分拆应用:

刚才我们说的应用都是一个,随着应用的功能越来越多,应用也变得无比强大、复杂;这时需要把应用分拆成多个应用,把一些公共应用做成服务化,就是我们常说的:微服务、服务化、远程调用



2.2.9 初识消息中间件

消息中间件是在分布式系统中完成消息的发送和接收的基础软件;消息中间件最常见的方式就是:生产者和消费者,消息中间件的优点就是异步和解耦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: