大型网站技术架构 读书笔记1 大型网站架构模式

news/2024/5/20 14:16:19/文章来源:https://blog.csdn.net/dlf123321/article/details/51371545

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。

针对现在的高并发访问,海量数据处理,高可靠运行等一系列问题,众多大型互联网公司提出了各种系统解决方案。这些优秀可靠的方案又被别的网站重复使用,从而形成了模式。


1 分层
分层,这个很好理解。J2EE里经常使用的表现层,应用层,持久层。就是这个逻辑。当然,更细的,我们可以把表现层再细分为视图层与业务逻辑层,前者由美工负责,后者由工程师负责。而应用层,我也能再细分为数据接口层与逻辑处理层,前者做数据的转换,后者是真正的逻辑处理与运算。


2 分割
分割与分层刚好垂直。例如在系统里,把退款和购物这个两个功能分割开来,包装成高内聚低耦合的模块单元。
分层是横向划分,分割是纵向划分。


3 分布式
这个略麻烦。
把经过分层和分割的不同模块部署在不同的服务器上,通过远程调用来协同工作就是分布式。
分布式的优势在于:整个系统可以有更多的硬件/软件资源来对外提供服务,能够应对的并发量也会增大。
劣势在于:

  • 1 模块间的调用得通过网络,这样性能会降低一些。
  • 2 因为整个系统被拆分到了多个服务器上,因而系统内部出现宕机的可能性就会增大,一旦有宕机情况发生,就会影响应用。
  • 3 数据一致性不好把握
  • 4 维护比较麻烦

总而言之,得看具体情况,不能为了分布式而分布式。
分布式的具体策略有下面几种:

  • 1 分布式应用和服务

 这个请参考 我对Java分布式系统的一点认识
 文章写的不错

 就看图1 ,就是各个应用之间的互相调用。

 对于分布式系统中的某个应用来说,它的入口往往有三个:
 远程过程调用(其他应用来调用我的服务)、
 消息中间件(我订阅了其他系统的消息,其他系统会给我发消息)、
 web访问(主要访问页面)。
 它的出口则有很多:远程过程调用(调用其他应用的服务)、消息中间件(我向消息服务器发消息,供其他应用消费)、访问分布式缓存、访问分布式日志、访问数据库,执行调度任务。有了入口和出口,剩下的就是应用的核心部分,包括核心逻辑代码和辅助框架。对于分布式系统来说,有个东西必不可少,那就是配置中心。无论是远程过程调用、消息中间件还是分布式缓存,它们都需要从配置中心获取地址列表。
 请问:远程过程调用,消息中间件有什么区别
 远程调用是指另外的模块直接调用本应用中的一个方法。(请参考Dubbo框架)
 消息中间件这块,就是说我收到了来自其他应用的消息,我根据消息来做某些事。(请参考ActivityMQ或RocketMQ)

  • 2 分布式静态资源

 说白了就是把js,css,图片等静态的资源独立部署,并采取独立的域名。
 这样一来可以降低应用服务器的压力,二来还可以因为独立域名而加快浏览器并发下载的速度。
 关于浏览器并发下载资源的问题,请参考
  不同浏览器对于同一域名的并发获取(加载)资源数是有限的

  • 3 分布式数据和存储

 这个我没看懂,后面再说。

  • 4 分布式计算

 应该就是把一个复杂的运算过程,拆解成n个小的过程,然后用n台服务器处理,最后再把结构汇总。

 


4 集群
集群就是有多个组件来干同一件事情。
最简单的,一个tomcat不行,我就来十个。当然对外,我们得提供一个负载均衡设备,对外部来说,就只有一个应用系统。




5缓存
1 cdn
CDN的全称是Content Delivery Network,即内容分发网络。说白了就是把静态资源(或者是较少变化的资源)放在里用户物理距离更近的网络服务商的服务器上,如果这里有数据,就不用往后走了。
2 反向代理
这里也是缓存的数据,不过它与cdn不同在于,cdn在网络服务商的机房,而反向代理属于网站前端架构的一部分,如果这里有数据,就不用访问应用服务器了。
3 本地缓存
本地缓存主要保存在内存中,如果这里有数据,就不用访问数据库了。
4 分布式缓存
如果本地缓存(也就是内存)不够用了,就采用分布式缓存。
使用缓存有两个前提
1 某些数据要经常被访问

2 数据在一定时间内是有效的,不会马上过期。

 

6 异步
在前面的说的分层,分隔,分布,多个模块间的相互调用并不是直接调用。而是异步的。也就是说,之前,a调用b,只有等b执行完毕之后,a才会去做其他事。而异步的情况是,a调用b,准确的说是,a发布一个消息,b看到了就去执行,在b执行的过程中,a已经去干别的事情了。
在单机环境下,多个模块间的调用"消息"保存在内存的消息队列中。
在分布式情况下,多个模块就通过分布式消息队列来实现异步。
异步架构就是典型的生产者消费者模式。
异步有这样几个好处
1 调用者与被调用者解耦,只要数据结构布局,两个模块内部可以随意变化,而不用担心影响对方。
2 提高系统的可用性。如果消费者宕掉了,生产者会继续发布消息,对外来说,系统仍是可用的。等消费者恢复了,再继续去处理消息即可。
3 加快网站响应速度。

4 消除并发高峰。

 

7 冗余
多台应用服务器,一个宕掉,另一个还能用

多台数据库服务器(或者说就是数据库),一个断电,地震,海啸了还有别的可以用。

 

8 自动化
发布过程自动化:自动化代码管理 、自动化测试、自动化安全检测、自动化部署
网站在运行过程中可能会遇到各种问题:服务器宕机、程序Bug、存储空间不足、突然爆发的访问高峰。
自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源

完全看不懂。或者说看懂了,不知道怎么实现自动化

 

9 安全
通过密码和手机校验码进行身份认证
网络通信加密(登录、交易等)
存储敏感数据加密处理
网站验证码
常见攻击处理:XSS攻击、SQL注入
垃圾信息、敏感信息过滤
风险控制(对交易转账等重要操作)

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

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

相关文章

大型网站架构之大型网站的演变过程

大型网站的演变过程 现在网站面临的问题: 1.企业在网站技术上的进行了大量的投入,但总是在关键的时刻频繁宕机(高性能); 2.工程师夜以继日的加班工作,网站缺总是故障频繁、新功能上线缓慢(扩展…

大型网站架构之大型网站架构模式

大型网站架构模式 什么是模式呢?(模式就是针对特定问题目前行业的解决方案) 模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。借助模式我们可以减少很多重复的工作。 大型互联网公司在实践过程中提出了很多的解决方案,以实现网站…

大型网站架构之大型网站核心架构要素

大型网站核心架构要素 软件架构指的是,有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。 1.性能 在浏览器端 a.通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能; b.可以使用CDN&#xff0c…

大型网站架构之性能篇

网站的高性能架构(性能) 不同视角下的网站性能有着不同的标准,也有不同的优化手段。 1.用户视角的网站性能优化 通过优化页面HTML样式、利用浏览器端的并发和异步特性(即用户不用等待结果)、调整浏览器缓存策略、使用…

大型网站之高可用篇

网站的高可用架构(高可用) 由于种种情况,在业务中硬件故障是常态,所以网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保持并能够并访问。 高可用的主要手段:数据和服务的冗余备份及失…

大型网站之伸缩篇

网站的伸缩性架构(伸缩性) 绝大数网站都是渐进式成长的,在这个过程中最重要的技术是就是使用服务器集群,通过不断地向集群中添加服务器来增加整个集群的处理能力。 网站架构的伸缩性设计 网站的伸缩性设计分为两大类 根据功能进…

大型网站之扩展篇

网站的可扩展架构(扩展性) 伸缩性:通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。 扩展性:指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 网站的可扩展性,依托于系…

大型网站之安全篇

网站的安全框架(安全性) a.黑客攻击 XSS攻击 XSS攻击即跨站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。 常见的XSS攻击分为 反射型&am…

使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信

亲测,已经建立了https链接 参考链接: https://blog.csdn.net/guoxiaojie_415/article/details/80554109 https://www.cnblogs.com/kezi/articles/11512420.html

浏览器版本过高导致无法访问网站 burpSuiteBrowser

错误: 建立安全连接失败 连接到 172.24.11.101 时发生错误。对等端使用了不支持的安全协议版本。 错误代码:SSL_ERROR_UNSUPPORTED_VERSION 由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。 建议向此网站的管理员反馈这…

js 获取服务器ip_如何提高香港服务器网站的访问速度

从选择服务器上入手1.选择直连国内网络骨干的机房 直连国内网络骨干机房通常节点都比较少。通常数据在经过路由器进行转发时,都需要花费一定的时间,因而节点比较少的机房,它所提供的香港服务器多相对快一些,具体我们可以通过ping服…

php一维数组合并为二维数组,php输出数据并转换成若干一维数组最后合并为一条二维数组 - 傲世零零个人技术网站...

代码功能:php输出数据并转换成若干一维数组最后合并为一条二维数组//数据库连接require(db.php);//查询语句$sql2 "select * from xc_pic where xcid89 ";$result2 mysql_query($sql2,$conn);$dd0;while($row2 mysql_fetch_array($result2)){$dd$dd1…

逆向某电影网站signKey参数

1.打开我们要获取数据的页面 这里我们可以看到,这个有个加密参数signKey,猫眼好像改了,这个页面一些东西变成动态渲染了。他会发送一个请求去请求这个数据 我们打开这个页面,可以看到 这里面都是我们要的参数,像评分呀…

补某视频网站的js,进行视频解密

前言: 前不久,有个群友在群里发了一个视频的m3u8文件,其中的key是16字节,但是就是无法进行下载。但是用m3u8下载器进行下载时,无法下载下来,我开始怀疑是有请求头检验,用代码请求了一下&#x…

java web gzip_java使用gzip对静态资源的压缩,提供web网站访问速度

一、gzip简介Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公开发布,版本号0.1,1993年2月&a…

Web大作业-关于创业计划网站制作的第二天......

嘶......转专业真的是麻烦,前有C语言大作业算法实现,现有Web工程网页要做..... 贴几张预览图吧,第一部分算是完成了,接下来还有两个部分,分别是宣传视频和个人计划的安排。 另外,学校的校园网真菜&#x…

Web大作业-关于创业计划网站制作的第三天......

代码都是我一行一行敲下来的,虽然我相信得分不会很高(确信)。 但是第二部分算是完成了,就是宣传视频部分,让三个网页互相连接,其实我还想用用js把网站写活,奈何能力有限。 第三部分我打算讲述自己的创业计划&#xf…

Web大作业-关于创业计划网站制作的第四天......

主要是登录和注册界面。 还有自己的创业计划。差不多完工了。

5 qlineedit获取内容_SEO内容营销:你应该关注的5个考核指标!

在SEO工作中制定内容营销策略是一个必不可少的工作,毕竟内容为王的时代,任何的营销与推广我们都脱离不了内容,每隔一段时间SEO主管都会对内容营销做复盘,通过数据分析,查看相关指标,是否达到预期。 那么&am…

爬虫学习记录(四)————利用pyquery,re爬取静态网站信息存储到mongodb中

爬虫学习记录(四)————利用pyquery,re爬取静态网站信息存储到mongodb中静态页面爬取引入需要的包定义获取html文件的基本函数定义获取所有详情页的url函数定义解析详细信息的函数将函数链接起来存储到mongodb中链接mongodb的基本参数定义存…