大型网站的自强之路

1、大型网站的自强之路

当年马云筹办阿里巴巴的时候并没有说我要做个大型网站,搞个双11,成交额做到千亿级别;马化腾也没有说以后我要做个通讯工具,让13亿乃至更多用户都成为我们的用户……我们现如今看到的各个大型网站或产品都是一步步踏踏实实走过来的,在各种坑和故障中成长起来的。

1.1、一台电脑就是服务器

做过课程设计或者毕业设计的计算机相关的同学都应该有过搭建项目的经验。画一堆界面,结合js和后台实现数据的展现,当然还要有数据来源——数据库,启动一个容器比如tomcat,那么我们就可以在本机上访问我们的网站了。想必没有比这还简单的网站了吧,自己的电脑就充当了服务器的角色,应用和数据库都部署在了自己的电脑上。

1.2、我们需要丰富网站的功能

随着一个单机网站的不断完善,用户的增长,我们不再也不能只是一个完成缴费或者完成选课的单一功能的网站应用。我们需要从各个维度把这些应用分离开来,比如一个电商网站,我们有用户、商品和交易三个基本模块。 用户

  • 用户注册
  • 用户管理

商品

  • 商品展示
  • 商品管理

交易

  • 订单系统
  • 交易管理

随着应用的分块,数据库中表的划分也会相应变化。大概的结构图如下

1.3、应用数据库分离

不管是2.1中的电脑即服务器,还是2.2中的应用和DB放在同一服务器上,这两种都没有将应用和DB做分离。随着我们应用网站的访问量逐渐增多,对于服务器的压力也增大了,我们需要考虑分离应用和数据库以保证应用更加稳定。 相比2.2,我们只是将应用模块和DB模块部署在两台服务器上,这样各自的服务出现问题不会影响对应的模块,同时也减轻了原来一台服务器的压力。

1.4激增的访问让应用服务器走向集群

当应用服务器承受的压力越来越大时,我们考虑将应用服务器走向集群化。大概结构如下:

注意 因为这里使用了多个应用服务器,Session就不再像单应用服务器那样只有一个可选,这时候对于多个应用服务器,可能会出现这次的请求是被A应用服务处理,但是下一次就会被B应用服务器处理,应用Http是无状态,所以需要借助Session实现有状态,但是显然这里Session无法完成这个“艰巨”的任务。 针对这个问题,解决方法较多。比如可以在请求和服务器之间加一个负载均衡器,让负载均衡器维系请求和服务器之间的对应关系,如果发现是张三发来的请求那就扔到服务器A上处理,如果是李四的就扔到服务器B上处理。 还有一种处理方法是添加一个同步操作,在两个服务器之间完成Session同步,这样不管服务器A还是B都会有全集的Session集合了,那么谁处理就显得不重要了。

1.5、数据库扛不住了,读写分离

这个时候我们不能再把自己的应用网站成为小网站了,我们的数据量和访问量空前的增长以至于数据库有些hold不住了。所以我们需要将数据库进行读写分离了,毕竟我们一般的网站应用读数据库占得比重比较多。大概的结构如下:

从图中可以看出,用于读的数据库可以直接被应用读取,同时它与主库之间需要及时同步,当应用需要向主库写入数据时,则需要将写入的数据通过到DB Read数据库中,保证数据的实时性和准确性。 读写分离还有更多的延伸,包括使用缓存以及数据库的垂直和水平拆分等,后面再说吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏aCloudDeveloper

DPDK 全面分析

高性能网络技术 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁...

9154
来自专栏移动端开发

iOS 即时通讯 + 仿微信聊天框架 + 源码

更新:2017年8月1日 实在是抱歉,git上的Demo这么久,有问题自己没有发现!肯定给大家造成过不方便,抱歉!git上Demo刚重新上传,要有需要的可以去...

8765
来自专栏小文博客

腾讯云关系型数据库,3年只需86(新用户26)

3415
来自专栏*坤的Blog

提高效率

1802
来自专栏移动开发试验田

【移动开发】市面上主流「移动推送服务」的体验比较

推送服务基本上是每个 App 的刚需,自己也用过许多家推送服务,最近腾讯云上线了一个类似于 firebase 的移动开发平台,上面集成了很多的移动服务,包括推送...

3817
来自专栏腾讯云数据库(TencentDB)

5分钟学会如何玩转云数据库组件(迁移,审计,订阅)

传统企业在建设数据库初期,不仅建设服务器,还要保证数据库能够稳定和可靠的运行。当业务数据增长到一定大小的时候,就需要增加服务器CPU及内存以及磁盘相关资源。为了...

9K4
来自专栏数据派THU

【独家】一文读懂非关系型数据库(NoSQL)

本文共11000字,阅读全文约需30分钟。 本文为大家解析非关系型数据库(NoSQL)。[ 在数据派THU后台(非留言区)回复"综述"即可获取资源。] 前言 N...

79010
来自专栏程序人生

[技术与产品] Bower & Brunch

今天写作时间太短,稍微探讨一下bower和brunch这两个web前端assets management的利器。 Bower 管理dependency一直是程序...

3609
来自专栏ImportSource

微服务与API 网关(上): 为什么需要API网关?

本文是来自于Macro在一次大会上的一个分享。 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把...

7166
来自专栏企鹅号快讯

z/OS Connect 助力你的业务更上一层楼

上周有关API 经济的推送得到了热烈的反响,今天我们趁热打铁,解说下之前留下的一个引子。下面是我们今天要cover的重点: z/OS Connect Enter...

2130

扫码关注云+社区