大型网站架构模式

news/2024/5/9 11:52:02/文章来源:https://blog.csdn.net/adparking/article/details/41479063

《大型网站技术架构》读书笔记:

网站架构模式

关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。



 
分层

分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

在大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层。

应用层:负责具体业务和视图展示,如网站首页及搜索输入和结果展示   (视图层、业务逻辑层)

服务层:为应用层提供服务支持,如用户管理服务,购物车服务等   (数据接口层、逻辑处理层)

数据层:提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

虽然分层架构模式最初的目的是规划软件清晰的逻辑结构便于开发维护,但在网站的发展过程中,分层结构对网站支持高并发向分布式方向发展至关重要。因此在网站规模很小的时候就应该采用分层的架构,这样将来网站做大时才能有更好地应付。

分割

如果说分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分。

大型网站分割的粒度可能会很小。比如在应用层,将不同业务进行分割,例如将购物、论坛、搜索、广告分割成不同的应用,由独立的团队负责,部署在不同的服务器上。

分布式

对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署。

在网站应用中,常用的分布式方案有以下几种。

分布式应用和服务

    将分层和分割后的应用和服务模块分布式部署。

分布式静态资源

    网站的静态资源如JS,CSS,Logo图片等资源独立分布式部署,并采用独立的域名,即人们常说的动静分离。

分布式数据和存储

分布式计算

还有分布式配置,分布式锁,分布式文件系统等。

集群

在网站应用中,即使是访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小的集群,目的就是提高系统的可用性。

缓存

缓存就是将数据存放在距离计算最近的位置以加快处理速度。

CDN
反向代理
本地缓存
分布式缓存

使用缓存有两个前提条件,

一是数据访问热点不均衡,某些数据会被更频繁的访问,这些数据应该放在缓存中;

二是数据在某个时间段内有效,不会很快过期。

异步

大型网站架构中,系统解耦合的手段除了前面提到的分层、分割、分布等,还有一个重要手段是异步。

异步架构是典型的生产者消费者模式,两者不存在直接调用

使用异步消息队列有如下特性:

提高系统可扩展性

提高系统可用性

加快网站响应速度

消除并发访问高峰

冗余

服务集群,冗余实现服务高可用

数据库定期备份,存档保存,实现冷备份;主从分离,实时同步实现热备份

数据中心备份,全球范围内灾备数据中心

自动化

目前大型网站的自动化架构设计主要集中在发布运维方面。

发布对网站都是头等大事。

发布过程自动化:自动化代码管理 、自动化测试、自动化安全检测、自动化部署

网站在运行过程中可能会遇到各种问题:服务器宕机、程序Bug、存储空间不足、突然爆发的访问高峰。

自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源

安全

通过密码和手机校验码进行身份认证

网络通信加密(登录、交易等)

存储敏感数据加密处理

网站验证码

常见攻击处理:XSS攻击、SQL注入

垃圾信息、敏感信息过滤

风险控制(对交易转账等重要操作)

小结

好的设计绝对不是模仿,不是生搬硬套某个模式,而是对问题深刻理解之上的创造与创新,即使是“微创新”,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握。

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

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

相关文章

PHP网站的安全性问题

引用: PHP漏洞全解(一)-PHP网站安全性问题 针对PHP的网站主要存在下面几种攻击方式: 1、命令注入(Command Injection) 2、eval注入(Eval Injection) 3、客户端脚本攻击(Script Insertion) 4、跨网站脚本攻击(Cross Site Scripting, XSS) 5、SQL注入攻击(SQL injec…

网站性能测试基本指标

一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。 单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。 系…

seo积分排名系统源码_SEO快速排名系统操作手法以及细节

SEO快速排名是目前我国SEO行业最热门的话题之一。总之,所有的快速行都可以用两个词来解释,那就是点击,任何行业,包括SEO,都可以使用的原因也是一样的。例如,目前我国有大量的快速排序系统,这种快…

移动端 键盘把搜索内容顶上去_Google移动索引优先,手机端和PC端的网站内容要相同吗?...

在移动端,网站内容是否需要与PC端相同?答案是:相同。谷歌2016年宣布,移动索引优先。这意味着Google提取搜索引擎结果页面(Serps)中所有内容的索引现在将是根据从移动版本的站点派生的因素进行评估和排名。01Google为什么要这么做&…

seo自动发布外链工具_乐清seo关键词排名工具【发布猫】

乐清seo关键词排名工具【发布猫】由于百度算法将定期更新,一天内关键词排名可能会有几处变化。常见的情况是:某个新闻热点或特定主题的人气突然上升可能会让排名变化很大,一个低容量的关键词看起来稳定,但流量的激增给了百度一大堆…

mysql网站管理_PHP + MySQL 搭建网站-管理页面

管理页面先来看一下本篇将要介绍的内容。我们的主页面已经搭建完成了,然后左边的 navigation 里面的大部分内容也都能点击了,只剩下“search” 和“Im a writer”两个链接了。本篇教程过后,我们将能完成下面的功能:这是我们的主界…

优秀网站精选

網站模板合集 http://www.koves.com/ http://www.realmacsoftware.com/rapidweaver/ http://www.icondesigner.net/icondesign/ http://dragoninteractive.com/ 转载于:https://www.cnblogs.com/CB/archive/2009/02/04/1383623.html

利用HttpSessionListener实现网站在线人数统计功能

为什么80%的码农都做不了架构师?>>> 在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存…

ucloud对象存储装宝塔_UCloud云服务器建站教程3 – UCloud安装宝塔面板/LNMP一键包WEB环境 | 老左笔记...

老左在前面的文章中已经分别介绍到UCloud服务器选择以及安全组端口的放行文章。那今天我们就来看看如何在UCLOUD服务器中安装WEB系统环境。一般我们是用来建站的,当然如果你不是用来建站或者有其他需要的,根据自己的需要去使用。目前UCLOUD系统是可以安装…

php网站如何添加ico图标,如何添加favicon.ico图标?

在本站首页的活跃博客中经常看到有部分博客网站没有favicon.ico图标,所以今天打算普及一下相关知识,希望还没有favicon.ico图标的博主们,能够制作出自己独特的图标。那么到底什么是favicon.ico?好搜百科给出的解释:所谓…

Windows 8实现所有微软网站免登录

犹豫了非常久,最终还是把Windows 8装到了工作用的笔记本中,但由于本本比较老了,本来以为可能获得的体验不会很好,但经历了10多分钟的安装后,发现Windows 8确实非常的强大!首先是内置的hyper-V功能&#xff…

seo笔记——链接原理

转载于:https://blog.51cto.com/himomo/934435

网站目录文件权限的简单安全设置

2019独角兽企业重金招聘Python工程师标准>>> 我们假设http服务器运行的用户和用户组是www,网站用户为centos,网站根目录是/home/centos/web。 1、我们首先设定网站目录和文件的所有者和所有组为centos,www,如下命令: c…

关于购物网站的支付接口(.NET)

2019独角兽企业重金招聘Python工程师标准>>> 最近的项目涉及到接口方面,像支付宝在线支付啥的 通常会拿到一个接口文档,上面有 接口参数,接口编码方式,接口地址和一些额外的说明 接受部分是一串字符串,上面…

8个超棒的使用javascript开发的视觉特效网站

为什么80%的码农都做不了架构师?>>> 日期:2012-8-17 来源:GBin1.com 随着flash的落寞及其HTML5和CSS3的发展,更多的网站开始使用javascript,CSS3和HTML5来开发炫酷的特效。今天我们挑选了8个超棒的CSS3和…

Java 后端开发学习型网站汇总

首页 - 不灭的焱:个人网站,汇集了大量开发实践经验文章,技术种类繁多,总结得也比较好,适合不时访问查看。第十二章:技术总览_我是廖志伟的博客-CSDN博客:私人博客,收集了各种技术的官…

在Azure上搭建Orchard CRM入口网站

这是英文版:Setup Orchard CRM portal website on Azure 转载于:https://www.cnblogs.com/MSCRM/p/3821545.html

基于Tomcat构建LNMT架构的网站并实现Session保持

基于Tomcat构建LNMT架构的网站并实现Session保持 - 小小忍者 - 51CTO技术博客简介LNMTLinuxNginxMySQLTomcat;Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器;在中小型系统和并发访问用户不是很多的场合下被普遍…

chrome浏览器对http和https网站安全提示和证书导入导出

HTTPS加密是互联网安全建设的基础,百度、淘宝、天猫等越来越多互联网巨头启用全站HTTPS,也带动了更多网站加入HTTPS加密的行列。普通用户也逐渐明白HTTPS比HTTP更安全,访问网银、购物等重要网站时要先观察是否有HTTPS加密保护。 但是在日常访…

前台模板 海豚php_WP网站模板开发中,怎样给分类目录添加SEO标题和关键词?

作为一个wordpress网站的站长,都希望自己的网站在百度或谷歌搜索引擎上的排名好。这时,我们除了要做好wordpress网站的内容之外,还要对wordpress网站做好相关的SEO优化。在前面的章节中,我们介绍了wordpress网站首页的SEO优化&…