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

news2025/8/12 15:49:22

前言

本篇是从程序员到首席架构师十多年职业生涯的实战经验总结,系统讲解构建大规模分布式系统的核心技术与实现方法,包含开源的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.管理分布式系统中的服务和调度变得困难和复杂

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Investment Guide|Star Investors: X METAVERSE PRO‘s Copy Trading System

With the globalization of finance, people around the world are more keenly aware of the role of finance. When financial investment has become a social trend, “how to effectively use every penny and grasp every investment opportunity in a timely manner” h…

SpringCloud - 服务调用

文章目录1. LB负载均衡(Load Balance)2. Ribbon负载均衡服务调用2.1 Ribbon负载均衡演示2.1.1 架构2.1.2 POM2.1.3 RestTemplate操作2.2 Ribbon核心组件IRule2.3 负载均衡规则替换2.4 Ribbon负载均衡算法2.4.1 原理2.4.2 手动实现负载均衡3. OpenFeign服务调用3.1 OpenFeign使用…

[Spring Boot]09 Spring Boot集成和使用Redis

目录前言Spring Boot如何集成RedisSpring Boot如何使用Redis小结前言 Redis全称Remote Dictionary Server(远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilip…

Python 基础(二):搭建 Python 开发环境

搭建 Python 开发环境一、下载 Python 安装包二、安装 Python三、Python开始菜单介绍3.1 IDLE3.2 Python 3.113.3 Python 3.11 Manuals3.4 Python 3.11 Manuals Docs四、Hello World大家好,我是水滴~~ 本篇文章主要介绍如何搭建 Python 的开发环境,主要内…

Eolink钉钉webhook使用教程(超详细)

目录 一、操作步骤 1、空间管理 2、添加服务调用 3、填写添加Webhook信息 4、获取DingDing通知URL 1、需要创建一个至少三个人的群 2、需要添加一个群机器人。 3、选择智能群助手 4、添加机器人 5、点击设置 6、选择【自定义】通过Webhook接入自定义服务 7、确认添…

多元统计分析-----例8.1:今有14名学生的身高和体重数据,做相关图以显示相关变量间的关系。

例8.1:今有14名学生的身高和体重数据,做相关图以显示相关变量间的关系。 x1c(147,171,175,159,155,152,158,154,164,168,166,159,164,177) x2c(32,57,64,1,38,35,44,41,54,57,49,47,46,63)plot(x1,x2,xlim c(145,180),ylimc(25,75))出错: …

Android进阶:6、使用okhttp下载图片

因为在网上找到的资源不只是一些字符串或是一些二进制数字,还是有的是可以肉眼看见的图片,那么我们在发送网络请求时拿到的是一张图片该如何显示在组件上面呢? 这就要使用到okhttp的请求返回结果的一个属性(byteStream&#xff0…

自动驾驶感知算法实战14——感知算法模型生产线

自动驾驶感知算法实战专栏:https://blog.csdn.net/charmve/category_12097938.html目录 一、感知算法生产流程二、算法模型部署流程二、各个阶段交付物数据选择(数据采集、数据增强)数据标注模型训练模型量化模型部署测试与验证一、感知算法生产流程 二、算法模型部署流程 二…

【JavaWeb从零到一】JSPELJSTL

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:【JavaWeb】 🥭本文…

通过题目入门python基础1

通过题目入门python基础 简介:本文通过,python的基础题目,带领大家入门python的基础语法,以实用主义为主。 差 读取四个整数 A,B,C,D,并计算 (AB−CD) 的值。 输入格式 输入共四行,第一行包含整数 A&am…

GraphQL 实践与服务搭建

原文链接: GraphQL 实践与服务搭建 GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容…

《SystemVerilog Assertion 应用指南》学习01

文章目录0、基于断言的 验证1、SVA 介绍1.1.、什么是断言1.2、为什么使用 SystemVerilog 断言(SVA)1.3、SystemVerilog 的调度1.4、SVA 术语1.4.1、并发断言1.4.2、即时断言1.5、建立 SVA 块1.6、一个简单的序列1.7、边沿定义的序列1.8、逻辑关系的序列1…

云原生安全:4C~

4C是啥? cloudclustercontainercode 4个C是层的关系,外圈不安全,不能指望里面太安全。。。 目录 Cloud cloud Provider Security 基础架构安全 Cluster cluster的组件 cluster中的组件(应用中的) Container …

第二章:Pythonocc官方demo 案例44(几何板条)

源代码: ##Copyright 2009-2016 Jelle Feringa (jelleferingagmail.com) ## ##This file is part of pythonOCC. ## ##pythonOCC is free software: you can redistribute it and/or modify ##it under the terms of the GNU Lesser General Public License as pub…

数据库 Apache Doris 展开了为期两个月的调研测试

2022 年 3 月开始,我们对符合以上特点的数据库 Apache Doris 展开了为期两个月的调研测试。以下是 Apache Doris 1.1.2 在各个方面的满足情况。 基于上述情况,我们决定采用 Apache Doris,除了可以满足上文提到的几个特点,我们还考…

[信息系统项目管理师-2023备考]信息化与信息系统(一)

1.信息的质量特性 精确性:对事物状态描述的精准程度完整性:对事物状态描述的全面程度,完整信息应该包括所有重要事实可靠性:信息的来源、采集方法、传输过程是可以信任的,符合预期及时性:获取信息的时刻与…

(八)RabbitMQ发布确认

发布确认1、发布确认原理2、发布确认策略2.1、开启发布确认的方法2.2、单个确认发布2.3、批量确认发布2.4、异步确认发布2.5、处理异步未确认消息1、发布确认原理 书面文:生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在…

Python集合类型详解(一)——集合定义与集合操作符

今天继续给大家介绍Python相关知识,本文主要内容是Python集合类型定义与集合操作符。 一、集合类型定义 在Python中,集合是一种非常重要的组合数据类型。Python中的集合与数学中的集合非常相似,集合中的数据没有顺序,并且每个元…

第二章:Pythonocc官方demo 案例45(几何轴向曲线偏置)

源代码: #!/usr/bin/env python##Copyright 2009-2016 Jelle Feringa (jelleferingagmail.com) ## ##This file is part of pythonOCC. ## ##pythonOCC is free software: you can redistribute it and/or modify ##it under the terms of the GNU Lesser General …

【优化调度】遗传算法求解工件的并行调度组合优化问题【含Matlab源码 2234期】

⛄ 一、 遗传算法简介 1 问题描述 假定一个加工系统有m台机器和n件工件,每个工件包含一道或多道工序,工件的加工顺序是确定的,但每个工件可能有几条可行的加工路线,即每道工序可在多台不同的机床上加工,工序的加工时间和加工费用随机床的性能不同而变化。作业调度的…