网站Web业务架构从小到大演变

news/2024/5/10 18:19:47/文章来源:https://blog.csdn.net/weixin_33908217/article/details/89658628

有一天,我突发奇想创建了一个站点,基于 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架构演变

http://www.cnblogs.com/liwei0526vip/p/6424605.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_832835.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行云海cms mysql检测不出版本_PHP行云海CMS(XYHCMS)内容治理系统网站源代码 v3.5和安装教程...

PHP行云海 CMS(XYHCMS)内容治理系统网站源代码 v3.5和安装教程登录后端后,宁静问题[√] 修正后端任意文件读取(有模板治理权限地)[√]模板里禁止用原生 php[√]“后端任意文件下载”(预留下载功能)清除[√] 网站设置限制上传图片格式设置(全局禁止上传 php 文件)[√…

Win7/Win2008下IIS配置Asp网站启用父路径的设置方法(已解决)

Win7/Win2008下IIS配置Asp网站启用父路径的设置方法(已解决) 在Win7/Win2008下IIS配置Asp网站启用父路径的设置方法与win2003下不同,看看下图就知道了。

搭载网站的云服务器需要空间备案,网站空间要备案吗

网站空间要备案吗 内容精选换一换HLL(HyperLoglog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快,节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据…

智齿客服Android集成流程,智齿客服接入_智齿客服客服系统如何接入网站_智齿客服接入流程_企业服务汇...

编者按:网站是在线客服最普遍的应用场景,因此如何给网站添加客服功能是企业在选择客服系统时最为关注的问题。那么如何将智齿客服系统接入网站,智齿客服接入网站的方式有哪些,智齿在网站客服接入方面有哪些优劣势呢?以…

写个软件来防止服务器网站CPU百分百

问题: 大概每隔两个星期左右,秋色园上服务器就会来一次CPU百分百,由于问题发生的概率极低,要它重现也难,所以只能意淫是内存太少的原故。以前出现,远程上去结束掉进程,就正常了,悲剧的是最近秋色…

为你的网站加上SSL,可以使用HTTPS进行访问

首先,我们使用的是nginx 将域名证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。 在ngxin配置中,添加如下: server {listen 443;server_name www.domain.…

《SEO的艺术(原书第2版)》——1.5 人们如何搜索

1.5 人们如何搜索 为了让人们得到更好(也就是更快、更新鲜和更相关)的搜索结果,搜索引擎投入大量资源了解人们的搜索方式。对于网站发布者来说,关于人们如何搜索的信息有助于改进网站的易用性和搜索引擎兼容性。根据comScore的数据…

网站服务器排名,网站的服务器对排名有影响吗?

web服务器就是我们所说的web服务器。网站的速度和稳定性直接影响网站的用户体验,也对网站排名有一定的影响。让我们来谈谈以下几点:网站的服务器对排名有影响吗?速度是我们在选择空间时首先考虑的因素之一。我们在购买主机时使用服务器来测试站点。保持主…

网站不收录 服务器,新网站不收录该怎么办?

原标题:新网站不收录该怎么办?百度反馈网站链接就目前所有方法来说,这个办法是最实用的,而且是最安全的,怎么操作呢?首先我们要在百度站长进行站点绑定,这个就不详细说了,不懂的大家…

seowhy论坛 seo技术 seo搜索引擎排名 seo交流学习 网站快速收录操作方法

SEO论坛 百度站长平台社区 百度官方论坛,时不时有官方人员回答问题。而且也是目前比较所剩不多的SEO论坛了。 站长世界WebmasterWorld.com 如果你只有时间看一个英文论坛和博客,那就看这个。站长世界包含的不仅仅是SEO,还有很多关于建站的…

hviewer添加新站点_使用Hugo+Netlify 5分钟部署一个网站 NanoDM站点迁移到Netlify记

友情提示:微信公众号文章发布后无法修改更新。如有更新,会在原文更新和修正。如需查看原文请点击底部的“前言此前老灯介绍过最麻烦的Hugo站点部署方法,很多人可能光看配置文件就头疼了,这次老灯借着给NanoDM站点迁移的机会&#…

linux国外脚本网站,Shell脚本实现防止国外ip访问服务器

客户的要求,不想让外国的ip来访问服务器,本来要让机房在上端路由解决,但是那些人不鸟你!!!~~~~这样的话,只能自己用iptables解决了~~~~~~~~~关于 ip库 大家可以去 http://www.ipdeny.com/ipblo…

某食品公司网站存在SQL注入

错误链接:http://www.shenggu2006.com/news1.php?id5 在id后传参6-1,回显页面与id5相同,放入sqlmap跑包,存在sql注入 甚至可以爆出数据库名

下载英文图书的几个网站

★ 1. https://ebooks.adelaide.edu.au/ 按作者:https://ebooks.adelaide.edu.au/meta/authors 按书名:https://ebooks.adelaide.edu.au/meta/titles/A.html 按类别: https://ebooks.adelaide.edu.au/meta/collections 界面下方的几个按钮…

ASP网站搭建

Windows2003IIS6.0环境搭建 集成IIS6.0的Windows2003虚拟机 链接:https://pan.baidu.com/s/1rMb9-6A_Oc2luTwtoaB2VA 提取码:8d1o 安装好IIS组件后 管理工具->Internet信息服务(IIS)管理器 网站->新建->网站 意思就是备注,随便填,点击下一步 …

关于测试web端兼容性、性能测试和安全测试的网站

一、测试浏览器兼容性的国外网站 1.网址:browsershots.org BrowserShots的功能比较强大,它支持如上图所示各种不同系统下不同版本的浏览器。只要你选中你所想查看的浏览器,然后输入你网站的网址,它就会将你网站在不同浏览器的显示…

手机控必备网站,让自己拥有更好的智能手机

手机成为人们日常生活标配后,无论年幼年长还是年轻群体,都将业余时间给了手机,而移动互联网不但满足了我们的需要,还方便了我们的生活,但如果没有一部好的手机,我们分分钟都有想砸手机的暴躁心情&#xff0…

网站开发_盒子模型

divcss 与 全table布局 先主流布局为divcss&#xff0c;更容易实现数据与表现的分离&#xff0c;代码更少&#xff0c;更容易维护。 两种盒子模型 w3c标准盒子模型以及IE盒子模型&#xff0c;推荐试用标准盒子模型。需要在网页顶部加DOCTYPE 声明区分。 <!DOCTYPE html PUBL…

网站开发_从基础做起1

推荐一个网站&#xff1a;标准之路&#xff0c;讲解网站开发确实很详细&#xff0c;带有实例边讲边实践&#xff0c;很是惊喜 就本人的经验来说&#xff0c;网站开发基础可以去w3School中学习html以及css的基本语法&#xff0c;然后参考上面提到网站的DIVCSS教程 一步一步搭建起…

网站开发_从基础做起2

一超链接的四种样式 a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */ 以上分别定义了超链接未访问时的链接样式&#xff0c;已访问的…