大型分布式网站的思考(一):大型网站发展历程

news/2024/4/27 23:02:02/文章来源:https://blog.csdn.net/weixin_34123613/article/details/88955100

前几天跟一个朋友聊了一些关于网站缓存分布式的一些东西,发现自己的知识还是太过贫瘠。理论+协议,这是现在我亟待加强的。这个周末买了两本关于分布式网站的书,本着好记性不如烂笔头,便有了这样一系列的文章。希望一同分享,也请多指教。

code less, play more!

前言

这个世界上没有哪个网站从诞生起就是大型网站;也没有哪个网站第一次发布的时候就拥有庞大的用户,高并发的访问,海量的数据;大型网站都是从小型网站发展而来。网站的价值在于它能给用户提供什么家宅,在于网站能做什么,而不在于它是怎么做的,所以网站在小的时候就去追求网站的架构是舍本逐末,得不偿失的。小型网站最需要做的就是为用户提供更好的服务来创造价值,得到用户认可,活下去,野蛮生长。

大型网站软件系统的特点

  • 高并发,大流量
  • 高可用
  • 海量数据
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣
  • 需求快速变更,发布平频繁
  • 渐进式发展

大型网站的发展历程

  1. 初始阶段的网站架构

    最开始没有多少人访问,所以应用程序,数据库,文件都在同一台机器上。

  2. 应用服务器和数据服务分离

    应用和数据分离之后,一般需要三台服务器。应用服务器,文件服务器和数据库服务器,这三种服务器对于硬件要求各不相同。

    • 应用服务器:更强大的CPU
    • 数据库服务器:更快速的磁盘和更大的内存
    • 文件服务器:容量更大的硬盘
  3. 使用缓存改善性能

    网站的访问也遵循二八定律:80%的业务集中在20%的数据上。因此可以把这一小部分数据缓存在内存中,减少数据库的访问压力。

    网站的缓存可以分为两种:

    • 本地缓存:缓存在应用服务器上。本地缓存访问速度快,但是受制于内存限制,缓存数量有限,而且也会出现和应用程序争抢内存的情况。
    • 远程分布式缓存:以集群的方式,缓存在大内存的专用缓存服务器。可以在理论上做到不受内存容量限制。
  4. 使用应用服务器集群提高并发能力

    当一台服务器的处理能力和存储空间不足的时候,不要企图更换更强大的服务器。对于大型网站来说,不管多么强大的服务器,都满足不了网站持续增长的业务需求。此时就可以考虑集群的方式,通过负载均衡调度服务器,可以将来自用户的请求分发到应用服务器集群中的任何一台服务器上。

  5. 数据库读写分离

    使用缓存后,大部分的数据读操作访问都可以不通过数据库完成,但是仍有部分读操作(如缓存过期,缓存不命中)和全部的写操作需要访问数据库。

    目前大部分数据库都提供主从热备的功能,在写数据的时候,访问主库,主库通过主从复制机制将数据更新同步至从数据库,在读的时候就可以通过从数据库获取数据。

  6. 使用反向代理和CDN加速网站响应

    在《web性能权威指南》中有讲到,网站性能的瓶颈,大部分时间都浪费在TCP的握手和传输上。因此可以通过CDN和反向代理的方式来加快响应。

    CDN和反向代理的本质都是通过缓存,不同的主要是:

    • CDN部署在服务器器上的机房,用户在请求时,从距离自己最近的机房获取数据。
    • 反向代理是部署在中心机房,用户请求到达中心机房之后,首先访问的服务器是反向代理的拂去其,如果反向代理服务器中缓存着用户请求的额资源,就将其返回给用户。
  7. 使用分布式文件系统和分布式数据库系统

    随着业务的发展,依旧不能满足的时候,就采用分布式的文件和分布式的数据库系统。

    分布式数据库是数据库拆分的最后手段,只用在单表数据规模特别庞大的时候才使用。更常用的拆分手段是业务分库,将不同的业务数据存储在不同的数据库中。

  8. 使用NoSQL和搜索引擎

    对数据检索和存储越来越复杂的时候,就可以采用一些非关系型数据库如HBase和非数据库查询技术如ElasticSearch等等

  9. 业务拆分

    业务场景复杂的时候,一般讲整个网站业务分为不同的产品线,如首页,订单,买家,卖家等等。

    技术上也会根据产品线划分,将一个网站分为许多不同的应用,每个应用独立部署维护,应用之间可以通过一个超链接建立联系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

  10. 分布式服务

    随着业务越拆越小,存储越来越大,维护越来越困难。此时就可以将相同业务操作的提取出来,独立部署。应用系统只需要管理用户界面,通过分布式服务调用共同的业务服务完成具体的业务操作。也就是最近概念越来越火的——微服务。

  11. 云计算

    大型网站架构解决了海量数据库管理和高并发事务处理,可以将这些解决方案应用到网站自身以外的业务上。现在像阿里云,亚马逊等云计算平台,将计算作为一种基础资源出售,中小网站不需要关系技术架构等问题,只需要按需付费,就可以使网站随着业务的增长获得更大的存储和计算资源。

  12. 未来

    未来还能变成什么样子,我也不清楚,也许以后都不是开发人员来维护了,所有的这些都是AI来完成,程序员要做的就是如何完善AI。也许AI发展到最后,人类都不需要存在了吧。

结语

网站的技术是为业务而存在的,除此以外毫无意义。在技术选型和架构设计中,脱离业务发展实际,一味的追求新技术,可能会把技术发展引入一个歪路。

技术是用来解决业务的问题,而技术不可能将所有问题都解决掉,涉及业务自身的问题,还是要通过业务手段去解决。

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

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

相关文章

信誉可靠的压力测试软件,如何压力测试电子商务网站?

背景与面临的挑战!您想快速、准确地定位电子商务网站中潜在的性能瓶颈吗?思博伦通信专业化测试服务部一定可以帮到您。数月前,2014巴西世界杯在我们的最大电视媒体一场场直播和互动节目的伴随下曲终人散。为了保证该媒体《xx赢》——这个球迷…

免费搭建个人网站流程!马上拥有自己的网站!

第一步:选择域名&注册域名 方式一:(直接输入阿里云链接)https://wanwang.aliyun.com/ 我用支付宝账号(qq邮箱)登录上面的链接。 方式二:百度搜索注册域名,就会出来多个注册域…

黄聪:清理微信浏览网站的缓存,Cookie

微信官方说明是取消关注,但是开发中发现取消关注缓存还是存在! 解决方法如下: 方法一: 用微信内置浏览器打开这个网页debugx5.qq.com ,就会有清除缓存的选项,如下图 方法二: 如果你用Android&am…

究竟该怎么选择最适合的期刊?四大SCI选刊网站测评

上一期我们给大家介绍了四个选刊的网站,那么这几个网站中哪个网站比较可信可靠呢?今天小编就和大家一起来试试这几个网站的选刊准确性。 我们随便找篇文章试试,如下所示, 这篇是来自是Weliy旗下的《Hepatology》,四个…

大型网站技术架构:核心原理与案例分析

大型网站软件系统的特点 高并发,大流量高可用:系统24*7小时不间断服务海量数据:需要存储,管理海量数据,需要使用大量服务器用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的&…

用html制作个人站点,如何用html5制作个人主页?如何建立个人网站,我想建立自己的网站怎么做?...

如何用html5制作个人主页?如何建立个人网站,我想建立自己的网站怎么做?下面就和小编一起来看看吧!如何用html5制作个人主页?整体把页面分成两部分,包括在内,页脚部分是单独的。关于网站模板,大致结构得知后,从局部开…

使用sqlmap对某php网站进行注入实战及安全防范

使用sqlmap对某php网站进行注入实战一般来讲一旦网站存在sql注入漏洞,通过sql注入漏洞轻者可以获取数据,严重的将获取webshell以及服务器权限,但在实际漏洞利用和测试过程中,也可能因为服务器配置等情况导致无法获取权限。1.1php注…

网站缓存【我只是单纯的保存网站!】

首先不要问我为什么要保存网站!不要问我保存离线网站有什么意义!【我只是单纯的保存网站!】 首先我们需要工具 WebZip 绿色中文版 使用教程 自写简洁教程! 转载于:https://www.cnblogs.com/userzf/p/9829725.html

【工具】ArchiveBox - 收藏夹管理、网站快照爬虫

文章目录github:https://github.com/ArchiveBox/ArchiveBox demo:https://demo.archivebox.io/

丈哥SEO:SEO过程中如何做好营销型网站的内容建设?

(文/丈哥)所谓营销型网站就是为实现某种特定的营销目标,能将营销的思想、方法和技巧融入到网站策划、设计与制作中的网站。最为常见的营销型网站的目标是获得销售线索或直接获得订单。 一个好的营销型网站就像一个业务员一样,了解…

mysql 备份网站_新人须知的网站文件和MySQL数据库备份流程思路

昨天老左再次遇到一个网友告知使用的一台服务器自己无意中点击主机商面板的导致服务器被重新安装系统(居然这也可以),问问是否可以恢复数据。这个同学和之前遇到好几次的网友真相似,从开始购买服务器,到自己网站搬迁过来或者新做的网站居然这…

搭建lamp(linux+apache+mysql+php)_Centos7运维(2)-第一次在Linux下部署PHP项目,采用LAMP网站架构(Linux+Apache+MySQL+PHP)...

LAMP指的Linux(操作系统)、Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的缩写,一般用来搭建web 服务器。(1)Mysql 5.61.下载mysql-server文件[rootCentos~]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.n…

使用Python进行网站页面开发——HTML

目录 一、HTML基础语法 1.HTML是什么? 2.HTML基本结构 3.HTML注释 二、HTML常用标签介绍 1.文本标签 2.格式化标签 3.图片标签 4.超级链接标签 5.表格标签(用来显示数据) 6.表单标签(用来接收数据) 7.行内…

使用Python进行网站页面开发——网页布局介绍

一、传统的DIVCSS布局 1.HTML5语义化标签 <header>定义页面或区段的头部(页眉) <footer>定义页面或区段的尾部&#xff08;页脚) <nav>定义页面或区段的导航区域&#xff08;导航) <section>页面的逻辑区域或内容组合(区块) <article>定义正文或…

使用Python进行网站页面开发——Django框架介绍与安装

一、web开发介绍 二、框架介绍 1.什么是框架? 框架就是程序的骨架&#xff0c;主体结构&#xff0c;也是个半成品。 2&#xff0e;框架的优缺点 可重用、成熟,稳健、易扩展、易维护 3. Python中常见的框架 大包大揽Django被官方称之为完美主义者的Web框架。力求精简web.py…

使用Python进行网站页面开发——Django快速入门

目录 一、项目的创建与运行 1.创建项目 2.运行 二、应用的创建和使用 1&#xff0c;创建一个应用程序 2.编写我们的第一个视图 三、项目的模型 1.连接MySQL数据库设置 2.创建模型 3.激活模型 4.使用&#xff08;两种&#xff09; &#xff08;1&#xff09;现在进入交…

使用Python进行网站页面开发——Django的URL路由配置

目录 一、Django是如何处理一个请求? 二、路径转换器 三、错误处理 四、包括其他的URLconf 五、URL的反向解析 介绍&#xff1a; 一个干净优雅的URL方案是高质量Web应用程序中的一个重要细节。Django可以让你自己设计URL&#xff0c;无论你想要什么&#xff0c;没有框架…

Github搭建个人网站(学习前端,记录个人博客)

目录初步搭建优化页脚固定初步搭建 这是我做的&#xff1a; 访问网页可看&#xff1a; https://chenshunpeng.github.io/&#xff08;仓库地址&#xff1a;here&#xff09; 借鉴自&#xff08;会动的主页&#xff0c;感觉很nice&#xff09;&#xff1a;https://yk-liu.g…

在线翻译网站的对比

技术方面的文档&#xff0c;很多都是英文的&#xff0c;对于英文不好的人来说&#xff0c;看英文文档是件很痛苦的事情&#xff0c;此时就不得不借助于翻译工具了&#xff0c;比如在线翻译网站&#xff0c;那么找到一个合适的翻译网站是非常有帮助的。 在线翻译网站主要有 谷歌…

高并发大流量网站 10 个调优策略

2019独角兽企业重金招聘Python工程师标准>>> 普通的P4服务器一般最多能支持每天10万独立IP&#xff0c;如果访问量比这个还要大&#xff0c; 那么必须首先配置一台更高性能的专用服务器才能解决问题 &#xff0c;否则怎么优化都不可能彻底解决性能问题。1.硬件升级 …