系统架构----(2)大型网站架构之架构模式

news/2024/5/9 4:07:58/文章来源:https://blog.csdn.net/zhangbijun1230/article/details/79610083

大型网站架构之架构模式

什么是模式呢?每一个模式描述了一个再我们周围不断重复发生的问题及问题解决方案的核心,这样你就能一次次重用该方案而不必去做重复的工作,可见模式的关键在于可重复性

网站架构模式的目标:面临高并发访问,海量数据处理,高可靠运行等问题和挑战,我们在实践中提出很多解决方案,主要为了实现网站的高性能、高可用、易伸缩、可扩展、安全等架构目标。

网站架构模式具体方案如下:

1、分层

分层是一种常见的架构模式,将系统在横向维度上切分为几个部分,每个部分负责单一的职责,然后通过上层对下层的依赖和调用完成整个系统工作。一般大型网站系统都分为下面3层:

  • 应用层:负责具体业务和视图展示;

  • 服务层:为应用层提供服务支持;

  • 数据层:提供数据存储访问服务;

分层架构的挑战:必须合理规划层次边界和接口;

分层架构的约束:禁止跨层次调用及逆向调用(数据层不允许调用服务层,服务层不允许调用应用层)

2、分割

分层是横向切分,分割则是纵向切分,将不同的功能和服务分割开,包装成高内聚低耦合的模块单元,这样做的好处在于:

  • 有助于软件开发和维护;

  • 便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力;

3、分布式

对于大型网站,分层和分割的目的都是为了便于分布式部署,将不同的模块部署在不同的服务器上,通过远程调用协同工作,分布式意味着我们可以使用更多的计算机完成同一个任务,计算机物理机越多,CPU,内存,存储资源就越多,能处理的并发访问和数据量也就更大,但是分布式也会带来一些问题:

  • 分布式服务意味着通过网络调用,会对性能造成影响;

  • 服务器越多,服务器宕机的概率就越大,使网站的可用性降低;

  • 数据在分布式环境下保持数据一致性也就比较困难;

  • 分布式下的事务也难以保证;

  • 分布式管理增了开发和维护的难度,切记不要为了分布式而分布式;

分布式的常见几种方案:

  • 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署,可以改善网站性能和并发性,加快开发和发布的速度,减少数据库连接资源消耗,使不同的应用复用共同的服务,便于业务扩展;

  • 分布式静态资源:网站的静态资源例如js,css,图片等资源独立分布式部署,并采用独立的域名,即动静分离;静态资源分布式部署可以减轻应用服务器的负载压力,通过域名独立加快浏览器并发加载的速度;

  • 分布式数据和存储:大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,这些数据需要分布式存储;

  • 分布式计算:目前网站普遍使用Hadoop和MapReduce分布式计算框架进行批处理计算,其特点就是移动计算而不是移动数据,将计算程序分发到数据所在的位置,以加速计算和分布式计算;

  • 分布式配置:网站线上服务器配置实时更新;

  • 分布式锁:分布式环境下实现并发和协同工作;

  • 分布式文件:支持云存储的分布式文件系统;

4、集群

对于用户访问集中的模块,我们还需要考虑将其集群化,多台服务器部署相同应用构成一个集群,通过负载均衡器将请求分发给集群中不同的服务器处理。集群模式可以很好的扩展,当有更多用户访问时,只需要向集群中添加一台新的服务器加入集群即可,同时因为一个应用由多台服务器提供服务,当某台服务器发生故障时,负载均衡器或者系统的失效转移机制会将请求转发到集群中其他的服务器上,所以我们在配置集群时,至少需要2台以上服务器构成一个集群,目的就是为了提供系统的可用性。

5、缓

将数据存放在距离计算最近的位置,加快处理速度。大型网站架构设计一般在下面几个方面使用缓存设计:

  • CDN:即内容分发网络,部署在距离终端用户最近的网络服务商,用户网络请求总是先到达他的网络服务商那里,在这里缓存一些静态资源,就可以以最快的速度返回资源给用户;

  • 反向代理:属于网站前端部分,部署在网站的前端,当用户请求到达网站的时候,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能直接返回给用户;

  • 本地缓存:在应用服务器本地缓存一些热点数据(段时间内经常被访问的数据),应用程序可以在本机内存中直接访问数据,而无需访问数据库;

  • 分布式缓存:将数据缓存在一个专门的分布式缓存集群中,应用程序通过网络通信获取缓存的数据;

使用缓存有2个前提条件:

  • 数据访问热点不均衡,某些数据会被更频繁的访问,这部分数据就该放入缓存;

  • 数据在某个时间段内有效,不会很快过期,否则缓存失效的数据就会因为失效而产生脏读,影响结果的正确性;

使用缓存的优势:加快数据访问速度以及减轻后端应用和数据存储的负载压力;

6、异步

大型网站的一个重要目标是降低软件的耦合性,系统解耦合的手段除了前面提到的分层、分割和分布式等,还有一个异步,业务之间的消息传递不是同步调用,而是将业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步的进行协作;

  • 在单一服务器内部可以通过多线程共享内存队列的方式实现异步,业务前执行的线程将数据写入队列,后续线程从队列中读取数据进行处理;

  • 在分布式系统中,多个服务器集群通过分布式消息队列实现异步,分布式消息队列可以看做是内存队列的分布式部署;

异步架构是典型的生产者和消费者模式,此外异步消息队列还有如下特性

  • 提高系统可用性:消费者服务器宕机时,数据会堆积在消息队列中,生产者服务器可以继续处理业务请求,不影响系统整体运行,当消费者服务器恢复正常后可以继续处理消息队列中的数据;

  • 加快网站响应速度:处在业务处理前端的生产者服务器在处理完业务请求后,可以将数据写入消息队列,不需要等待结果直接返回,减少响应延迟;

  • 消除并发访问高峰:使用消息队列将突发的高峰访问请求数据放入消息队列中,等待消费者依次处理,不会对整个网站负载造成太大的压力;

7、冗余

网站需要24小时为用户提供服务,想要保证在服务器宕机的情况下,不影响网站的运行,不丢失数据,就需要将一定程度的服务器冗余运行,数据冗余备份,这样,当某台服务器宕机时,可以将其上面的服务和数据访问转移到其他冗余的服务器上。

数据库除了定期备份,存档保存,实现冷备份之外,为了保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现热备份。

为了抵制一些非人为的天灾,一般还需要对整个网站数据中心进行备份,全球范围内部署灾备数据中心,网站程序和数据实时同步到多个灾备中心。

8、自动化

主要包括自动化代码管理、自动化测试、自动化安全检测、自动化部署等实现发布过程自动化;此外还需要对服务器进行自动化监控、自动化报警、自动化失效转移(将失效的服务器从集群中隔离出去)、自动化失效恢复(重启服务之后同步数据保证数据的一致性)、自动化降级(通过拒绝部分请求及关闭一些不重要的服务将系统负载降至一个安全的水平)以及自动化分配资源(将空闲资源分配给重要的服务,扩大部署规模)。

9、安全

主要从下面几点考虑

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

  • 登录,交易等操作对网络通信进行加密

  • 防止机器人程序滥用网络资源攻击网站,使用验证码进行识别;

  • 对常见的XSS攻击、SQL注入进行编码转换等处理;

  • 对垃圾信息。敏感信息进行过滤

  • 对交易转账等重要操作根据交易模式和交易信息进行风险控制

10、总结

大型网站架构之架构模式



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

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

相关文章

系统架构(1)---单机至亿级流量大型网站系统架构演进

阶段一、单机构建网站网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如mavenspringstructhibernate、mavenspringspri…

android系统(9)---android工具网站

网站介绍:http://www.androiddevtools.cn/AndroidDevTools收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。欢迎大家推荐自己在Android开发过程中用的好用的工具、学习开发教程、用到设计…

外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站之前在CentOS虚拟机上安装了LAMP,搭建起了自己的web服务器,具体流程见: http://www.linuxidc.com/Linux/2012-06/63847.htm但是,在本机访问虚拟机的时候&…

如何能自动上传公众号文章到网站里面!

如何能自动上传公众号文章到网站里面! 听语音 |浏览:93|更新:2018-06-09 13:30|标签:网站 微信公众号 1 2 3 4 5 分步阅读 百度经验:jingyan.baidu.com 微信文章一直是各大网站建站是的优质内容,很多站长为了…

智能硬件(1)---十个智能硬件中文网站

十个智能硬件中文网站不论你是智能硬件从业者,还是智能硬件爱好者,不妨统一称之为“智能硬件er”。在信息泛滥的时代,专注于智能硬件,能提供好的资讯、观点、资源的平台屈指可数。雷科技小编为您收集了值得关注的十大智能硬件中文…

天空象棋——网站与用户

上一篇文章《天空象棋——冲上云霄》介绍了如何把天空象棋的算法服务发布到Azure上,以及提供了一个使用该云服务的象棋客户端。这次的任务是为天空象棋在Azure上创建一个网站,并且提供用户注册、登陆的功能。涉及以下知识点: 在Azure上创建网…

网站前端,后端设计,系统设计常识

系统设计第一次课听课笔记 网站分为前端和后端 前端就是大家看到的网站界面,类似美女的外表; 后端就是网站的架构设计,类似美女的内心,肚子里有多少东西,无法直接看出来。 后端工程师很苦逼,网站有问题&a…

大型网站图片服务器架构的演进

在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足&am…

拳王虚拟项目公社:如何通过SEO优化分析建网站赚钱?

这几年其实几乎已经很少有人再提起seo这个行业了,也有很多人认为现在已经没有人在用搜索引擎的了,也有一个seo从业者片面的认为pc端的网站优化叫做seo,移动端就不属于seo范畴了,其实聊这些东西本身没有任何的意义。 其实百度的DA…

拳王虚拟项目公社:看懂虚拟资源整合收集,资源网站的盈利玩法

之前有拳友咨询:现在还能通过信息差赚钱吗? 能,这种生意太多了。 举个栗子: 有很多人都充了爱奇艺的VIP会员,因为不付费很多内容都看不了。 在爱奇艺官方平台上,年付的黄金会员价格是178,但…

拳王虚拟项目公社:解除网站禁止复制的插件,Simple Allow Copy V 0.8.2

拳王上一篇文章写了:小红书种草博主如何赚钱?从养号到运营全攻略 我们来回顾一下核心重点。 如何做一个种草博主呢? 1、定位与机制 2、养号 3、内容 4、时间 今天拳王给大家分享一个实用技能,许多伙伴应该也会碰到这种情况&am…

拳王虚拟项目公社:一款解除网站禁止复制的插件,Simple Allow Copy V 0.8.2

第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 1.百度等文库解除复制不能保证都成功。如果是可编辑文档,可以解除;如果是图片或图片生成的PDF 文档,不能解除。 …

seo优化:把百度放进数据库

seo优化:把百度放进数据库有时候我想,能把百度的数据放进数据库,用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步,利用Google Search API 把Google的搜索结果放进数据库是很容易办到得。…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂:一边搜索,一边看PageRank下载地址:多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用,回复和我讨论了我的结论。有赞成的,有反对的,有鼓励的&…

使用XAMPP轻松建站(上)

LAMP (Linux Apache MySQL PHP) 作为与Windows、IIS和.NET等专有和商业软件进行竞争的一种开源软件解决方案,以其特有的安全、快速、易用、易于开发以及大量的开源代码,受到了人们越来越多的关注。特别是近几年来发展迅速,已经成为Web 服务…

使用XAMPP轻松建站(下)

【导读】LAMP (Linux Apache MySQL PHP) 作为与Windows、IIS和.NET等专有和商业软件进行竞争的一种开源软件解决方案。规避了LAMP的复杂、繁琐,XAMPP提供了一种轻松建设网站的途径。本文将介绍基于XAMPP的内容管理系统和论坛系统的建设。 论坛系统——Discuz! …

zero ecilpse下载_推荐10个免费图片下载网站,助你摆脱找图烦恼!建议收藏

无论是做设计、自媒体还是SEO推广,我们都需要各种图片。而且还是要清晰的,因为图片的质量会直接影响到用户的阅读体验。那么我们去哪找那么多高质量图片呢?相信很多人会从百度上快速低成本的去获取,以前可能没什么问题。但现在这种找图片的方…

为啥程序员下班后只关显示器从不关电脑?看看各大网站的答案~

本文综合自:csdn原文:https://blog.csdn.net/csdnsevenn/article/details/87887552慕课网原文:https://www.imooc.com/article/30549首百问答的答案:jingmentudou因为你永远不知道什么时间会被叫醒。开个远程就能避免半夜去公司了…

大型网站架构系列:电商网站架构案例(1)

大型网站架构系列:电商网站架构案例(1) 大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功…

查看一个网站后台是用的什么服务器

本文出自 “腾飞工作室” 博客,请务必保留此出处 http://www.cnblogs.com/tfgzs/p/5763623.html 转载于:https://www.cnblogs.com/tfgzs/p/5763623.html