作者:13
GitHub:https://github.com/ZHENFENG13
版权声明:本文为原创文章,未经允许不得转载。
此篇已收录至《大型网站技术架构:核心原理与案例分析》读书笔记系列,点击访问该目录获取完整内容。

何谓大型网站

大型网站系统特点:

ps:符合这些要求的所谓大型网站真的很少,可遇而不可求也。

说到大型网站,就要先理一下大型网站的特点:高并发,大流量,高可用,海量数据等,本文根据《大型网站技术架构》一书整理如下:

初始阶段的网站架构

初始阶段都比较简单,通常一台服务器就可以搞定一个网站了,ssm-demo系列既是如此,一台服务器搞定所有演示站点,后期逐渐优化,向更优的方向进化!

应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求,这时候就需要将应用和数据分离:

使用缓存改善网站性能

现在的80%的业务访问都会集中在20%的数据上,网站基本上都会使用缓存,前文中也有关于缓存的相关教程,我们的perfect-ssm项目目前处于这个阶段中,通过缓存层的接入,减少部分对数据库的直接压力,提升网站的响应性能。

使用应用服务器集群改善网站的并发处理能力

因为单一应用服务器能够处理的请求连接有限,在网站访问高峰时期,应用服务器会成为整个网站的瓶颈,因此使用负载均衡处理器势在必然,通过负载均衡调度服务器,可将来自浏览器的访问请求分发到应用的集群中的任何一台服务器上,进一步将压力分担掉。

数据库读写分离

当用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈,而目前主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上,网站利用数据库这一功能实现数据库读写分离,从而改善数据库负载压力。

目前很多云服务商都有类似的产品提供,当然,也可以自己搭建数据库集群并在业务代码中进行读写分离的实现(有时间会整理相关教程)。

使用反向代理和CDN加上网站相应

提高网站的访问速度,主要手段有使用CDN和反向代理。

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理是部署在网站的中心机房,当用户请求到达中心机房后,首先访问的反向代理,如果反向代理缓存着用户请求的资源,则直接返回给用户。

使用分布式文件系统和分布式数据库系统

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。
分布式数据库时网站数据库拆分的最后手段,只用在单表数据规模非常大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务拆分,将不同业务的数据部署在不同的物理服务器上。

使用NoSQL和搜索引擎


搜素引擎也基本已经形成现在大型网站必须提供的功能了,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。各种开源产品不断涌现,遍地开花:redis、mongodb、solr、elastic stack、hadoop、spark......

关于搜索引擎的接入,目前考虑在My-Blog项目中接入elastic search,优化文章搜索模块。

业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将真个网站业务拆分成不同的产品线。

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

分布式服务

由于每一个应用系统都需要执行许多相同的业务操作,比如用户管理,session管理,那么可以将这些公用的业务提取出来,独立部署。

本章节思维导图

偷懒一下,直接用了前一篇文章的图:

整理图片整理的要吐血了。

首发于我的个人博客.

大型网站技术架构(二)--大型网站架构演化相关推荐

  1. 关于大型网站技术演进的思考--网站静态化处理

    转自: 夏天的森林blog:(系统设计与架构(47)) 一 在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大 规模的并发访问量,如果是一个动态的网站, ...

  2. 在线网站技术分析工具

    Wappalyzer:在线网站技术分析工具 Wappalyzer 网站是一个可以分析不同网站所使用的各种技术的工具,对于有自身经验的网站开发者而言可以通过代码开分析网站的构架和所采用的技术,不过现在你 ...

  3. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  4. 做哪些网站基本优化可以提高网站权重?

    一.网站基础优化 网站的基础优化包括网站空间的稳定性.URL标准化.程序的速度和网站布局结构,网站各个页面的TDK标签写法,标签的合理使用,h1.alt.次导航.完善的内链布局等,只有做好这些基础操作 ...

  5. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

  6. 大型网站技术架构(二)--架构模式(转)

    大型网站技术架构(一)--大型网站架构演化 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型 ...

  7. 大型网站技术架构(二)--架构模式

    大型网站技术架构(一)--大型网站架构演化 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型 ...

  8. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

    十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱.经常在技术网站.文档中出现的"四层负载均衡"."七层负载均衡"字眼有什么含义?有什么区别?对客户网络有哪些不 ...

  9. 读书笔记-大型网站技术架构(核心原理与案例分析)

    一.大型网站架构演化 1.1 大型网站软件系统的特点 高并发.大流量:高可用:海量数据:用户分布广泛,网络情况复杂:安全环境恶劣:需求快速变更,发布频繁:渐进式发展: 1.2 大型网站架构演化发展历程 ...

最新文章

  1. [洛谷P1317]低洼地
  2. XFS:大数据环境下Linux文件系统的未来
  3. http://www.csdn.net/
  4. java虚拟机所支持的指令_JVM虚拟机指令
  5. unicode 编解码记录
  6. Python学习笔记6(列表生成式)
  7. Microsoft SQL Server 2005 Service Pack 2 已经可以下载
  8. python 实现原型设计模式
  9. openstack ice版文档horizon整理(页面resize)
  10. (转载)JavaScript中的原型和对象机制
  11. oracle10g   RMAN增量备份策略
  12. google服务框架 闪退_缺少谷歌服务框架的情况下出现闪退黑屏
  13. Nonebot QQ机器人插件一:实时天气获取
  14. python进行主成分分析_python 主成分分析
  15. win10 安装mysql 卡死_win10安装Mysql5.5卡住假死
  16. Android中的常用控件之进度条(ProgressBar)
  17. 西班牙建筑中的突起感是什么呀
  18. stl格式文件导入Unity
  19. snmp在win10上安装使用
  20. Spring Boot 实践折腾记(13):使用WebFlux构建响应式「推送API 」

热门文章

  1. android中判断sim卡状态和读取联系人资料的方法
  2. 2020年大厂职级薪资一览表
  3. linux小小输入法 不能中文,在centos 下安装小小输入法存在的问题
  4. java 命令读取参数_如何读取/处理命令行参数?
  5. idea java 代码混淆加密_使用 IntelliJ IDEA 开发一般 Java 应用程序时配置 Allatori 进行代码混淆...
  6. 复制出来的文本都是大写_好用又冷门的Word快捷键,据说80%的人都不知道!
  7. java 日期函数转换_java 日期函数转换
  8. 一体化系统中心服务器,数据中心一体化:监测与控制
  9. Java NIO:浅析I/O模型
  10. JAVA异步爬虫_Java 爬虫遇上数据异步加载,试试这两种办法!