华为十年架构师实战经验总结:大规模分布式系统架构与设计实战

写给开发者的软件架构实战:系统架构风格洞察 1. 背景介绍 随着软件系统的复杂性不断提高,软件架构已经成为了软件开发过程中不可或缺的一部分。一个优秀的软件架构可以帮助开发者更好地理解系统的需求、设计和实现,从而提高软件的质量和可维护性。本文将深入探讨软件架构的核心概念、原理和实践,帮助开发者更好地理解和应用软件架构,提升软件开发水平。 1.1 阅读详情

前言

本篇是从程序员到首席架构师十多年职业生涯的实战经验总结,系统讲解构建大规模分布式系统的核心技术与实现方法,包含开源的Fourinone系统的设计与实现过程,手把手教你掌握分布式技术。

通过学习这个系统的实现方法与相关的理论,读者可快速掌握分布式系统的理论并设计自己的分布式系统。

本篇从分布式计算的基本概念开始,解剖了众多流行概念的本质,深入讲解分布式系统的基本原理与实现方式,包括masterslave结构、消息中枢模式、网状直接交互模式、并行结合串行模式等,以及Fourinone系统的架构、实现分布式功能的示例。接下来详细介绍分布式协调、分布式缓存、消息队列,分布式文件系统、分布式作业调度平台的设计与实现方法,不仅包括详细的架构原理、算法,还给出了实现步骤、核心API、实现代码。

在大数据、云计算如火如荼的今天,各类技术产品顺应潮流层出不穷。大家是不是有这种感觉: Hadoop还没学完,Storm 就来了; Storm刚学会安装配置, Spark、 Hama、Yarn 等又一起出现了;同时国内外各大云平台厂商,如Google、亚马逊、阿里云等,还在推各自应用开发平....要学习的东西太多了,就是这样疲于奔命地学,刚学会了某个产品的安装配置与开发步骤,没多久它又过时了。

这么多千姿百态的分布式技术和产品背后有没有某些共性的东西呢?能让我们]换了马甲还能认出它,让我们超越学习每个产品的“安装配置开发”而掌握背后的精髓呢?有没有可能学一反三,学一招应万招,牢牢掌握好技术的船舵,穿越一次次颠覆性的技术浪潮?
本篇的目的就是为你揭示分布式技术的核心内幕,透彻理解其精髓,站在浪潮之巅。

因此,这不是讲如何使用Hadoop,而是讲如何实现Hadoop的功能,讲如何简化实现分布式技术核心功能。这是来源于作者十多年来在私企、港企、外包、创业、淘宝、华为等企业打拼,从底层程序员一路走到首席架构师的实战经验总结。。

本篇面向千千万万战斗在一线攻城拔寨的程序员、工程师们,你可以有很多基础,也可以从头开始,本篇尽量做到深人浅出和通俗易懂,希望帮助你降低分布式技术的学习成本,帮助你更容易完成工作任务,更轻松地挣钱。

因为内容实在是太多了,所以小编只把部分知识点截图出来粗略的介绍了一下,每个小节都有更多细化的内容,希望大家能够学到知识。

本篇一共分为七个大章节,大家从头开始阅读就可以了。

第1章,概述

在概述分布式核心技术之前,我们有必要先概括阐述一-下分布式计算、并行计算、云计算等相关概念,以及市场上流行的相关技术产品,如Hadoop生态体系,然后再结合背景引出我们为什么要归纳出一个轻量级的分布式框架。本章为后续章节的背景。本章意在使读者对分布式技术话题的前因后果先有所了解。

由于只是概述,我们对涉及的分布式计算概念和Hadoop生态体系只是蜻蜓点水地带过,目的仅是让读者了解到这些内容大致是什么。

第2章,分布式并行计算的原理与实践

本章首先讲述分布式并行计算的各种设计模式和原理机制,并进一步说明Fourinone与市场上其他并行计算产品和技术的区别,最后手把手演示大量并行计算案例。

本章讲述的分布式并行计算思想、模式、技巧、实现,与编程语言无关,读者可以用多台计算机来尝试编程。

第3章,分布式协调的实现

分布式协调是分布式应用中不可缺少的,通常会设立专门的协调者角色,即将多机协调的职责从分布式应用中独立出来,以减少系统的耦合性和增强可扩展性。Apache的ZooKeeper、Google的Chubby都是分布式协调的实现者。Fourinone实际上可以单独当做ZooKeeper用,它使用最少的代码实现了ZooKeeper 的所有功能,并且力图做到功能更强、使用更简洁。

本章会从设计角度讲述分布式协调系统的实现原理,包括归纳出的API介绍,权限机制介绍,并详细阐述了在领导者选举机制上和Paxos算法的区别,最后再结合实践中的统一配置和集群管理等应用讲解demo,让读者有更直观的体会。

第4章,分布式缓存的实现

本章讲述小型缓存、大型分布式缓存的原理和实现机制,并且讲述经典的一致哈希算法原理,以及改进的基于日期key取模和分组算法去做集群负载均衡和扩容,最后讲述一个分布式Session的实现案例,以及相关的配置属性。

第5章,消息队列的实现

本章讲述了中间件和消息队列(MQ)的发展史JMS规范定义的发送/接收、主题订阅两种经典消息服务模式的机制原理,并详细举例说明如何在Fourinone中实现这两种经典模式。

第6章,分布式文件系统的实现

本章讲述如何使用FTTP去实现一个分布式文件系统,包括FTTP的架构原理和远程文件各种方式的访问和操作,以及整型数据处理等,包含了每一一步的具体操作,可帮助入门的读者快速上手。

在FTTP中通过FttpAdapter和FileAdapter实现文件I0的支持。其中,FttpAdapter 提供对远程文件的操作,FileAdapter 提供对本地文件的操作,两者的API和使用相似,这里主要说明FttpAdapter。

第7章,分布式作业调度平台的实现

在前面第2章介绍的分布式并行计算原理中,我们看到可以将工头工人程序部署到不同的机器_上运行,然后完成计算。但是,.当这样的并行计算应用非常多,而我们的机器数量有限时,我们需要排队依次来使用机器,第一个并行计算应用跑完了,再跑第二个应用,如果第一个并行计算应用只占部分机器,那么可以考虑同时跑第二个应用....这就涉及建立-个作业调度平台去完成。

我们知道Hadoop本身包含了作业调度的部分,按照Hadoop开发规范,开发好一个作业,打包后,Hadoop 会分发到相应的机器上去运行,但是实际上这仅仅是-种任务调度层面的实现,我们还需要资源层面的调度,比如对CPU、内存、带宽等的分配和管理。

本章会讲述调度平台的设计和实现,包括任务调度和资源调度的实现机制,各种资源调度算法,并以MPI调度器的为例讲述一个完整Demo,最后再讲述市场上常用的调度实现和框架,比如Torque、Mesos、Yarn 等。

现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。

那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统分布式数据库系统等,当然这些也是分布式的关键技术。

使用分布式系统主要有:

1.增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。

2.加强系统可用。我们的业务越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会因为一台机器出故障而导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。

3.因为模块化,所以系统模块重用度更高

4.因为软件服务模块被拆分,开发和发布速度可以并行而变得更快

5.系统扩展性更高

6.团队协作流程也会得到改善

分布式系统的类型有三种:

1.分布式处理,但只有一个总数据库,没有局部数据库

2.分层式处理,每一层都有自己的数据库

3.充分分散的分布式网络,没有中央控制部分,各节点之间的联系方式又可以有多种,如松散的联接,紧密的联接,动态的联接,广播通知式的联接等

然后来对比一下单体应用和分布式架构的优缺点:

1.从上面的表格可以看到,分布式系统虽然有一些优势,但也存在一些问题

2.架构设计变得复杂(尤其是其中的分布式事务)

3.部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂

4.系统的吞吐量会变大,但是响应时间会变长

5.运维复杂度会因为服务变多而变得很复杂

6.架构复杂导致学习曲线变大

7.测试和查错的复杂度增大

8.技术可以很多样,这会带来维护和运维的复杂度

9.管理分布式系统中的服务和调度变得困难和复杂

所以总结一下,分布式系统架构的难点在于系统设计,以及管理和运维。所以分布式系统架构在解决了一些问题的同时,也增加了其他的问题,这就需要不断的再用各种各样的技术跟手段去解决这些新增的问题。

DDR5内存命令真值表详解:如何正确解析JESD79-5标准中的关键指令 本文深度解析JESD79-5标准中的DDR5内存命令真值表,将其视为动态通信协议进行拆解。详细阐述了1-Cycle与2-Cycle命令的区别、Bank Group寻址机制以及模式寄存器(MR)操作流程,为硬件与固件工程师提供了从信号解析到系统调试的完整实战指南,是理解和优化高性能计算平台内存子系统的核心。 阅读详情

相关推荐

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1537

Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?

目录 1、从单块系统说起 2、团队越来越大,业务越来越复杂 3、分布式出现:庞大系统分而治之 4、分布式系统所带来的技术问题 5、一句话总结:什么是分布式系统设计和开发经验 6、补充说明:中间件系统及大数据系统 前言 现在有很多Java技术方向的同学在找工作的时候,肯定都会去招聘网站上找职位投递简历。 但是在很多职位JD上往往会有这样的一个要求:熟悉分布式系统理论、设计和开发,具...

D.K专栏 2779

MMDetection框架入门教程(完全版)

  网上MMDetection的教程看似有很多,但感觉都不成系统,看完一圈下来还是不知道MMDetection要怎么用。这里还是推荐直接跟着官方教程,结合源码学习MMDetection,相关链接汇总如下: 官方教程 - MMCV 官方教程 - MMDetection 官方教程 - 不得不知的 MMDetection 学习路线(个人经验版) 西安交大课件 - mmdetection教程(使用篇)   本文会介绍如何在MMDetection中从头开始搭建一套属于自己的算法。前几篇博客算是本人学习过...

Sual 10万+

华为的架构设计10原则

摘自华为新书《偶然到必然》 产品是否能够呈现期望的或被要求的质量属性,本质上是由架构来决定的。华为制定了十大核心原则来指导架构与设计: (1)全面解耦原则:对业务进行抽象建模,业务数据与业务逻辑解耦,软件和硬件解耦,平台和产品解耦,系统各部件间解耦。 (2)服务化、组件化原则:以服务、数据为中心,构建服务化、组件化架构,具备灵活、按需组合的能力。 (3)接口隔离及服务自治原则:通过接口隐藏服...

jackyrongvip的专栏 2316

DGX Spark部署Isaac Sim:Arm架构容器化与机器人仿真避坑指南

机器人仿真平台依赖物理引擎与GPU加速,在Arm架构设备上的部署往往面临兼容性挑战。NVIDIA DGX Spark基于Grace Blackwell统一内存架构,CPU与GPU共享128GB内存,为本地运行大模型与Isaac Sim仿真提供了硬件基础。Isaac Sim作为NVIDIA Omniverse之上的机器人仿真平台,支持合成数据生成、物理仿真与强化学习策略训练,而容器化方案可将复杂依赖封装隔离,arm64镜像选型则成为部署成败的分水岭。本文从系统环境确认、NVIDIA Container Too

weixin_31220401的博客 210

避坑指南:Unity新版InputSystem在移动端的5个常见问题及解决方案

本文针对Unity新版InputSystem在移动端开发中的常见问题,提供了5个关键解决方案,包括虚拟摇杆灵敏度调节、多点触控冲突处理、按钮反馈延迟优化、手势识别与陀螺仪数据融合以及Android/iOS平台差异处理。这些实战经验帮助开发者高效解决触控适配难题,提升移动游戏体验。

soda5的博客 405

超硬核!!每个华为架构师不愿意透露的10个设计原则。注意迟点会下架

小白学会这10个设计原则,都可以简简单单成为一名架构师!!!目录单一职责开闭原则里氏替换接口隔离依赖倒置简单原则最少原则表达原则分离原则 目录 做软件开发多年,CRUD仿佛已经形成一种惯性,深入骨髓,按照常规的结构拆分:表现层、业务逻辑层、数据持久层,一个功能只需要个把小时代码就撸完了。 再结合CTRL+C和CTRL+V 绝世秘籍,一个个功能点便如同雨后春笋般被快速克隆实现。 是不是有种雄霸天下的感觉,管他什么业务场景,大爷我一梭到底,天下无敌!!! 可现实真的是这样? 答案不言而喻!!! 初入软件行业,

苏州程序大白的博客 4310

Unity 面试篇|(六)数据结构和算法篇 【全面总结 | 持续更新】

先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样遍历完后,堆中的10000个数就是所需的最大的10000个。桶排序是计数排序的升级版。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。这样处理就可以分别在每个文件的10^6个数据中找出最大的10000个数,合并到一起在再找出1000*10000中的最终的结果。

游戏开发小Y的博客 12万+

BAT架构师进阶:大型网站架构书籍推荐

“ 书籍推荐分为如下: 大型网站架构系列 分布式系统系列 BAT技术系列 架构设计系列 一:大型网站架构系列 第一本:《大型网站技术架构:核心原理与案例分析》 这本书主要从大型网站架构的特点,架构目标(高性能,高可用,可伸缩等)基本理论讲起,并介绍了几个很有特色的案例。 第二本:《大型网站系统与Java中间件实践》 同样出自阿里。 此书对分布式系统的演进做了较好的介绍。对常用中间件(服务框架,数据访问层,消息中...

一个有情怀的程序猿博客 556

matlab 点云可视化(1)——pcshow()函数可视化单个点云

matlab可视化单个点云常用方法汇总。

点云侠的博客 5361

损失函数大汇总(三十八)(AUCPR Loss附公式推导与代码)

本文系统介绍了AUCPR Loss的原理与应用。针对不平衡分类任务中AUC指标不够敏感的问题,提出通过优化PR曲线面积(AUCPR)来提升模型性能。文章详细推导了AUCPR的可微近似实现:首先用sigmoid函数软化阈值判断,构造可微的TP/FP/FN计数;然后基于软Precision和Recall计算近似PR曲线面积;最后通过数值积分得到可优化的损失函数。特别讨论了温度参数τ对训练稳定性的影响,并比较了AUCPR与AUC、AP等指标的异同。该方法适用于医学筛查、欺诈检测等极端不平衡场景,能更准确反映模型对

悦学共鸣,温柔以待,汇聚光芒,共同成长 442

架构师之路

转 大型网站架构系列:必看20本技术书籍推荐 2018年07月27日 14:08:28 YOUR_HERO_ 阅读数:1537 ...

ChengChengCheng的博客 216

基于Simulink环境,提供一个关于如何对EMI抑制的DC-DC变换器进行仿真建模的示例

EMI定义:电磁干扰是指任何能中断、阻碍、降低或限制电气设备有效性能的电磁能量。重要性合规性:确保产品符合国际和地方的EMC标准。可靠性:减少因外部或内部EMI导致的系统故障风险。挑战滤波设计:合理设计输入输出滤波器以抑制传导EMI。布局与接地:良好的PCB设计对于减少辐射EMI至关重要。屏蔽:使用金属屏蔽来保护敏感电路不受外界干扰。首先明确要模拟的任务内容。设计一个能够在高频操作下有效抑制EMI的DC-DC变换器。根据工作频率和谐振元件值确定合适的滤波器参数。

xiaoheshang_123的博客 148

大型网站架构系列:必看20本技术书籍推荐

《喜欢点个赞吧》 希望大家也可以在这里交流其中比如某个阶段什么书可以替代这本,比这本更好,希望您留言进行交流!!!切记!!! 大型网站架构系列:20本技术书籍推荐 学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点。以下20本大部分本人都看过,因此推荐给大家。(本次推荐的20本只是一个参考,比如像Head First,Java编程思想等经典...

owenzhang的博客 2278

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

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

华为资深架构师耗时十年精心整理:Java高级开发需要的分布式技术

它可以记录系统产生的所有行为和信息,并按照某种形式表达出来,我们可以使用日志系统所录的信息为系统排错,并优化系统的性能,或者根据这些信息调整系统的行为,提高系统的可用性。本章又针对不同的系统尽量穷举评审时关注的评审点,并随后提供了一个简单有效的评审提纲,最后根据提纲实现了一个互联网容量和性能评估的经典案例,大家可以在案例中了解高并发互联网系统是如何拆分的,以及依据哪些数据进行拆分,通过对非功能质需求的评估、设计和实现,对应设计时的容量和性能评估及事后的压测,来保证互联网项目达成既定的非功能质量需求的目标。

代码界的扛把子 178

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为资深架构师耗时十年精心整理:Java高级开发必备分布式技术

前言 分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解耦了很多结构,但另一方面,又会带来更多衍生的复杂度及难点。 如何保证事物的最终一致性?如何进行性能及容量预估?如何处理分布式系统的日志?如何进行线上应急?如果你 曾有和我一样的困惑,那么相信你一定能从本文中得到非常宝贵的解答。 面对越来越复杂的系统和业务,分布式技术早已成为互联网时代的必学技术 ,然而, 如果没有经历过大公司背景的实践和历练,则我们很难接触到分布式服务的设计和架构 。 分布式和微服务技术越来越被互联网企业推

javassb的博客 280

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java程序员大型网站架构系统知识:强烈推荐20本书籍

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点。以下20本大部分本人都看过,因此推荐给大家。(本次推荐的20本只是一个参考,比如像Head First,Java编程思想等经典书籍是大家都知道,因此不在推荐之列) 本次分...

玩赚AI大模型的博客 562

ITFLY8架构师之家

大型网站架构系列:20本技术书籍推荐 学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点。以下20本大部分本人都看过,因此推荐给大家。(本次推荐的20本只是一个参考,比如像Head First,Java编程思想等经典书籍是大家都知道,因此不在推荐之列) 本次分享大纲 大型网站架构系列分布式系统系列BAT技术文学系列架构设计系列本

jcxch的专栏 1187

大型网站架构系列:20本技术书籍推荐

分享大纲 大型网站架构系列 分布式系统系列 BAT技术文学系列 架构设计系列 本次分享总结 一、大型网站架构系列 第一本:《大型网站技术架构:核心原理与案例分析》 这是本算是国内大型网站架构的经典之作,由阿里人李智慧创作,听名字就知道本书很有智慧。主要从大型网站架构的特点,架构目标(高性能,高可用,可伸缩等)基本理论讲起,并介绍了几个很有特色的案例。 之前群内分享的大型网站架...

wuxinqiu的专栏 306

架构师书单

一、大型网站架构系列 第一本:《大型网站技术架构:核心原理与案例分析》--李智慧 第二本:《大型网站系统与Java中间件实践》 第三本:《大型分布式网站架构设计与实践》--陈康贤。 第四本:《Web信息架构——设计大型网站》 第五本:《高性能网站建设》,对web前端架构做了非常好的讲解。 第六本:《实用负载均衡技术:网站性能优化攻略》,本书较详细的介绍了负载均衡,缓存代理等知识,对系统

万里长江横渡,极目楚天舒 7580
上一篇: 大牛耗时三天整理的:微服务+Nginx+Kubernetes实战文档和面试题
下一篇: 十年架构大佬,带大家进行架构探险:从零开始写分布式服务框架
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值