剖析中国互联网大厂技术架构 (105)

作者:禅与计算机程序设计艺术

1.简介

  在过去的5年间,中国各大互联网巨头纷纷布局,从云计算平台、搜索引擎系统、支付平台、社交网络、电商平台到大数据分析平台、智能机器人平台等诸多新兴产品与服务,势必对当下及未来的数字化经济体系产生重大影响。作为一名技术人员,如何更好地理解并掌握这些大厂技术架构,进而更好地参与到技术创新与管理中来,将是一项非常重要的能力。本文基于实际经验编写,旨在通过对国内外十几个知名互联网公司的技术架构进行梳理,结合我自己在实际工作中的积累,深入浅出地剖析其背后的核心技术原理和具体运作流程。同时,还希望能抛砖引玉,提出一些挑战性技术问题,激发读者对行业技术的兴趣和热情,探讨其应对之道。

2.基本概念术语说明

  首先,我们需要知道什么叫做技术架构?它到底是一种什么样的东西?它有哪些特征?以及这些特征该如何应用到实际工作中呢?下面我们来看看相关的知识。

2.1 什么是技术架构?

技术架构(Technology Architecture,TA),是指一门建筑学术语,指的是用于工程设计和建设的一系列决策、标准、原则、方法、工具、流程或过程。根据国际标准 ISO/IEC 42010:2011,“技术架构”由“构架、设计、规划、构造、实施和测试”五个步骤组成,分别用于确立技术方向、制定技术路线图、选择设计工具、设计方案、构建、测试和维护技术解决方案。总之,技术架构包括了很多方面,例如架构设计、技术方案、系统设计、接口定义、开发规范、测试策略、部署计划等。

在软件工程中,技术架构一般用于指导软件的设计、开发、测试、集成和维护等工作。不同行业的技术架构往往不同,有些行业甚至没有技术架构。比如大众点评技术架构就不存在,因为它的产品本身就是一个餐饮网站,并不需要复杂的架构设计。只有企业级软件才需要考虑技术架构。

  技术架构的五个步骤如下:

  • 构架阶段:此时制定技术愿景和目标,明确需求和技术价值,制订战略规划。
  • 设计阶段:主要进行高层设计、系统设计和详细设计。包括功能设计、模块设计、结构设计、数据流设计等。
  • 规划阶段:通过对项目资源、预算和时间的有效管理,制定计划,并做好资源分配。
  • 构造阶段:根据计划和方案,按照设计文档,进行代码编写和测试。
  • 测试阶段:针对已完成的代码,对其进行单元测试、集成测试、性能测试、兼容性测试、安全测试、运营测试等,检查其运行是否符合设计要求。

  每个步骤都需要涵盖整个技术生命周期,涉及产品研发、架构设计、开发实现、运维管理等各个环节。因此,技术架构不仅仅是一个空壳,更是在相互联系、相互促进的过程中形成的产物,需要围绕着需求、产品、团队等多个角度进行深入的研究。

2.2 为什么要有技术架构?

  技术架构的目的在于帮助企业建立科学、可靠的技术基础设施,促进信息技术和产业链上的有效沟通,最大限度地发挥创新和成果。下面我们就技术架构有哪些特征进行简单阐述。

2.2.1 架构强调跨界整合

  技术架构不仅仅关注自身的内部技术能力,更关心如何在不同领域之间进行有效整合。这个跨界整合涉及两个维度:产品与技术。产品可以分为产品架构(Product Architecture)、UI/UX设计架构(UI/UX Architecture)和品牌形象架构(Branding Architecture),技术则可以分为微服务架构(Microservices Architecture)、容器架构(Container Architecture)和大数据架构(Big Data Architecture)。

  这些架构设计也不是孤立存在,而是互相支撑、相互促进。举个例子,由于云计算技术的迅速普及,很多传统企业都开始意识到云计算的商机。然而,传统软件开发模式仍占据主导地位,为了适应这一新的业务模式,技术架构往往会引入微服务架构、容器架构等新型架构模式。

  另外,架构还能够借助管理科技、智能算法和人工智能技术赋能,赋予组织更大的创造力和灵活性。企业可以通过技术架构来改善管理、优化生产效率、提升竞争力、节约成本,并防止出现创新停滞局面。

2.2.2 架构体现了价值共享

  技术架构不是只注重自己的技术能力,它更注重协同合作和共赢。架构不仅仅定义了技术实现的方式,还须注重技术共识和价值共享。

  首先,技术架构需落实到日常管理实践上。由于技术架构是一项长期投资,需持续不断的迭代更新,所以管理需要建立与技术架构的密切联系。比如,管理可以利用架构的决策支持、实施规范、技术规格、自动化工具等,确保团队的工作顺利开展。

  其次,技术架构还需为不同部门之间的沟通提供参照。不同的团队往往有不同的职责范围和职能划分,需要有统一的技术架构标准,才能有效沟通。架构在组织结构、产品开发和用户体验等多个领域都起到作用。

  最后,技术架构还需促进组织变革和创新。由于技术架构提升了团队的技术能力,让他们具备更好的执行能力和管理水平,使得组织获得更多的机会和空间来探索和实践创新。

2.2.3 架构是创新驱动的驱动力

  技术架构并非一帆风顺的过程。当今世界正在发生深刻的变化,技术架构需要不断跟踪并响应变化。

  比如,云计算技术、区块链技术、人工智能技术的发展以及互联网行业整体发展方向的转变,都会影响到技术架构的设计、实施和运用。

  因此,技术架构是创新驱动的驱动力,也是自我赋能的动力。只有围绕着商业价值创造和社会价值实现,技术架构才能不断更新,为创新提供更好的环境。

2.3 哪些公司具有良好的技术架构?

  好的技术架构既要服务于业务,又要服务于技术。一个成功的技术架构,应该首先服务于业务需求,然后才是技术支撑。下面我们列举几个具有良好的技术架构的公司。

  ### 2.3.1 Facebook   Facebook拥有充满创新精神的员工,围绕着“开放”,扬弃封闭的拒绝改变。作为全球最著名的社交媒体公司,其技术架构历经三代,总体呈现出向前瞻移的趋势。

  Facebook技术架构的五大步骤包括:架构设计、技术实施、监控、改进和文化转型,具体如下:

  • 架构设计:Facebook的核心架构是为万亿用户提供稳定的服务。在架构设计方面,Facebook以“六边形架构”为基础,打破传统的单一大型服务器架构,采用分布式、服务化的架构方式,将系统组件拆分成小而易管理的独立服务。

  • 技术实施:Facebook采用微服务架构,将不同功能模块分散到不同的服务器上,通过RESTful API和GraphQL等外部通信协议与前端进行交互,实现快速迭代、弹性扩展和可伸缩性。

  • 监控:Facebook搭建了一套完整的监控体系,能够识别故障、发现问题、快速定位问题并采取相应措施。Facebook所有的后台服务均记录日志、发送告警,并通过分布式跟踪技术监控服务依赖关系,帮助开发人员快速定位和解决故障。

  • 改进:Facebook在架构改进方面,推出了开放式API平台、动态广告系统和时间线功能等多种技术方案。这些技术方案不仅满足了公司业务发展需要,也有效提升了用户体验。

  • 文化转型:Facebook通过改变平台文化,鼓励员工、客户和员工自我成长。其中,扁平化办公室、免费WIFI、晚餐等先进文化为员工提供了学习的机会。

  总的来说,Facebook技术架构把复杂的技术问题抽象为简单易懂的服务化架构,帮助公司更好地服务于消费者。

  ### 2.3.2 Google   Google公司的技术架构,从2007年的搜索引擎到如今的AI图像识别技术,无不突显其庞大的软件体系结构,紧密协同的产品组合与统一的技术栈。

  Google的技术架构是全球技术最具代表性的案例。它由以下五大步奏构成:设计、构建、部署、改进和使用。

  • 设计:Google的设计思想源远而渊,创始于贝尔实验室,后来被亚马逊公司、苹果公司、微软公司等纷纷模仿。从数据库到基础设施、应用程序,Google都花了大量的时间和金钱在产品设计上。

  • 构建:Google的软件构建流程遵循精益开发(Lean Development)的方法论,即快速构建、小批量集成、频繁发布,达到产品完美程度。

  • 部署:Google的部署体系有三套,分别是云端、大数据及物联网。每一套部署体系都承担着不同的职责。

    • 云端部署体系:负责提供Google Cloud Platform和Firebase等服务,为大量用户提供可靠、低延时的服务。

    • 大数据部署体系:Google的大数据处理框架主要是Apache Hadoop,它将海量数据存储于HDFS文件系统中,并通过MapReduce、Hive、Spark等处理框架对其进行分析和挖掘。

    • 物联网部署体系:Google的物联网处理系统主要是谷歌的云端IOT Core,它负责连接、管理、分析、处理和存储IOT设备数据。

  • 改进:Google的技术领先性在很大程度上归功于内部的技术实力和对市场的敏锐判断。例如,Chrome浏览器的成功开启了一个全新的浏览器市场,并深刻影响了互联网的发展。

  • 使用:Google的架构服务直接面向最终用户,并提供包括搜索、网页、视频、图片、音乐、App Store、YouTube在内的一系列产品和服务。

   总的来说,Google的技术架构处处体现了商业的高度智慧和创新精神。它充分考虑到了未来趋势,通过精益的构建、部署、改进、使用,创造出能够满足用户需求的软件。

  ### 2.3.3 Uber   Uber是美国最知名的共享出行公司,其技术架构以移动应用程序为核心,通过物联网技术、机器学习算法、大数据分析等手段,为用户提供更便捷、省时的乘车服务。

  Uber技术架构包含三个层次:移动应用、物联网云端、数据分析。

  • 移动应用:Uber移动应用是一个全栈的产品,采用混合开发技术,包括iOS、Android、Web和React Native四大技术栈,并利用现有的开源组件库进行扩展。

      移动应用通过分离各个功能模块、加强权限控制和安全机制,以及基于用户数据进行反馈调整,提升用户体验。

  • 物联网云端:Uber物联网云端平台是Uber基础设施的集合,为司机、乘客、物流、共享设备、车辆、以及系统其他部分提供服务。

      Uber的物联网云端平台采用模块化架构,并基于AWS和GCP等云平台,实现基础设施的自动化、自动扩容和高可用。

  • 数据分析:Uber的数据分析平台是对用户行为习惯的实时分析,以洞察用户需求,提升服务质量。

      Uber的数据分析平台采用机器学习、统计模型和人工智能技术,对用户历史数据进行分析,并通过实时回馈给用户提供改善建议。

  总的来说,Uber的技术架构融合了专业知识、优秀的产品设计和最前沿的科技,为用户提供令人满意的出行服务。

  # 3.核心算法原理和具体操作步骤   了解了技术架构之后,再来看看具体的算法原理和具体的操作步骤。

3.1 云计算架构

  云计算架构是目前运用最广泛的架构模式。它提供了一系列解决方案,包括虚拟化、容器化、自动化、自动扩容和弹性扩展等,提供计算、存储、网络和其他IT资源的按需付费或使用权的云计算服务。云计算架构的核心算法原理如下所示:

3.1.1 IaaS

  IaaS(Infrastructure as a Service)即基础设施即服务,是指提供商通过网络或其他形式为个人或组织提供硬件、网络、存储等基础设施的一种服务。其核心算法原理如下:

  1. 弹性扩展:当应用系统需要的资源超过实际提供的资源时,可以通过购买更多的云资源解决,这种扩展能力称为弹性扩展。

  2. 自动化部署:云服务提供商可以在数秒钟内完成系统的部署,大幅度降低了运维时间。

  3. 按需计费:云服务提供商可以根据用户的使用情况对云资源的使用量进行收费,通过价格比较而不是数量比较,实现了按需计费。

  4. 高可用:云服务提供商通过冗余的硬件和网络设置,保证了系统的高可用性。

  5. 可编程:云服务提供商可以通过脚本语言或其他方式对系统进行配置和编程,灵活地满足用户的个性化需求。

  6. 本地连接:云服务提供商为用户提供了本地连接,可以在任何地方访问云资源,减少了网络带宽消耗。

  随着云计算技术的发展,IaaS正在成为最受欢迎的云架构模式。随着云计算的普及和应用,越来越多的互联网企业开始利用IaaS进行数据中心和服务器托管,提高自身的服务能力。

  ## 3.2 分布式架构   分布式架构是当今计算机技术发展的最新趋势。它通过网络将不同的数据、任务和计算资源分布到不同地点,并通过消息传递和远程调用的方式实现数据共享、资源共享和负载均衡。分布式架构的核心算法原理如下所示:

  1. 分布式存储:分布式存储是分布式架构的基础。通过将数据分布到不同的节点上,实现数据的共享和容错能力。

  2. 分布式计算:分布式计算的核心是将计算任务分布到多个节点上进行并行处理,同时保持数据的一致性。

  3. 分布式调度:分布式调度是分布式架构的关键组件。它通过将任务映射到不同的节点上,实现集群资源的最大利用率。

  4. 分布式锁:分布式锁是分布式架构中重要的同步机制。它可以防止多个进程或线程同时访问相同的数据或资源。

  5. 分布式事务:分布式事务是分布式架构的重要特性。它实现了对数据操作的原子性和一致性的维护。

  随着云计算和分布式架构的融合,新型的软件系统正在产生。比如,分布式数据库、分布式消息队列、分布式计算引擎、分布式文件系统等。分布式架构的快速发展促进了云计算的发展。

  # 4.具体代码实例与解释说明   最后,我们来看看一些具体的代码实例和解释说明。

4.1 Elasticsearch架构原理

  Elasticsearch是开源的搜索服务器,它提供了一个分布式、RESTful风格的搜索引擎。Elasticsearch支持多租户、RESTful API、SQL语法查询等特性,其架构原理如下图所示。

  1. Master节点:Master节点负责集群管理,包括集群状态的维护、元数据的分片、副本分配、负载均衡等。

  2. Data节点:Data节点负责数据的存储、检索。每个Index对应一个Lucene索引文件,其中存储着实际的文档数据。Data节点使用Java堆内存、磁盘存储和网络传输资源。

  3. Client节点:Client节点负责与集群进行通信,接收用户请求、发送查询请求。

  4. Ingest节点:Ingest节点主要用来处理、分析和转换数据,对于数据导入、报表生成等场景都可以由Ingest节点来处理。

  5. Coordinator节点:Coordinator节点主要用来协调分布式操作,如创建索引、删除索引、复制分片等。

  Elasticsearch架构清晰地展示了其分布式架构,能够有效地处理海量数据和提升搜索速度。

  # 5.未来发展趋势   最后,让我们来看看未来技术架构的发展趋势。

5.1 容器化架构

  容器化架构是一种新型架构模式,它使软件系统能够部署在轻量级的虚拟容器中,提供高度的隔离和资源利用率。容器化架构的核心算法原理如下所示:

  1. 快速启动:容器化架构能够在几秒钟内启动,使得应用程序的部署和启动速度大幅提升。

  2. 轻量级虚拟化:容器化架构的虚拟机占用的空间较小,启动速度快,启动时间短,能够节省云计算资源。

  3. 自动部署:容器化架构的部署过程自动化,不需要手动配置和安装。

  4. 方便弹性扩展:容器化架构通过基于容器编排工具的动态资源分配,使得应用程序可以方便地弹性扩展。

  5. 服务间隔:容器化架构通过网络隔离,可以避免服务之间的通信干扰。

  6. 可观测性:容器化架构的管理系统能够直观地展示服务运行状态和资源利用率。

  随着云计算和容器化架构的融合,容器云成为未来云计算的主流形式。容器化架构将重新定义软件开发和运维的工作方式,为应用程序的部署和运维提供新的机遇。

5.2 服务网格架构

  服务网格架构是微服务架构的重要组成部分。它通过将微服务间的通信和流量管理自动化,实现服务的透明化、可靠性的增强、灵活性的提升。服务网格架构的核心算法原理如下所示:

  1. 服务发现:服务网格架构通过服务注册和服务发现实现微服务之间的自动化通信,实现微服务的动态发现。

  2. 流量管理:服务网格架构能够为微服务之间提供服务质量、流量控制、熔断、均衡负载等功能,实现微服务的可靠性增强。

  3. 安全认证:服务网格架构提供统一的身份验证和授权机制,保护微服务的隐私信息。

  4. 可观测性:服务网格架构提供微服务的健康状况、性能指标、调用关系、异常信息等监控信息,可以实时掌握微服务的运行状况。

  5. 配置管理:服务网格架构能够自动化地配置微服务,实现其弹性伸缩和资源调配。

  随着服务网格架构的发展,其应用将遍及各个行业,成为微服务架构的重要组成部分。

猜你喜欢

转载自blog.csdn.net/universsky2015/article/details/132179518
105
今日推荐