大型网站架构之架构模式

news/2024/5/12 11:30:05/文章来源:https://blog.csdn.net/weixin_34007886/article/details/94536873

转自微信公众号:Java后端技术

原文:大型网站架构之架构模式

作者: Justin

 

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

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

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

1、分层

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

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

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

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

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

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

2、分割

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

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

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

3、分布式

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

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

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

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

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

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

分布式的常见几种方案:

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

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

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

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

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

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

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

4、集群

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

5、缓

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

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

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

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

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

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

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

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

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

6、异步

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

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

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

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

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

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

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

7、冗余

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

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

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

8、自动化

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

9、安全

主要从下面几点考虑

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

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

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

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

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

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

10、总结

转载于:https://www.cnblogs.com/vae860514/p/8481978.html

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

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

相关文章

mongodb 社交网站_使用PHP,MongoDB和jQuery进行社交网络样式发布-第1部分

mongodb 社交网站Post mechanisms similar to Facebook are nowadays very common within any application. The concept of Post-Like-Comment is familiar to everyone who ever used a social network. In this article, we will learn how to create a similar working mod…

mongodb 社交网站_使用PHP,MongoDB和jQuery进行社交网络样式发布-第2部分

mongodb 社交网站In the previous part of the series, we explained the database architecture, post stream design and application flow required for developing our post mechanism wherein the user will be able to post a status, like/unlike other peoples statuse…

wordpress插件_如何使用Weglot插件翻译WordPress网站

wordpress插件This article on how to translate WordPress websites was originally published by Torque Magazine, and is reproduced here with permission. 这篇有关如何翻译WordPress网站的文章最初由Torque Magazine出版,经许可转载于此。 Translating your…

替换轻松访问内容_轻松检查网站可访问性

替换轻松访问内容A few weeks ago I published an article highlighting popular tools and other considerations to check your site’s accessibility. There I briefly touched on the possible errors these tools look for in your code and how to avoid them. In this …

seo友好html标签_SEO友好的无限滚动

seo友好html标签As a developer, at some point you may have to decide between the old fashioned pagination and the trendy new infinite scroll, using the latest technologies, inspired by internet giants like Facebook and Pinterest. It depends on your requirem…

word mover_使用Mover.io轻松进行网站备份

word moverThe traditional way of doing a website backup is to download and save a local copy of the site files to your computer or to cloud storage services like Dropbox and Amazon S3. 网站备份的传统方式是将站点文件的本地副本下载并保存到您的计算机或Dropbox…

手机网页合适尺寸_网站没有最佳尺寸

手机网页合适尺寸With responsive practically becoming the standard, it’s harder than ever to define the best size for a website. Before responsive became mainstream, we used to base our design width on which screen sizes were popular at the moment. 随着响…

非常nice的网站集合,你还在等什么?

好用的软件千里挑一,实用的网站都在这里。如果不想在电脑上安装些不常用的软件,那就看看这篇文章中分享的网站,有没有你需要的吧!壁纸网站--海量好看的壁纸任你挑选http://wallpaperswide.com视频网站--在这里可以看到你想看的视频…

wordpress最佳架构_5个技术难题的最佳WordPress网站建设者

wordpress最佳架构This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible. 本文是与SiteGround合作创建的系列文章的一部分。 感谢您支持使SitePoint成为可能的合作伙伴。 As an ent…

wordpress 占有率_降低WordPress网站跳出率的10条提示

wordpress 占有率A ‘Bounce Rate‘ is simply the percentage of users who visit your site and then navigate away after viewing just a single page. “ 跳出率 ”只是访问您网站并在仅浏览单个页面后便离开网站的用户所占的百分比。 You can make use of Google Analyt…

测试网站性能的工具

If you already consider website design, development, content, and SEO as the parameters of success on the web, then it’s the right time to start giving attention to your website’s loading time. 如果您已经将网站的设计,开发,内容和SEO视…

xx项目重大问题的感受_有关您的下一个网站项目的10个重要问题

xx项目重大问题的感受Web design and development is a long, iterative process. It can span a few weeks or a few months. And as you get immersed in the details, it is quite easy to lose track. Have you met the original goals of the website? Or did you get so…

客户端访问网站的整个流程图_如何阻止整个国家访问您的网站

客户端访问网站的整个流程图Trending posts on SitePoint today: 今天在SitePoint上的热门帖子: What is HTTP/2? 什么是HTTP / 2? Tame Unruly Style Sheets With These Three CSS Methodologies 使用这三种CSS方法来驯服不规则的样式表 Your Regular…

SQL Server 2005全文检索技术在网站上的应用实录

SQL Server 2005全文检索技术在网站上的应用实录 一、前言“人类失去搜索,世界将会怎样?”,同样,很难想象一个拥有极大信息量的行业网站门户没有站内全文搜索将会出现怎样的局面,网站全文检索对于挖掘网站信息和整合网站资源的价…

【网站架构13/100】一步步带你,如何网站架构

2019独角兽企业重金招聘Python工程师标准>>> 何为大型网站 大型网站特性 既然说的是大型网站架构,那么架构的背后自然是解决人因面对大型网站特性而带来的问题。这样可以先给大家说下大型网站的特性,这些特性带来的问题就是人要解决的问题&am…

1小时内即可成为WordPress杀手级会员网站

No matter what type of business you’re in, creating a membership is a lucrative method of increasing your income. You can create recurring revenue, get ongoing support from your audience, and expand your brand’s reach. You can use memberships to sell onl…

wordpress攻击思路_防止针对WordPress网站的暴力攻击

wordpress攻击思路A ‘brute force’ login attack is a type of attack against a website to gain access to the site by guessing the username and password, over and over again. Other kinds of hacks rely on website vulnerabilities whereas a brute force attack i…

wordpress用cdn_使用CDN加快您的WordPress网站

wordpress用cdnHave you ever imagined speeding your WordPress website by implementing a Content Delivery Network (CDN)? This tutorial illustrates how the CDN configuration using Amazon CloudFront and Rackspace Cloud Files (with Akamai CDN) speeds up the W…

wordpress插件_3个最佳WordPress插件,使您的网站移动友好

wordpress插件The mobile web is growing exponentially. If your website doesn’t support mobile phones and tablets now, you can guarantee it’ll become increasingly important over the coming years. 移动网络正呈指数级增长。 如果您的网站现在不支持手机和平板电脑…

wordpress 大网站_加快您的WordPress网站

wordpress 大网站This article was sponsored by GoDaddy. Thank you for supporting the companies who make SitePoint possible! 本文由GoDaddy赞助。 感谢您对使SitePoint成为可能的公司的支持! As one of the top user experience factors, website performan…