分布式基础-大型网站通用架构模式

拉勾教育第五阶段Maven项目后台开发 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、前后端分离架构介绍二、技术选型三、注意事项3.1 数据库1对多的关系时,在1那一方可建立list集合编写sql语句3.2 Service层根据需求文档,接口文档决定返回类型3.3 Servlet层3.4 文件上传3.5 代码的维护性简单来说就是每个功能实现独立的作用if-else,反射优化总结 一、前后端分离架构介绍 前后端分离已成为互联网项目开发的业界标准使用方式,将前端和后端的开发进行解耦。并且前后端分离会为以后的大型分布 阅读详情

本文主要参考自《大型网站技术架构:核心原理与案例分析》一书第二章节和其他网络文章,如有遗漏或错误,还望海涵并指出。谢谢!

在这里插入图片描述

好的设计绝对不是模仿,不是生搬硬套某个模式,而是在对问题深刻理解之上的创造与创新,即使是“微创新”,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解和把握。
–《大型网站技术架构:核心原理与案例分析》

一.何谓模式

“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。

模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。

例如23种设计模式就是后端开发领域前人对于如何设计程序的可拓展性、可靠性和易用性的高度总结,许多经典的软件以及框架都参考和借鉴了这些经典的设计模式,并且在这之上做出了许多的创新。

对于技术的学习也是一样的,当务之急是知道如何使用技术来解决现实问题(how?),但是更重要的一点在于了解技术到底是如何解决问题的、背后的思想是什么、模式是什么(why?),然后应用在自身的技术或业务中。要站在巨人的肩膀上创新。

二.通用架构模式

1.分层

分层是计算机领域中一种常见的思想,例如计算机网络中,通过将不同的技术和规范分为七层,由下层来服务上层,而上层可以只做好自己的事情就好了,不必理会下层是如何提供的服务,上下层之间只需要约定好接口就够了,降低了耦合度。

如在Java的Web服务开发过程中,也常常需要将整个项目分为控制层、业务层、数据交互层等层次,让它们各种来解决各自的问题即可。这样能够起到逻辑清晰,代码依赖性低的作用

2.分割

分层可以是做将项目进行水平切分,而分割可以视为将项目进行垂直切分。

分割指的是将项目分割为不同的业务线和模块,譬如一个购物网站可以按业务的不同分为首页业务、购物车业务、商品管理业务、用户管理业务等,然后由不同的团队负责开发。

3.分布式

随着应用越来越大,并发的访问也越来越多,此时单体的应用可能无法承受这么大的压力,所以此时出现了分布式的服务,一台机器处理不了的请求,可以分发给其他的机器处理。

分布式系统指的是由多台不同的主机共同提供资源来组成服务。

常见的分布式方案有一下几种:

1.分布式的应用与服务:将大应用拆分为多个小应用或服务分开部署

2.分布式静态资源:将网站的静态资源如JS、CSS、图片和文件等独立部署

3.分布式数据与存储:将数据库和应用分离,单独部署

4.分布式计算:将耗费大量计算资源的服务,例如大数据分析、机器学习训练集等进行单独等部署

分布式系统会出现哪些挑战或问题?

1.分布式的主机之间需要通过网络连接,所以网络状况可能会对分布式系统造成重大影响。根据CAP理论,当网络分区(Partition)发生时,分布式主机数据间的一致性(Consistent)和服务的可用性(Avaliable)只能保证一个。要不就是一致性等不到保证、要不就是可用性等不到保证。

2.各种服务和资源分散在不同的机器上,如何保证机器宕机时数据的不丢失以及服务的恢复。

4.集群

分布式的系统下,将不同作用的服务拆分到不同的机器上面,而集群要做的事情和分布式相似,就是提高可接受的访问压力和保证服务的可用性;但是对于集群来说,集群中的不同机器提供的是同一服务。

例如Redis的集群由两台服务器组成,每台服务器提供的服务都是一样的,客户端的请求具体会被哪台服务器处理需要通过负载均衡算法来判断;当其中一台机器宕机时,仍有一台机器可以继续提供服务。

5.缓存

缓存就是通过将数据放到能够更快速访问到的地方以加快访问速度。

缓存可以分为以下几种:

1.CDN:内容分发网络可以将请求转发到距离用户最近的服务器,或者是直接返回已经存在的数据,加快资源的访问速度

2.反向代理:通常反向代理服务器中缓存有网站的静态资源(如Nginx),可以加快访问速度

3.本地缓存:本地缓存即存在于应用程序中或是本地服务器上的缓存数据,可用ehcache技术来实现

4.分布式缓存:对于大量的请求和大量的缓存数据,更常见的做法是使用分布式缓存服务,例如Redis集群等

使用缓存有以下两个前提:

1.被缓存的数据应该是经常被访问、但是更改不是很频繁的热点数据。

2.被缓存的数据应该具有一定的时效,而不能很快就过期,不然会产生脏读现象

6.异步处理

大型网站架构中,不仅可以通过分层、分割、分布式来进行解耦和提高性能,还可以使用异步处理的方式,异步处理主要是通过消息队列(如Kafka、ActiveMQ)来构建不同系统或机器、应用之间的通信,消息队列的两端被称为生产者与消费者,其主要的作用如下:

1.提高系统可用性:设想这样的一个场景,系统正在处理大量的订单数据,此时服务器突然宕机,那么订单数据可能没被处理完就丢失了,此时如果使用消息队列来存储订单数据,如果系统出现宕机,那么在重启机器之后,消息队列由于拥有持久化机制,所以消息队列中的数据并不会丢失,而是可以继续被消费者消费并处理,这就提升了系统的可用性。

2.加快服务响应速度:当生产者接收到数据,并且放入消息队列时即可返回响应,而不需要等待整个业务的处理完成,而消费者取到消息后才会进行真正的业务处理。

3.消除并发访问高峰:有时系统突然出现了高于平常的访问大于系统处理能力时,可能会发生阻塞或使系统宕机,例如抢购等操作。此时可以将请求放入消息队列中排队,由消费者来进行逐一的处理,就不会对应用产生过大对负载。

7.冗余备份

网站由于需要24小时地运转,但是请求过大或某些原因可能导致某台机器宕机,例如MySQL可能出现宕机的情况,那么就无法对外提供数据服务。

为了保证某台机器宕机后,系统仍能对外保持服务,此时的做法是做数据的冗余与备份,这样才可以在机器挂掉之后,迅速地启动其他机器提供服务。

例如微软为了防止地震或自然灾害的影响造成系统瘫痪,将数据服务器拆分成上千台放入深海之中,以便在任何突发情况下,都存在数据的备份。

8.自动化

对于一切应用来说,最理想的情况下是完全自动化的,例如代码是自动化部署更新的、测试是自动化测试、宕机后的机器切换也是自动化的、自动化的代码管理、接口出错可以自动化报警、请求量大可以自动化降级等等,这也是现在运维最新的发展方向。

9.安全

越大的网站越容易遭受黑客的攻击,例如XSS攻击、DDos攻击、CSRF攻击、SQL注入攻击等等,所以在特别需要保证安全的场景下,例如登陆、支付等场景需要引入验证码校验、请求签名校验等。

大型网站架构之架构模式 上节讲了大型网站的演变,今天讲下架构的模式,什么是模式呢?每一个模式描述了一个再我们周围不断重复发生的问题及问题解决方案的核心,这样你就能一次次重用该方案而不必去做重复的工作,可见模式的关键在于可重复性。 网站架构模式的目标:面临高并发访问,海量数据处理,高可靠运行等问题和挑战,我们在实践中提出很多解决方案,主要为了实现网站的高性能、高可用、易伸缩、可扩展、安全等架构目标。 网站架构模式具体方案 分层:分层是一种常见的架构模式,将系统在横向维度上切分为几个部分,每个部分负责单一的职责... 阅读详情

相关推荐

H3C VRF实验

POP-vpn-instance-RT1]route-distinguisher 11:11 # VPN实例-RT1的路由区分器值11:11。配置路由泄露,其实就是在一个VPN示例中添加另一个VPN实例的下一跳,比如在VPN实例RT1中添加去往SRV的默认路由。但是也有了一个新的问题,那就是RT1、RT2和RT3也能互访了,这让VPN实例变得没有意义了。[POP]ip vpn-instance RT1 #配置vpn实例-RT1。绑定了VPN实例,所以要把路由添加到VPN实例POP中。

m0_68698993的博客 4036

分布式架构系统最全详解(建议收藏)

幂等性在我们的工作中无处不在,无论是支付场景还是下订单等核心场景都会涉及,也是分布式系统最常遇到的问题,除此之外,也是大厂面试的重灾区。幂等性的解决方案数据库唯一主键数据库乐观锁PRG 模式防重 Token 令牌分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。什么是应用服务雪崩雪崩效应产生的几种场景缓存雪崩的解决方案。

jjc4261的博客 1643

运用AD进行stm32最小系统PCB图的绘制

运用AD进行stm32最小系统PCB图的绘制一、PCB图的绘制(1)布局(2)布线(3)覆铜(4)电气规则检查二、给PCB添加logo三、生成garber文件总结 一、PCB图的绘制 (1)布局 1.画好原理图后,新建一个PCB项目 2.在Design中选择第二项,导入器件 3.先点击右下角第一项,再点第二项导入器件 导入成功 4.导入后效果 选择紫红色方框,按电脑上的delete键把它删掉 5.在Tools选择Outside Board,自动排布器件 排布后效果如图 6.画线,确定板子范围

lucario1的博客 2150

分布式网站架构和设计

一、面向服务的架构(SOA service oriented architecture) RPC的全称是Remote Process Call,远程过程调用。 无论是何种类型的数据,都要转换成二进制在网络上进行传输。将对象转换成二进制称为对象的序列化,将二进制恢复为对象称为反序列化。 Hessian比java内置的序列化 效率高很多。 转换成json或者xml 通过HttpClient发送Ht...

zhanglinlove的博客 2859

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1439

Nestjs框架: 集成 Prisma

NestJS官方文档提供了两种数据库相关的内容:Techniques下的数据库板块和Recipes下的具体数据库集成方案。本文以Prisma为例,演示了如何集成Prisma到NestJS项目中。首先创建NestJS项目并安装Prisma,配置MySQL数据库连接。通过Prisma CLI初始化项目、定义数据模型并生成迁移文件。接着创建Prisma模块和服务,配置Prisma客户端连接数据库。最后在控制器中注入PrismaService实现数据查询。整个过程包含了Docker启动MySQL、Prisma模型定

Wang的专栏 1296

大型分布式网站架构设计与实践

阅读文本大概需要3分钟。SOA和RPC随着互联网规模发展,面向服务的体系架构(SOA)成为主流的架构方式,SOA的本质思想是高内聚、低耦合地实现分治,各个系统之间通过服务...

天行健,君子以自强不息;地势坤,君子以厚德载物。 1201

基于单片机控制双向可控硅灯光强度设计

*单片机设计介绍,基于单片机控制双向可控硅灯光强度设计。

QQ2193276455的博客 2458

大型分布式网站架构总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 一、大型分布式网站架构技术 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 2、大型网站架构目标 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常

KH_FC的博客 3038

用Multisim仿真一个9V供电的双工对讲机:从电桥原理到LM1875功放调试全记录

本文详细介绍了使用Multisim仿真9V供电的双工对讲机全过程,涵盖电桥原理、NE5532前置放大设计、LM1875功放调试及双工通信实现。通过实战案例解析,帮助读者掌握模拟电路设计与调试技巧,提升电子工程实践能力。

weixin_28678831的博客 116

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1393

系统设计基础-大型网站通用架构模式

系统设计基础,了解大型网站通用架构模式。

BoringError的博客 691

Open3D 读取、保存、显示点云【2025最新版】

paint_uniform_color给所有的点上一个统一的颜色。博客长期更新,本文最近更新时间为:2025年1月1日。

点云侠的博客 37万+

大型网站架构模式

为了解决大型网站面临的**高并发访问、海量数据处理、高可靠运行**等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。

贾欣晓的博客 1367

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

大型网站架构模式 什么是模式呢?(模式就是针对特定问题目前行业的解决方案) 模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。借助模式我们可以减少很多重复的工作。 大型互联网公司在实践过程中提出了很多的解决方案,以实现网站高性能、高可用、 易伸缩、可扩展、安全等各种技术架构目标。 1.分层 将系统在横向维度上切分成几个部分,每个部分负责相对比较单一的职责,然后通过上层对下层的依赖...

蹊源的奇思妙想的博客 2184

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java Web架构篇之浅谈大型网站分布式架构

大型网站技术架构概述 图片摘自: 大型网站技术架构:摘要与读书笔记 更多: 《大型网站技术架构》——第一章 大型网站架构演化 架构模式 分层:横向切分 – 应用层、服务层、数据层 分割:纵向切分 – 业务切分 分布式: 将不同模块部署在不同的服务器上,通过远程调用协同工作。但是分布式也带来一些问题,分布式存储、分布式事务、分布式锁等 集群:集群部署提高吞吐量、可用性,涉及负载均衡、HA等技术 ...

聚沙成塔 1484

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。 本次分享大纲如下 大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架构举例  一、大型网站的...

Galin的博客 222

大型网站技术架构,2大型网站架构模式

每个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。 网站架构有一些共同的模式,通过对这些模式的学习,可以掌握大型网站的一般思路和解决方案,以指导我们的架构设计。 2.1 网站架构模式 目标:实现网站高性能、高可用、易伸缩...

weixin_30747253的博客 178

大型网站开发常用的架构模式

网站架构模式 关于设计模式,相信很多基础中级开发人员甚至初级开发人员都知道,什么是设计模式,设计模式我的理解就是为了开发出一个优秀的软件系统,使这个软件系统具备更好的可维护性的复用,灵活性和可插入性,总结出来的一套满足面向对象设计原则的方式。我更喜欢理解为公式。 今天我要整理的就是不是设计模式,而是架构模式,关于大型网站开发中会用到的一些架构模式。那么什么是架构模式呢?? 在大型网站中,基本都会面...

qq_33703732的博客 1005

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

一、网站架构模式 模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。 为了解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而逐渐形成大型网站架构模式 1、分层 分词是企业应用系统中最常见的一种架构牧师,...

uzong 475

大型网站技术架构详解 之二 大型网站架构模式

2. 大型网站架构模式 模式建筑学定义:每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,就可以一次又一次的使用该方案而不必做重复的工作。模式的关键在于模式的可重复性。 2.1 网站架构模式 为了解决大型网站的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,以实现高性能、高可靠、易伸缩、可扩展、安全等各种技术架构目标。 2.1.1 分层 分层是常见的一种架构模式...

CaiFeiYueLe的博客 225

大型分布式网站架构如何设计

本次分享大纲如下 大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架构举例 一、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 二、大型网站架构目标 ...

xqingab的博客 322

【Spring Cloud 13】构建高性能的大型分布式网站

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

2401_84046912的博客 876

大型网站的架构

一、大型网站的软件系统的特点 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,发布频繁 渐进式发展 二、大型网站的架构演化发展历程 1、初始阶段的网站架构 最开始网站的应用程序、数据库、文件等所有的资源都在一台服务器上。最典型的就是LAMP技术了:服务器操作系统使用Linux,应用程序使用PHP开发,数据库使用MySQL,然后部署在Apa...

周先生丶的博客 7892
上一篇: 分布式基础-大型网站架构演进过程
下一篇: 分布式基础-系统性能相关概念
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值