大型网站技术架构演进_网站信息架构

大型网站技术架构演进_网站信息架构出处:http://blog.csdn.net/anxpp/article/details/51614973大型网站架构演化过程1、初始阶段的网站架构网站一开始,使用的人并不多,访问量比较小,使用一台服务器就已经完全满足要求的。我们的个人主页、博客,都可以使用如下架构:01应用程序、数据库和文件等资源,都在同一台服务器上。通常也使用一些开源免费的软件来将成本最低化。2.2、应用服务于数

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

出处:http://blog.csdn.net/anxpp/article/details/51614973

大型网站架构演化过程

1、初始阶段的网站架构

网站一开始,使用的人并不多,访问量比较小,使用一台服务器就已经完全满足要求的。我们的个人主页、博客,都可以使用如下架构:

Jetbrains全家桶1年46,售后保障稳定

01
应用程序、数据库和文件等资源,都在同一台服务器上。通常也使用一些开源免费的软件来将成本最低化。

2.2、应用服务于数据服务分离
随着业务的发展,一台服务器终将不能满足需求。这是,可以按需将应用服务和数据服务分离:应用服务器、数据库服务器和文件服务器。
他们根据各自的特性,对cpu、内存和硬盘等的需求也各不相同:

02
应用服务于数据服务分离后,不同特性的服务器担任不同的角色, 系统整体性能将大大提高。

2.3、使用缓存改善性能
我们很清楚,并不是所有的资源都被平均访问到,刚好相反,一部分资源可能会被非常频繁的访问,而另外一些则几乎不会被访问。
如果我们将最常被访问的资源直接放到内存中(或其他的缓存方式),由于不再需要从数据库(硬盘)中读取,速度将会大大提高,不过也会增加对内存的需求。
而缓存一般分两种,应用服务器本地缓存和远程缓存。本地缓存因内存原因,不适合放太多,所以可以专门部署大内存的服务器,当远程缓存服务器(速度比本地缓存会慢些)。而目前的缓存技术也比较多,常见的NoSQL数据库也常被用来当缓存工具使用,本地缓存也能借助一些框架实现,这时的架构如下:

03
使用缓存后,数据访问压力会大大减小。

2.4、使用服务器集群
业务继续发展后,高并发的访问不可避免,使用服务器集群是比较常用的有效手段。
这相当于将一台应用服务器复制多个,然后通过负载均衡服务器,将请求分发到不同的应用服务器,他们干的是相同的事,不过压力会大大减小:

04
根据高并发的情况,可以增加或者减少其中的应用服务器,从而使系统有较好的伸缩性。

2.5、数据库读写分离
虽然缓存能一定程度上优化数据访问,但是当业务发展一定程度时,数据库的负载压力可能还是会过高,从而成为瓶颈。
目前主流的数据库,都支持配置主从数据库,利用这一特性,我们可以部署两台数据库服务器,一台用于写操作,这是主数据库,而从数据库用于读,主数据库会将数据以数据库提供的机制,增量同步到从数据库,这样就改善了数据库的负载压力:

06
为了便于应用服务器的扩展以及更容易的访问主从两个数据库,通常会从应用服务器中独立出来一个专门用来访问数据库的数据访问模块。

2.6、使用反向代理和CDN加速访问
CND和反向代理都是使用缓存的原理,区别在于前者部署与网络提供商的机房,使用户咋请求资源时,从就近的机房获取数据;后者部署于应用服务器前端,用户请求到达后,会有限返回服务器中缓存的可用资源。

07
这两种技术主要目的就是加速用户的访问,使数据返回更快,同时还能减轻后端服务器的负载压力。

2.7、分布式文件服务器和分布式数据库
随着业务的日益增长,任何单个强大的服务器都不能满足业务的需求,这时可以使用分布式数据库和分布式文件服务器。
在数据已经达到服务器不能支持的时候,就可以拆分业务,让他们使用的数据库服务器部署在不同的物理服务器上:

09

2.8、使用NoSQL和搜索引擎
通常使用NoSQL和搜索引擎技术来处理复杂的数据存储和检索:

10

2.9、业务拆分
随着业务的进一步发展,也使其变得更加复杂,导致整个系统难以维护。
这时就可以将整个业务拆分成不同的产品线,再按需将各个产品线拆分成不同的应用,并对这些应用单独部署维护,然后以超链接、消息队列数据分发和访问统一的数据存储系统来关联这个完整的系统:

09

2.10、分布式服务
随着业务的拆分得越来越小,整个系统的关联上也变得日益复杂,部署维护依然是一件非常困难的事。
这时可以将这些业务中一些通用的地方提取出来独立部署加以复用,提供统一的服务:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234554.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微型计算机原理与接口技术——8086指令系统之移位指令

    微型计算机原理与接口技术——8086指令系统之移位指令移位指令移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。要求操作数不能是立即数;这类指令的执行大多会影响6个状态标志位。非循环移位指令逻辑左移SHL(ShiftLogicLeft)算术左移SAL(ShiftArithmeticLeft)逻辑右移SHR(ShiftLogicRight)算术右移SAR(ShiftArithmeticRight)4条指令的格式完全相同,可实现对8位或16位寄存器操作数或内存操作数进行指定次数的移位。逻辑移位指令针对的

    2022年5月11日
    53
  • Vue2 后台管理系统解决方案

    Vue2 后台管理系统解决方案

    2021年10月11日
    38
  • EasyPlayer视频源切换

    EasyPlayer视频源切换EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的.这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播.由于EasyPlayer的播放端已经放在Fragment了,这使得SDK层可以对好多应用层的代码做以封装,这样尽可能给开发者带来方便.比如,两个视频源切换的时候,只需要创建两个PlayFragment,然后对这两个Fragment进行显示切换,如代

    2022年6月17日
    34
  • 矩阵的计算[通俗易懂]

    矩阵的计算[通俗易懂]矩阵运算规则:矩阵与常量运算矩阵与向量运算矩阵与矩阵运算矩阵之间相乘,必须满足B矩阵列数等于A矩阵行数才能运算,矩阵与矩阵之间的计算可以拆分为矩阵与多个向量的计算再将结果组合,返回的结果为一个列数等于B矩阵、行数等于A矩阵的矩阵。矩阵加减矩阵加减必须满足矩阵之间纬度相同,返回的结果也会是一个相同纬度的矩阵。矩阵的乘法规律:不满足交换律,A×B≠B×A满足结合律,A×(B×C)=(A×B)×C满足分配率,A×(B+C)=A×B.

    2022年4月19日
    62
  • 热部署JRebel的使用

    热部署JRebel的使用JRebel是一套JavaEE开发工具。JRebel允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品。JRebel是收费软件,用户可以在JRebel官方站点下载30天的评估版本。Jrebel可快速实现热部署,节省了大量重启时间,提高了个人开发效率。JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应…

    2022年5月11日
    47
  • qtabbar设置不同宽度_华为最小宽度默认

    qtabbar设置不同宽度_华为最小宽度默认随手记。因为自己搜没搜到。一行代码搞定。我是加在resizeEvent函数中的。ui.tabWidgetCentral->tabBar()->setMaximumWidth(width);修改后效果原效果

    2022年9月23日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号