大型网站架构演进

什么是大型网站:海量数据和高并发的访问量缺一不可,因此肯定是一个分布式系统。中间件系统就是在大型网站架构演进过程中出现发展的。

大型网站架构演进(以交易网站为例):
单机网站:包括用户模块,商品模块,交易模块等。三个模块都在同一个应用服务器中,用户表数据表交易表在同一个数据库中,通过jdbc连接。整个应用在同一台机器上。
数据库与应用分离:应用存在一台机器上,数据库在另一台机器上,仍然是通过jdbc连接。
应用服务器超载:让应用服务器走向集群,从一台变为2台或多台。
应用服务器的选择:通过控制器实现(如负载均衡器),
Session问题:Session数据是保存在单机上的,用户第一次请求落在第一台服务器,而第二次请求落在第二台服务器,就会引发Session问题。解决方案:1:Session Sticky:保证同一个会话的所有请求都通过同一个服务器处理,通常需要在负载均衡器上实现。带来的问题:a:某一台服务器重启,这台机器的所有用户就需要重新登陆。b:会话标识信息是应用层的,需要进行第7层解析,开销变大了,同时内存消耗更大。Session Replication:应用服务器之间增加Session数据的同步。带来的问题:a:同步Session数据带来的网络开销。b:每台Web服务器要保存所有Session数据,而且重复。3:Session数据集中式存储:Session数据集中存储起来,存储在另一个机器上,可以使用数据库,也可以使用分布式存储系统。4:Cookie Based:将Session数据存在cookie中发送给请求方。不足:cookie长度的限制,安全性,带宽消耗,性能影响。
读写分离:
1:增加一个读库:
数据复制问题:复制的延时问题。2:数据源的选择问题:写操作需要走写库,事务中的读也需要走写库,考虑到延迟,有时不在事务中的读也可能走写库。
2:搜索引擎其实是一个读库:随着被搜索数据的变化,搜索引擎的索引也要改变,构建搜索用的索引其实就是一个数据复制过程,只不过不是简单的复制数据。应用也需要知道什么时候走数据库,什么时候走搜索引擎。
3.缓存:加速数据的读取
数据缓存:缓存系统和搜索引擎,读库的定位是类似的,只是填充方式不同,在缓存中方的是“热”数据,而不是全部数据,而相同的是数据库数据发生变化后,主动把数据放入缓存系统中。
页面缓存:ESI规范,例如在应用服务器前端有一个Apache服务器,一种方式是将ESI模块放在Apache端,而通过Web服务器渲染,而另一种是将ESI放在Web服务器,这样渲染和缓存都让Web服务器做了。
分布式存储系统:
分布式文件系统:多个节点组成的文件系统,弱格式的,解决小文件和大文件的存储问题,
分布式key_value系统:比较格式化,可以提供高性能的板结构化支持。
分布式数据库:最格式化的,可以提供一个支持大数据量和高并发访问的数据库系统。
数据拆分:
数据垂直拆分:把数据库中的不同业务数据拆分到不同的数据库中:
带来的影响:应用需要配置多个数据源,每个数据库连接池的隔离,如何处理跨业务的事务:使用分布式事务或者不适用事务。
数据水平拆分:数据水平拆分就是把一个同一个表的数据拆分到俩个数据库中。
带来的影响:SQL路由的问题,主键的处理,一些查询需要从俩个数据库中读取数据。
应用变化:
1.拆分应用:随着业务的发展,应用的功能越来越多,需要把应用拆开,从一个应用变为俩个甚至多个应用,根据业务的特性把应用拆开,把应用拆分成交易和商品俩个应用,涉及用户的地方自己完成,而用户注册,登陆等基础功能,让俩个系统任何一个去实现。也可以再增加一个用户系统。
2.服务化:商品中心,用户中心,交易中心分别连接自己的数据库提供服务,上层商品系统调用商品中心和用户中心服务,登陆注册调用用户中心服务,交易系统调用交易中心和用户中心服务。
变化:a:不止是单机的方法调用,引入了远程的服务调用,b:共享代码放在了各个服务中心,c:与数据库的交互工作放在了各个服务中心,d:维护更方便。
消息中间件好处:异步和解耦 ,以及大流量的控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值