2021最新大型分布式架构详解:架构模式+敏捷性+可扩展+案例等

千万流量大型分布式系统架构设计 前言 -本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,对大型分布式网站架构有较好的参考价值,并给出一个架构参考。 阅读详情

本篇是大型分布式网站架构的技术总结篇。

主要对大型分布式架构中涉及的架构模式、高性能、高可用、可伸缩、敏捷性、可扩展等技术点进行简要总结,对大型分布式网站架构有很好的参考价值。

一、大型网站特点

  1. 用户多,分布广泛

  2. 大流量,高并发

  3. 海量数据,服务高可用

  4. 安全环境恶劣,易受网络攻击

  5. 功能多,变更快,频繁发布

  6. 从小到大,渐进发展

  7. 以用户为中心

  8. 免费服务,付费体验

二、大型网站架构目标

  1. 高性能:提供快速的访问体验

  2. 高可用:网站服务一直可以正常访问

  3. 可伸缩:通过硬件增加/减少,提高/降低处理能力

  4. 安全性:提供网站安全访问和数据加密,安全存储等策略

  5. 扩展性:方便的通过新增/移除方式,增加/减少新的功能/模块

  6. 敏捷性:随需应变,快速响应

三、大型网站架构模式

  1. 分层:一般可分为,应用层,服务层,数据层,管理层,分析层;

  2. 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页,用户中心。

  3. 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。

  4. 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。

  5. 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。

  6. 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知 模式。

  7. 冗余:增加副本,提高可用性,安全性,性能。

  8. 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。

  9. 自动化:将重复的,不需要人工参与的事情,通过工具的方式,使用机器完成。

  10. 敏捷性:积极接受需求变更,快速响应业务发展需求。

四、高性能架构

以用户为中心,提供快速的网页访问体验。主要参数有较短的响应时间,较大的并发处理能力,较高的吞吐量,稳定的性能参数。

  1. 可分为前端优化,应用层优化,代码层优化,存储层优化

  2. 前端优化:网站业务逻辑之前的部分

  3. 浏览器优化:减少Http请求数,使用浏览器缓存,启用压缩,Css Js位置,Js异步,减少Cookie传输

  4. CDN加速,反向代理

  5. 应用层优化:处理网站业务的服务器。使用缓存,异步,集群

  6. 代码优化:合理的架构,多线程,资源复用(对象池,线程池等),良好的数据结构,JVM调优,单例,Cache等

  7. 存储优化:缓存,固态硬盘,光纤传输,优化读写,磁盘冗余,分布式存储(HDFS),NOSQL等

五、高可用架构

大型网站应该在任何时候都可以正常访问。正常提供对外服务。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点。要保证高可用是很困难的,也就是说网站的故障是不可避免的。

如何提高可用性,就是需要迫切解决的问题。首先,需要从架构级别,在规划的时候,就考虑可用性。行业内一般用几个9表示可用性指标。比如四个9(99.99),一年内允许的不可用时间是53分钟。

  1. 不同层级使用的策略不同,一般采用冗余备份和失效转移解决高可用问题。

  2. 应用层:一般设计为无状态的,对于每次请求,使用哪一台服务器处理是没有影响的。一般使用负载均衡技术(需要解决Session同步问题),实现高可用。

  3. 服务层:负载均衡,分级管理,快速失败(超时设置),异步调用,服务降级,幂等设计等。

  4. 数据层:冗余备份(冷,热备[同步,异步],温备),失效转移(确认,转移,恢复)。数据高可用方面著名的理论基础是CAP理论(持久性,可用性,数据一致性(强一致,用户一致,最终一致)

六、可伸缩架构

伸缩性是指在不改变原有架构设计的基础上,通过添加/减少硬件(服务器)的方式,提高/降低系统的处理能力。

  1. 应用层:对应用进行垂直或水平切分。然后针对单一功能进行负载均衡(DNS,HTTP[反向代理],IP,链路层)。

  2. 服务层:与应用层类似;

  3. 数据层:分库,分表,NOSQL等;常用算法Hash,一致性Hash。

七、可扩展架构

可以方便的进行功能模块的新增/移除,提供代码/模块级别良好的可扩展性。

  1. 模块化,组件化:高内聚,内耦合,提高复用性,扩展性。

  2. 稳定接口:定义稳定的接口,在接口不变的情况下,内部结构可以“随意”变化。

  3. 设计模式:应用面向对象思想,原则,使用设计模式,进行代码层面的设计。

  4. 消息队列:模块化的系统,通过消息队列进行交互,使模块之间的依赖解耦。

  5. 分布式服务:公用模块服务化,提供其他系统使用,提高可重用性,扩展性。

八、安全架构

对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。对于安全问题,首先要提高安全意识,建立一个安全的有效机制,从政策层面,组织层面进行保障。比如服务器密码不能泄露,密码每月更新,并且三次内不能重复;每周安全扫描等。以制度化的方式,加强安全体系的建设。同时,需要注意与安全有关的各个环节。安全问题不容忽视。包括基础设施安全,应用系统安全,数据保密安全等。

  1. 基础设施安全:硬件采购,操作系统,网络环境方面的安全。一般采用,正规渠道购买高质量的产品,选择安全的操作系统,及时修补漏洞,安装杀毒软件防火墙。防范病毒,后门。设置防火墙策略,建立DDOS防御系统,使用攻击检测系统,进行 子网隔离等手段。

  2. 应用系统安全:在程序开发时,对已知常用问题,使用正确的方式,在代码层面解决掉。防止跨站脚本攻击(XSS),注入攻击,跨站请求伪造(CSRF),错误信息,HTML注释,文件上传,路径遍历等。还可以使用Web应用防火墙(比如:ModSecurity),进行安全漏洞扫描等措施,加强应用级别的安全。

  3. 数据保密安全:存储安全(存在在可靠的设备,实时,定时备份),保存安全(重要的信息加密保存,选择合适的人员复杂保存和检测等),传输安全(防止数据窃取和数据篡改);

  4. 常用的加解密算法(单项散列加密[MD5,SHA],对称加密[DES,3DES,RC]),非对称加密[RSA]等。

九、敏捷性

  1. 网站的架构设计,运维管理要适应变化,提供高伸缩性,高扩展性。方便的应对快速的业务发展,突增高流量访问等要求。

  2. 除上面介绍的架构要素外,还需要引入敏捷管理,敏捷开发的思想。使业务,产品,技术,运维统一起来,随需应变,快速响应。

十、大型架构举例

以上采用七层逻辑架构,第一层客户层,第二层前端优化层,第三层应用层,第四层服务层,第五层数据存储层,第六层大数据存储层,第七层大数据处理层。

  1. 客户层:支持PC浏览器和手机APP。差别是手机APP可以直接访问通过IP访问,反向代理服务器。

  2. 前端层:使用DNS负载均衡,CDN本地加速以及反向代理服务;

  3. 应用层:网站应用集群;按照业务进行垂直拆分,比如商品应用,会员中心等;

  4. 服务层:提供公用服务,比如用户服务,订单服务,支付服务等;

  5. 数据层:支持关系型数据库集群(支持读写分离),NOSQL集群,分布式文件系统集群;以及分布式Cache;

  6. 大数据存储层:支持应用层和服务层的日志数据收集,关系数据库和NOSQL数据库的结构化和半结构化数据收集;

  7. 大数据处理层:通过Mapreduce进行离线数据分析或Storm实时数据分析,并将处理后的数据存入关系型数据库。

以上是大型分布式架构的总结。

更多阿里高级Java必考题与答案

 

大型分布式电商系统架构是如何从0开始演进的? 就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer!越努力越幸运!金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。 阅读详情

相关推荐

基于STM32的半导体制冷片温度控制

制冷片温度控制,温控范围15℃~45℃,本人菜鸡一枚,大佬绕路。 #include "stm32f10x_gpio.h" #include "relay.h" void relay_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//Ê...

大白兔的博客 9017

2023年全新java架构技术框架Quarkus实战神仙文档

前言Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。云原生的星星之火,自开源社区的Kubernetes爆红之后,变成燎原之势,随后云原生相关的技术如雨后春笋般涌现。添加图片注释,不超过 140 字(可选)

代码界的扛把子 1847

从轴承润滑到代码实现:手把手教你用Python FDM求解稳态雷诺方程

本文详细介绍了如何用Python FDM(有限差分法)求解稳态雷诺方程,从轴承润滑理论到代码实现的全过程。通过构建无量纲方程、有限差分格式和迭代求解算法,开发者可以快速实现专业级润滑分析,应用于涡轮发电机、汽车曲轴等场景。文章还提供了完整的Python代码示例和结果可视化方法,帮助工程师优化轴承设计。

weixin_28689507的博客 122

转:2016年7款最佳 Java 框架推荐

RebelLabs的一项调查显示,通过在线Java用户论坛(虚拟JUG)媒体联盟的调查统计,2016年度最佳Java框架阵容如下:数据来源:RebelLabs for Zero TurnAround Inc. 我们不会仅仅基于上面图标的对比迫使你或让你草率作出结论,但是我们会给你介绍每个概念的概述,供你分析和对比他们之间的区别,然后根据你的项目选择最完...

weixin_33965305的博客 356

Swift Package Manager (SPM) 创建并集成本地库

Swift Package Manager (SPM) 在macOS 项目中创建并集成的完整步骤

征战无悔人生 1426

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 279

全到哭,阿里新产2023版Java架构核心宝典,涵盖Java进阶所有主流技术

什么是架构师?对于程序员来说,聊架构是一个永不过时的话题。实际上,每一家公司都有自己对架构师不同的定位,因为不同的公司,所处的阶段、业务模式以及应用场景都不一样,因此对架构师的要求不一样,所以定位也就不同。

weixin_50205273的博客 1007

别再盲调PID了!手把手教你用VOFA+实时可视化电机速度曲线(附STM32F4源码)

本文详细介绍了如何使用VOFA+工具实现PID参数的可视化调试,帮助开发者从盲调转向精准调优。通过实时可视化电机速度曲线,结合STM32F4源码示例,展示了如何高效调试Kp、Ki、Kd参数,解决响应慢、超调等常见问题,大幅提升电机控制系统的性能。

weixin_28366475的博客 129

分布式架构如何设计

转自:http://www.cnblogs.com/itfly8/p/4967966.html 本次分享大纲如下 大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架构举例 一、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击...

dianhuang8011的博客 228

LPDDR5 学习笔记08:电气参数设计要求

本文详细阐述了LPDDR5内存接口的关键电气规范和时序要求。主要内容包括:1)绝对最大额定值限制及长期工作可靠性说明;2)差分时钟信号(CK/WCK)的输入电压、转换速率和交叉点电压规范;3)单端时钟信号的定义和测量方法;4)时钟周期、抖动(周期抖动、相邻周期抖动)和累积误差的精确计算方法;5)片选信号在同步/异步模式下的接收器规范;6)命令地址信号和数据信号的接收器掩模定义及脉冲宽度要求。所有参数均严格定义了测量条件和合规标准,为LPDDR5接口设计提供了完整的电气规范参考。

一只豌豆象的博客 1185

第4章-07-将WebDriver获取的Cookie传递给Requests

在使用Selenium WebDriver获取了浏览器的Cookies之后,你可以将这些Cookies传递给requests库,以便在后续的HTTP请求中使用这些Cookies。这样做可以让你模拟浏览器会话,使得请求看起来像是从之前使用Selenium WebDriver控制的浏览器发出的。

黑夜开发者的博客 692

大型分布式架构详解:架构模式+敏捷性+可扩展+案例等

大型分布式架构详解:架构模式+敏捷性+可扩展+案例等 本篇是大型分布式网站架构的技术总结篇。 主要对大型分布式架构中涉及的架构模式、高性能、高可用、可伸缩、敏捷性、可扩展等技术点进行简要总结,对大型分布式网站架构有很好的参考价值。 一、大型网站特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发...

zhangbijun1230的专栏 620

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 263

2023最新大型分布式架构详解:架构模式+敏捷性+可扩展+案例等

对于安全问题,首先要提高安全意识,建立一个安全的有效机制,从政策层面,组织层面进行保障。首先,需要从架构级别,在规划的时候,就考虑可用性。因为大型网站的复杂性,分布式,廉价服务器,开源数据库,操作系统等特点。要保证高可用是很困难的,也就是说网站的故障是不可避免的。以上采用七层逻辑架构,第一层客户层,第二层前端优化层,第三层应用层,第四层服务层,第五层数据存储层,第六层大数据存储层,第七层大数据处理层。主要参数有较短的响应时间,较大的并发处理能力,较高的吞吐量,稳定的性能参数。以上是大型分布式架构的总结。

jjc4261的博客 737

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大型分布式网站架构技术总结:高性能+高可用+可扩展+可伸缩架构

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

凡是过往,皆为序章 1579

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

xqingab的博客 322

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。...

185

详解 | 大型分布式电商系统架构

本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网...

weixin_45727359的博客 984

大型分布式网站架构总结

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

KH_FC的博客 3038

大型分布式网站架构技术

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

LXW_JAVA的博客 393
上一篇: 深度掌握Redis:5大难题解决方案、单线程优劣势、高并发快原因等
下一篇: Java岗招聘标准水涨船高,五年Java程序员表示面试太难了
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值