网站业务架构演变过程

运维笔记 运维笔记     2022-10-31     580

关键词:

有一天,我突发奇想创建了一个站点,基于LNMP架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变。
1. 单台机器因为只是一个小站,访问量一天也没有多少uv(100以内),所以用一台1核1g的机器足够了。机器上安装的是CentOS系统,然后搭建了nginx+php-fpm+mysql的环境。


2. 一台变两台



访问量越来越大,日uv突破5000,单台机器不够了,本可以增加机器配置编程4核8G,但是考虑到还要换机器,所以直接添置一台DB服务器单独跑MySQL服务。原来的服务器只需要跑nginx+php-fpm,新加服务器跑MySQL服务。 在这里,大家往往会遇到一个问题,就是如何在多台机器上编译安装LAMP环境,在单台机器上编译大家都没有问题,PHP放在最后,因为它依赖MySQL,但我们这里需要把MySQL放到另一台机器,所以编译肯定会报错。解决这个问题,其实很简单,即使WEB上不需要MySQL,我们也要安装一下,因为编译PHP的时候依赖它。


3. 增加memcached




访问量持续增加,uv上w了,DB服务器和WEB服务器压力越来越大,这时候我们需要加一个缓存来缓解DB服务器的压力。同样是两台机器,只不过WEB机器配置需要升级了,原来的1核1g不够用了,不仅要加cpu还要加内存,因为在WEB上我们需要运行memcached服务,同时php也需要安装memcache扩展。


4. 增加WEB,并做MySQL主从
访问量又扩大了,uv到了5w,数据库服务器因为一开始配置就挺高,所以没有压力,但是WEB服务器负载有点高了,在高峰期可以感觉到网站访问变慢。所以,这时候不得不考虑要加一台WEB服务器。另外,数据库是单点,如果磁盘损坏,可能会带来意想不到的后果,所以我们有必要加一台从DB服务器,作为数据的备份。




在这里,两台WEB服务器我们并没有做负载均衡,因为为了节省资源,暂时先不去购买服务器做负载均衡,我们使用DNS轮询的方法来把用户的请求发到两台机器上,但这种该架构有个问题,一旦一台WEB机器宕机,将会有一半的用户访问不到业务。还有一个问题,我们也需要考虑到,如何保证WEB服务器上的数据一致,比如用户可能会上传图片到WEB服务器上,假如他上传到了WEB1上,那WEB2是不存在这个图片的。所以我们需要做一个共享存储让WEB1和WEB2同时可以访问,所以在这里我把WEB1的一个目录使用NFS共享出来,让WEB2去挂载。还有一个问题就是memcached服务如何分配,在这里,我是把memcaced服务分别安装到两台WEB上的,自己用自己的memcached服务。


5. mysql读写分离
访问量持续上升,uv已经到了数十万。网站在高峰期总是会卡顿那么一段时间。经排查,发现在MySQL服务器上有很多慢查询,经过各种调优依然没有太明显效果,最后决定做读写分离。

做读写分离有两种方案,第一可以借助程序来实现,把所有的写操作指向到主mysql,所有的读操作指向到从mysql。对于这种方案,机器数量和环境不用做任何调整,唯一要做的是程序代码要改一下。第二可以借助mysql-proxy来实现,不用修改代码,节省开发成本,但需要增加一个角色。架构是这样的。





6. 避免单点引入负载均衡
两台WEB服务器因为有一台比较老,所以在高峰期时,终究是没有能扛住而挂掉。结果影响了一半的用户访问不到网站了。经过此次事故,我不得不修改架构,尽量避免单点,于是在WEB前端设置了负载均衡器,并且做了高可用。





在这里我拿nginx做了负载均衡器,并没有使用lvs,因为我觉得nginx更容易操作,更好控制。为了节省成本,我并没有单独把mysql-proxy摘出来作为独立服务器,因为那样的话,也得为它考虑单点问题。在这个架构中,其实还有一个缺陷,就是NFS服务端也是有风险的,更加保险的做法是单独搞一台服务器做NFS服务。

7. 继续扩充
uv上升到100w,两台WEB服务器明显不够用了,而瓶颈并不在mysql上。所以,只增加WEB,同时把NFS服务器单独摘出来,并做一个备用NFS服务器。





8. 引入NoSQL
uv近1000w,三台WEB服务器也早已不够,增加到5台,而MySQL服务器压力逐渐变大,针对mysql的慢查询,发现压力主要体现在个别sql语句上,该优化的已经优化到极致,对于这几个查询,其实是可以使用NoSQL的。于是,我找懂php开发的朋友帮我修改了程序,把一些访问量大的数据存储到redis,从而减少了对MySQL服务器的压力。 而Redis为了防止单点也做了主从。





9. mysql架构演变 

 

网站系统架构演变

...的感觉。二、背景说明?  我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,... 查看详情

大型网站架构-1.架构的演变过程

...发之路。 2.第二阶段:应用服务和数据服务分离随着网站的第一次上线,我们的网站如果运营得不错的话,在这之后应该会逐渐积累人气,业务也会随 查看详情

dubbo项目架构演变过程

...pn框架。随着互联网的发展,用户群体逐渐壮大,网站的流量成倍增长,常规的单体架构已无法满足请求压力暴增和业务的快速迭代,架构的变化势在必行。单体架构单体 查看详情

dubbo项目架构演变过程

...pn框架。随着互联网的发展,用户群体逐渐壮大,网站的流量成倍增长,常规的单体架构已无法满足请求压力暴增和业务的快速迭代,架构的变化势在必行。单体架构单体 查看详情

dubbo项目架构演变过程

...pn框架。随着互联网的发展,用户群体逐渐壮大,网站的流量成倍增长,常规的单体架构已无法满足请求压力暴增和业务的快速迭代,架构的变化势在必行。单体架构单体架构所有模块和功能都集中在一个项目中&#... 查看详情

浅谈网站架构演变

浅谈网站架构   作为一个从事后台开发已经2年的程序员来讲,大部分时间都忙于业务逻辑分析,往往忽略了业务之上的架构层面的设计。本文作为网站架构知识的补充,不仅开拓了眼界,也对以后的程序设计益处多... 查看详情

互联网技术架构演变过程-软件架构设计学习第四天(非原创)

文章大纲一、演变过程思路图二、何为大型网站三、架构体系演进四、架构总结五、参考文章一、演变过程思路图二、何为大型网站1.大型网站特性既然说的是大型网站架构,那么架构的背后自然是解决人因面对大型网站特性而... 查看详情

网站平台架构演变史

...的产品已经做了11个年头了,在餐饮业可以说数一数二,网站架构从原始的单一应用一直演变至今,已经十分庞大了,不说完美,但是可支撑的业务量已经十分强大。最近受邀参与了他们的架构分享会,在此我也总结一下大致内... 查看详情

从运维角度看中大型网站架构的演变之路

...点都不同,今天我以咱们运维角度全面讲解。一个成熟的网站架构并不是一开始设计就具备高可用、高伸缩、高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的。在发展初期,一般都是从0到1,不会一... 查看详情

大型网站架构演变

1、简介大型网站架构的演进最开始都是由小及大慢慢演变过来的,任何一个好的架构都不是设计出来了,是经过业务发展迭代而来的,这个观点我是赞同的。对于网站架构技术非常有兴趣,一直持续关注学习架构技术,本次想... 查看详情

大型网站系统架构的演化

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计... 查看详情

大型网站架构演变和知识体系

...,讲述了淘宝网的架构演变过程,感觉挺好的,之前就对网站架构比较感兴趣,所以也会多关注一些架构方向的文章。本篇文章也是看到后感觉很棒,由于转载的并不是真正的作者,所以也就无法贴出真正作者地址了。以下是该... 查看详情

网站架构演变

...库集群各种缓存服务器业务模型1.2步骤此案例主要是学习网站架构演变的过程,以拓扑图和理论为主,具体实现还需要结合具体的软件。步骤一:单机版LNMP单机版网站,拓扑如图-1所示。用户量少时使用,简单、成本低、存在单... 查看详情

大型网站系统架构的演化(转)

前言   一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架... 查看详情

粗谈大数据的演变过程

...数据源通过离线的方式导入到离线数仓中。下游应用根据业务需求选择直接读取DM或加一层ADS数据服务,比如MySQL或Redis。数据仓库从模型层面分为三层:ODS层ODS层:OperationDataStore,数据准备区,贴源层。直接接入源数据的:业务... 查看详情

网站的演变过程

应用程序、数据库、文件部署在同一台服务器应用服务于数据服务分离应用服务器使用缓存应用服务器集群:提高并发能力、负载均衡数据库读写分离:主从复制反向代理和CDN:提高响应速度分布式文件系统跟分布式数据库系统... 查看详情

《大型网站技术架构》读书笔记——大型网站软件系统架构演变(代码片段)

大型网站软件系统特点大型网站架构演化发展进程大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据。初始阶段的网站架构大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站... 查看详情

大数据flink进阶:数据架构的演变

...支撑业务正常运转的事务数据,例如:系统订单交易量、网站活跃用户数、每个用户在线的状态等,针对这些数据库的操作也主要是增删改查操作,单体架构如下: 查看详情