专栏首页23号杂货铺谈一谈大型网站架构的演进之路(一)

谈一谈大型网站架构的演进之路(一)

元(猿)宵节到了,学习完了。花点时间陪陪家人,打打电话。祝大家元(猿)宵节快乐!阖家幸福~ —— 23号老板

0

1

大型网站的特点

收到“忠粉”小伙伴的反馈,之前的知识文章篇幅太长,看之乏力。小编采纳建议,之后的文章尽量以通俗易懂,简短概述,长文拆分的方式进行。

进入正题,今天来聊一聊大型网站的搭建思想。与传统的企业应用系统相比,大型互联网应用系统,通常概括有以下几大特点:

1、大流量、高并发

2、高可用,保证系统24小时不间断运行

3、大数据集,需要存储和管理的数据繁多、巨多、超级多

4、用户分布广泛,网络情况复杂

5、安全环境恶劣(网络攻击、盗窃信息)

6、需求快速变更,发布频繁。(上午刚和产品经理干了一仗,下午又得琢磨者明天的殊死肉搏)

7、渐进式发展(从单一的小网站逐渐扩展为大型网站)

02

发展历程

大型网站的技术挑战来自于逐渐增长的用户,任一简单功能的业务,面对庞大的用户体量做分析处理,都会变得困难棘手。

初始阶段的网站架构

在许多的初创公司,成立项目,构建网站,在没有太多人访问的情况下,可能只需要一台服务器就足以支撑所有的服务。将应用程序、数据库、文件等所有的资源放在一台服务器上(通常使用Linux系统服务器)。

随着用户量的增多,结合用户的需求调研,项目的业务便进入了第二个阶段,迭代更新。一台服务器逐渐不能满足需求,比如数据的存储空间不足,比如用户访问的响应时长增加。这时,一般就会采取将应用和数据分离的办法,简单的理解可以将整个网站拆分为3台服务器:应用服务器、文件服务器、数据库服务器。通过这样的方式,根据不同的硬件资源要求,分配不同的硬件将其拆分开来。不同特性的服务器承担不同的服务角色,以支持网站业务的进一步发展。

使用缓存改善网站性能

做过开发的童鞋都清楚,绝大多数网站的业务,承载最多的一般都是读数据,而写数据所占比例相对少的多。因此,在业务访问较为集中的数据上,迭代的过程中将其优化至缓存当中,可以有效的减少对数据库的访问压力,提高网站的整体性能。并且,如果考虑增加一台缓存服务器,便可避免服务程序与缓存数据争抢内存的情况。

数据库的读写分离

随着数据的不断增多,当数据库称为瓶颈的时候,便可以开始考虑数据库层的读写分离措施。目前来看,绝大多数的主流数据库都提供了主从热备的功能,通过配置2台数据库服务器的主从,可将一台服务器的数据更新同步到另一台服务器上。实现数据的读写分离,从而改善数据库的负载访问压力。

0

3

集群措施

当这个“麻雀”五脏俱全之后,一个小型丰富的功能网站便见雏形。这样的产品,通过市场运营和推广,如果产品优良,用户体验较好,便逐渐的吸引更多的人关注和使用产品。

随着用户量的激增,结合市场反馈,团队便会采取一定的产品策略,对其进行下一步的迭代开发。当一台服务器的处理能力不够、存储空间不足的时候,使用服务器的集群方式来改善网站的并发处理能力就变得尤为重要和关键。

通过增加一台负载均衡的调度服务器,将来自于用户的访问请求,分发到应用服务器集群中的任意一台,从而使应用服务器的负载压力不再成为网站瓶颈。

市面上常见的一些负载均衡方法,如使用DNS负载均衡、Nginx反向代理、F5硬件负载均衡、Apache等等。当静态资源逐渐增多时,企业也会采取CDN的方法进行资源加载加速。

经历到这一阶段,一个中型的网站便已形成。

未完待续......

0

5

小结

有很多的朋友找我聊说大型的网站项目,对大型项目网站不知道如何着手,敬而远之。其实拆分细看,认真琢磨,并没有想象当中的那么遥不可及。小结一下,项目的发展历程:

->单一服务

->分不同角色服务

->增加缓存

->数据层读写分离

->服务应用集群

->负载均衡

->CDN优化

好了,时间不多,今天就写到这里。元(猿)宵节到了,祝大家元(猿)宵节快乐!阖家幸福~

文章内容参考文献《大型网站技术架构 核心原理与案例分析》。

本文分享自微信公众号 - 23号杂货铺(sharontang0323),作者:bboyHan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java之BigDecimal的高级使用

    使用Java开发的朋友,对于数据相关的计算想必都有过头疼的经历。float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是...

    23号杂货铺
  • 一文带你安装Linux下的Mysql

    https://dev.mysql.com/downloads/mysql/5.7.html#downloads

    23号杂货铺
  • 带你使用Windows上的Linux(Win10子系统)

    在过去我们需要在windows下使用liunx,要么装虚拟机要么装双系统模式。在Win10时代又增了一个方法,可以使用他的子系统。现在教大家如何安装以及使用。

    23号杂货铺
  • 如何防止网站被CC攻击 导致CPU内存耗尽的处理过程分享

    公司的官方网站从春节前无缘无故就出现连接数据库异常的现象,由于以前也出现过,再加上没多久逢年过节,也就没有太在乎这个情况,仅仅试着重新启动了网站数据库。逢年过节...

    技术分享达人
  • 临阵磨枪,血拼季网站优化的最后三板斧

    血拼季临近,零售商们需要提升Web性能以满足高峰期的需求。本文提出三个优化建议,包括图像优化等,旨在帮助大家化解黑五的性能难题。 美国的节日购物季即将在感恩节后...

    CSDN技术头条
  • 网站被大量CC攻击 导致网站打不开的处理解决

    公司的官方网站从春节前无缘无故就出现连接数据库异常的现象,由于以前也出现过,再加上没多久逢年过节,也就没有太在乎这个情况,仅仅试着重新启动了网站数据库。逢年过节...

    网站安全专家
  • 《大型网站技术架构》学习笔记-02架构篇

    上一篇文章已经介绍了网站系统最需要关注的5大质量属性,接下来对这些特性进行详细介绍(这部分有部分内容会显得有些陈旧,之后会进行更新)。 ? 高性能架构 网站...

    用户1216676
  • 企业网站外链建设:友情链接合作对象怎么找?

    企业网站外链建设中,友情链接合作是不可或缺的一环。那么友情链接合作对象怎么找?怎么快速的找到与自己网站匹配的友情链接呢?下面小编将自己的工作经验整理下,分享给大...

    悉知科技建站
  • 腾讯云建网站步骤流程

    一台腾讯云服务器可以建多个网站,只要你的服务器配置足够高,就可以建很多。服务器的配置指的是CPU和内存,配置越高建的网站就越多。如果配置低,建的网站太多,服务器...

    秋风落叶
  • 网站管理员控制台用途

    全球四大搜索引擎(GOOGLE,BAIDU,BING,YANDEX)提供一款面向网站管理员的免费工具。网站管理员可以通过该工具了解自己网站的收录情况,优化其网站...

    林雍岷

扫码关注云+社区

领取腾讯云代金券