大型网站架构演变和知识体系

news/2024/5/20 14:52:00/文章来源:https://blog.csdn.net/zqtsx/article/details/8710526

1、架构演变第一步:物理分离webserver和数据库

2、架构演变第二步:增加页面缓存

如用squid做页面缓存,或生产静态页面,不使用jsp

3、架构演变第三步:增加页面片段缓存

页面缓存失效情况比较多,因此可以使用页面片段缓存,只缓存不长变部分。

4、架构演变第四步:数据缓存:缓存那些读多写少的数据。最常见的就是用户数据。如java中单JVM级/集群级缓存(Ehcache)、分布式缓存(memcached)等。

5、架构演变第五步: 增加webserver(集群web server):考虑负载均衡(apache的负载均衡,LVS负载均衡、F5硬件级负载均衡),数据缓存需要考虑使分布式缓存(memcached)

6、架构演变第六步:分库:按业务将不同业务分为不同的库,部署到不同的服务器上,如用户系统单独一台、论坛等其他每个产品一台。

7、架构演变第七步:分表、DAL和分布式缓存:按照分库思想分表,需要注意一些规则。如用户系统设计时,把不经常访问的数据放到一张表(需要时加载)。DAL(Data Access Layer):分布式数据访问层,使分表透明化,自动切表。DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库操作的控制(超时、异常)、分库分表规则的封装等;

8、架构演变第八步:增加更多的webserver:web服务器禁止使用session,数据可存分布式缓存

9、架构演变第九步:数据读写分离和廉价存储方案:如使用NoSql(key-value数据库,mongodb等),数据读写分离要求对数据库的复制、standby(可将单实例数据库升级到RAC

(real application clusters 实时应用集群)数据库)等策略有深入的掌握和理解,同时会要求具备自行实现的技术;

10、架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代

七种缓存使用武器 为网站应用和访问加速发布时间:

Web应用中缓存的七种武器:

1 数据库的缓存

通常数据库都支持对查询结果的缓存,并且有复杂的机制保证缓存的有效性。对于MySQL,Oracle这样的数据库,通过合理配置缓存对系统性能带来的提升是相当显著的。

2 数据连接驱动的缓存。

诸如PHP的ADODB,J2EE的连接驱动,甚至如果把HIbernate等ORM也看成连接器的话。这里的缓存有效机制就不是那么强了,使用此步的方法实现缓存的一个最好的优点就是我们取数据的方式可以保持不变。例如,我调用

$db->CacheGetAll("select * from table"); 的语句不需要改变,可以透明实现缓存。这主要应用于一些变化不大的数据上,例如一些数据字典是不经常变化的。

3 系统级的缓存

可以在系统内通过Cache库,自行对需要的数据进行缓存,例如一个树桩菜单生成十分消耗资源,那可以将这个生成的树缓存起来。这样做的缺点是,当这颗树的某些地方被更新时,你需要手动更新缓存内的东西。使用的缓存库都可以有不同的缓存方法,有的把内容放在硬盘上,有的放在内存里面,如果你把内容模拟成硬盘来缓存,速度当然也能提升不少。

4 页面级的缓存

这个在内容管理系统里面用的最多。也就是生成静态页面。这里面缓存控制机制最为复杂,一般也没有什么包治百病的方法,只有具体情况具体分析。通常生成的静态叶面你需要有一个机制去删除过时的,或访问很少的叶面,以保证检索静态叶面的速度。

5 使用预编译叶面和加载为FastCGI的办法

对于PHP,可以使用zend等编译引擎,对于JSP本身就是预编译。而FastCGI的原理就是将脚本预先加载起来,不用每次执行都去读,这和JSP预编成Servlet,然后加载的道理是一样的。

6 前置缓存

可以使用Squid作为Web服务器的前置缓存。

7 做集群

对数据库作集群,对web服务器作集群,对Squild前置机做集群

对于新手来说,如果你的程序要是恰死,首先你要检查代码是否有错误,是否存在内存泄漏,如果都没有,那么通常问题出在数据库连接上面。

综合应用上面的缓存方法,开发高负载的Web应用成就很容易了。

web软件设计时考虑你的性能解决方案

* 关键准则:

1. 选择什么编程语言不是问题

2. 选择的框架才可能影响系统的扩展和性能

3. 我倾向于以数据库为中心设计数据结构。

4. 分从两个方面提升性能:

1) . 软件设计方面

* 网页静态化

* 独立的图片服务器

* 可能采用中间缓存层服务器,最可能采用第三方成熟的软件

* 数据库分表(水平分割是最终方案)

2). 系统、网络、硬件结构

* 集群:数据库集群,WEB集群

* 采用:SAN

* 提升网络接入带宽

影响性能的因素有哪些?其实只有下面几个方面:

1.持久性数据查找速度

2.持久性数据读写速度

3.逻辑复杂度

4.物理内存不够导致的虚拟存储频繁交换.

对应的解决方法:

1.建立最合适的索引,建立缓存

2.建立缓存,升级硬件

3.精简,优化逻辑

4.减少内存使用。

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

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

相关文章

网站页面性能优化的35条黄金守则

1. Make fewer HTTP requests 尽可能少的http请求。。我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕。思考了下,为什么把这个三种请求过多列为对页面加载的重要不利…

web服务器添加网站win8,Win8系统配置局域网web服务器的方法

在win8系统中,我们可以通过配置web服务器来将信息实现互通,可以放置网页让局域网内浏览等,那么在win8系统中要怎么配置配置局域网web服务器呢?下文给大家分享一下Win8系统配置局域网web服务器的方法。1、首先在win8系统中打开电脑…

如何用合作的态度来提升网站收录与排名?

合作共赢,这个词被应用到各行各业是不无道理的,在SEO行业里同样如此。 在多年前,那是SEO飞速发展的时代,我们见证了许许多多的SEO神话,各种各样一夜暴富的神人,但为什么近几年这样的神话越来越少? 这个问题…

如何利用链接诱饵来为网站获取强大的流量?

相信大家在优化网站的时候会遇到这样的问题,网站怎么优化都没有效果,排名一些掉,而且,做了外链效果不太行,买卖链接似乎效果平淡,这个时候,我们到底要用什么方法来改变网站的现状,提…

本地运行php和html文件,从本地html / javascript网站发布到在线PHP文件

我想做什么从本地html / javascript网站发布到在线PHP文件。问题当我尝试使用下面的代码时,我不断收到以下提到的错误。背景:该网站旨在在本地运行。由于要由每个用户选择使用哪种浏览器,因此我希望找到一种可以解决上述问题的方法&#xff0…

PHP爬取网站内容

最近公司需要存在阿里云对象存储(oss)里的视频文件,而且需要18套课程的视频源文件,这周就要,我想了一下这要是一个一个找那可就麻烦了。要想想一套课程有n个章节,每个章节有n个视频文件。所以我下定决心要写…

wamp控制下多目录挂网站

图片: 前几天有个网上一起看php100视频学习php的朋友问我怎么在wamp上不同目录挂多个网站,我在网上搜了下资料,自己琢磨了一下午,现在把自己的方法公布出来,欢迎大家指正。也希望大家有更好的办法也公布出来。 以下方…

一种常见网站布局的实现

一种常见布局(上方显示单元列表链接,左边显示分类链接)的实现 很多网站有一种布局,就是在页面上方显示单元的列表(可能是这样,也可以加其它的链接),用户单击某个单元的链接后产生的新…

任意网站支持RSS

说好的metal咋出锅了啊? 今天本来想分享metal还有一些东西在整理,就先分享一个好玩的东西,我们有时候想关注一个不错的学习网站在有更新的时候第一时间知道, 有的网站还不支持RSS, 这可能用Feed43blogtrottr这两个工具了 1,就会在此页面有内容更新。然后 打开 Feed43&#xf…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲: 1. 使用电商案例的原因 2. 电商网站需求 3. 网站初级架构 4. 系统容量估算 5. 网站架构分析 6. 网站架构优化 本文主题为电商网站架构案例,将介绍如何从电商网站的需求,到单机架构,逐步演变为常用的、可供参考的分布式架…

大型php网站性能和并发访问优化方案(转载自php中文网)

网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化…

你想学的一切,只需要这一个网站就够了

简评:这个网站叫 Learn Anything,最终形态是「人们想要搜索什么知识,都会获得最高效且适合自己的学习路径,知识图谱」。现在网站刚刚建立不久,还处于比较初期,是个开源项目,大家有兴趣可以参与一…

程序员业余必去的六个网站!

工作了半年后,觉得自己的能力毫无提升的方式?作做好本职工作之外,不妨多去接一些私活,除了提升自己的技能之外,也让收入再上一层,何乐不为? 平台 0.程序员客栈 https://www.proginn.com/ 主要雇…

用xampp 和wordpress 搭建本地网站

你好,从今天开始,我将为大家带来一些我学习SEO和建站的免费教程,今天为大家带来的是如何用XAMPP搭建一个属于你自己的网站。来到这里,可以说很多在百度上已经过时了的资料需要总结的资料这里都有,你只要按照我的教程来…

Ruby on Rails 简介。来自于一个台湾网站,某些术语与大陆翻译不同

转:https://ihower.tw/rails4/intro.html Ruby on Rails 簡介 “Life’s too short to build something nobody wants” - Ash Maurya, Running Lean 作者 Ruby on Rails是一套非常有生產力、維護性高、容易佈署的Web開發框架。從一開始不知名的玩具,到現在它已經成…

大型网站技术架构(五)网站高可用架构

2019独角兽企业重金招聘Python工程师标准>>> 网站的可用性(Avaliability)描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间(故障时间)故障修复时间点-故障发现(报告)时间点…

安装网站源码时提示:【写入配置失败,请检查***目录是否可写入!】 (已解决)

首先网站安装位置,可以百度查一查。 我的是阿里云服务器,位置是阿里云之前指定的路径,就直接拿来用了,具体文章参考这里:传送门。 然后一路绿灯,也没有什么服务没有开启的情况。不过这里,有个文…

免费抖音短视频素材网站分享

今天给大家分享抖音短视频的知识。 要做好短视频,拥有视频素材网站肯定是少不了,在我们日常的工作学习中也不免会用到一些视频素材。 今天给大家分享一些不错的无版权视频网站(部分需科学上网),用好了,视频制作的成本将大大降低…

PCB封装库网站

https://www.snapeda.com/home/ https://componentsearchengine.com/index.html 在线EDA(可以导出pcb和原件封装) https://easyeda.com AD官网库(新) https://designcontent.live.altium.com/#UnifiedComponents AD官网库&#…

大型网站架构演化发展历程

大型网站系统的特点 1,高并发,大流量:需要面对高并发用户,大流量访问。 2,高可用:不间断服务。 3,海量数据:管理处理海量数据,使用大量服务器。 4,需求快…