热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

前言分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解耦了很多结构,但另一方面,又会带来更多衍生的复杂度及难点。如何保证事物的最终一致性?如何进行性能及容量


前言

分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解耦了很多结构,但另一方面,又会带来更多衍生的复杂度及难点。 如何保证事物的最终一致性?如何进行性能及容量预估?如何处理分布式系统的日志?如何进行线上应急?如果你 曾有和我一样的困惑,那么相信你一定能从本文中得到非常宝贵的解答。

面对越来越复杂的系统和业务,分布式技术早已成为互联网时代的必学技术 ,然而, 如果没有经历过大公司背景的实践和历练,则我们很难接触到分布式服务的设计和架构 。

分布式和微服务技术越来越被互联网企业推崇和认可,如何将其结 业务的特点工程化地在企业中落地是每个技术人员都需要思考的问题。小编今天分享一份书籍文档:《分布式服务架构:原理、设计与实战》,本书籍对于理解分布式和微服务技术,有很好的指导和启发。

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

本书将分布式的原理、 实践及个人的工作经验相结合,从分布式的一致性、系统容量评估和性能保障、日志系统、服务部署、线上应急等方方面面进行了鞭辟入里的分析。

本书以一位在 IT 行业从事多年分布式服务架构工作的资深老兵的视角,剖析了针对分布式系统架构的解决方案和设计模式。 书中的每一章、每一节都是作者对多年线上系统架构设计实践的总结。


由于细节内容实在太多,所以小编只能把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容(这里只展示章节目录)!有需要的小伙伴仅需添加小助理vx:添加小助理vx:bjmsb0606006即可!



目录

第一章 分布式微服务架构设计原理

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

本章总结

本章主要讲解从传统的单体架构到服务化的发展历程,并讲解从服务化到现在流行的微服务架构的演化,以及微服务架构的特点、实现原理和最佳实践,井且提出了微服务是 SOA 服务化的拓展和延续。在后续章节里不会刻意地区分 SOA 服务化和微服务,因为微服务就 SOA服务化在全新场景下的升华和叠加。

最后再次强调微服务架构的主要特点。


  • 将传统单体应用拆分成网络服务,来实现模块化组件
  • 根据微服务架构的服务划分来分组职能团队,减少跨团队的沟通
  • 每个服务对应 个团队,团队成员负责开发、测试、运维和运营 ,开发后在团队内运维和运营,不需要交付给其他团队。
  • 去中心化、 SOA 务化的中心服务治理和去企业服务总线
  • 微服务重视服务的合理拆分、分层和构造,可建设自动化持续发布平台,井进行敏捷开和部署。
  • 具备兼容性设计、容错性设计和服务的契约设计。

第二章 彻底解决分布式系统一致性的问题

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

本章总结

本章从一致性问题的实践出发,对大规模、高并发服务化系统的实践经验进行总结, 列举了导致不一致的具体问题,并围绕这些具体问题,提出一致性原理如 ACID、 CAP、 BASE 等:并学习了两阶段、三阶段 TCC一 致性协议,总结了实现最终一致性的查询模式、补偿模式、异步确保模式、定期校对模式、可靠消息模式和缓存一致性模式等 ;最后针对服务化系统中同步调用、异步调用 、消息队列等应用场景详细分析了超时发生的场景和解决方案,以供大家在开发服务化系统的过程中参考。

第三章 服务化系统容量评估和性能保障

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

本章总结

本章以互联网企业重点关注的非功能质量为主线,总结了非功能质量需求的整体目标,井针对不同的服务和资源列举了不同的非功能质量需求的衡量指标,帮助读者在做技术评审的过程中整理思路。本章又针对不同的系统尽量穷举评审时关注的评审点,并随后提供了一个简单有效的评审提纲,最后根据提纲实现了一个互联网容量和性能评估的经典案例,大家可以在案例中了解高并发互联网系统是如何拆分的,以及依据哪些数据进行拆分,通过对非功能质需求的评估、设计和实现,对应设计时的容量和性能评估及事后的压测,来保证互联网项目达成既定的非功能质量需求的目标。

容量和性能评估保证系统设计能够满足系统的非功能质量需求,性能测试保证系统实施按照既定目标实现项目的非功能质量目标,本章后半部分全面介绍了互联网企业里压测的全过程及方法论,并总结了压测的最佳实践 在本章末尾介绍了常用的压测工具集,读者可以根据不同的场景选择不同的压测工具来测试系统的性能指标, 保证系统的高性能。

第四章 大数据日志系统的构建

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

本章总结

在一个完整的互联网服务化系统的实现中,日志系统是一个非常重要的功能组成部分。它可以记录系统产生的所有行为和信息,并按照某种形式表达出来,我们可以使用日志系统所录的信息为系统排错,并优化系统的性能,或者根据这些信息调整系统的行为,提高系统的可用性。因此,稳定的日志系统是保证系统可用性的一个重要的基础设施。

本章一开始介绍了开源日志框架的背景、实现结构、使用方式,包括 JDKLogger、 CommonLogging、 Log4j、 Slf4j、 Logback和 Log4j2 ;然后分享了笔者在实践中积累的使用这些日 志系统的优化经验和最佳实践,先后介绍了日志级别的设置、日志的数量和大小、切割方式、 日志格式的配置,最后给出了一个由一行日志导致的线上事故的案例。

接下来分析了大数据日志系统的原理与设计,从给出构建大数据日志系统的一个通用架构开始,讲述其中各个模块的职责、设计和架构,包括日志采集器、日志缓冲队列、日志解析器、日志存储和搜索、日志展示系统和监控与报警系统等,最后给出了一个如何设计日志系统的容量和对日志系统做性能评估的例子。

第五章 基于调用链的服务治理系统的设计与实现

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

本章小结

随着 SOA 服务化和微服务架构在互联网公司的广泛应用 ,互联网公司 的系统越来越复杂,复杂的系统会有各种各样的问题产生。

APM 系统的核心功能一一调用链跟踪系统的建设,能够帮助我们更好地治理线上服务,井解决生产环境中每天都重复发生的问题。

本章从介绍开源的 APM 项目及市场上流行的商业 APM 产品开始,介绍了 APM 的功能和特性;然后重点讲述了谷歌的 Dapper 论文提到的调用链跟踪原理,并讲解了业务链实现的原理;最后,基于调用链跟踪的原理,总结了实现调用链系统的通用架构、方法论及最佳实践。

第六章 Java服务的线上应急和技术攻关

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

本章总结

本章开始介绍了线上应急和技术攻关的必要性、思路和方法论,强调了线上应急的目标是快速恢复系统,减少影响和损失,而不是彻底解决问题;也通过海恩法则和墨菲定律提出互联网行业中技术攻关的重要性。海恩法则强调,再好的技术、再完美的规章,在实际操作层面,也无法取代人自身的素质和责任心,因此,那些重要的线上应急和技术攻关问题还需要通过高级领域专家来解决,因此,本章在后面全面介绍了线上应急和技术攻关中,领域专家应该掌握的各种命令和工具。

其次,本章介绍了如何搭建示例服务 Vesta ,在配置和启动 Vesta 后,以运行 Vesta 服务为背景重点介绍了笔者积累和总结的高效应用层脚本。接下来介绍了关键的 Java 虚拟机命令,帮助大家查看 Java 虚拟机运行状态、线程堆枝、内存使用情况、 GC 频率等。这些都可以帮助读者解决服务负载高、 Jar 包冲突、验证线上服务代码、动态添加线上日志等问题 并介绍了我们不得不学的那些 Linux 基础命令,包括操控内存、 、网络和网卡、磁盘 I/O 等命令等。

第七章 服务的容器化过程

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

本章小结

通过本节的内容,我们了解到虚拟机与容器之间的区别,以及容器给我们带来的好处,并通过实战操作,学习了Docker 的常用命令,本章主要介绍了镜像、容器、磁盘卷、网络、服和集群的实战操作;然后介绍了Docker目前主要的管理工具: Swarm、 Kubemetes和 ApachMesos; 最后介绍了 wor press 博客系统的容器化的实现过程。

第八章 敏捷开发2.0的自动工具化

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

本章总结

通过对本章的学习,我们了解了常用的 种开发模式:瀑布式开发、法代式开发、螺旋式开发和敏捷开发;然后介绍了当下炙手可热的 DevOps 及其详细流程:最后介绍了敏捷开发 2.0和它的优势,以及我们常用的自动化工具。


最后

由于本书籍文档资料内容过多,全书共422页,所以内容无法全部展示出来分享给大家,有需要的小伙伴仅需添加小助理vx:添加小助理vx:bjmsb0606006即可!

关注小编,有需要的小伙伴仅需添加小助理vx:添加小助理vx:bjmsb0606006即可,你们的支持就是我最大的动力!

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



推荐阅读
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • RocketMQ 运维监控实践指南
    本文详细介绍了如何实现 RocketMQ 的运维监控,包括监控平台的搭建、常用运维命令及其具体用法。适合对 RocketMQ 监控感兴趣的读者参考。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 面试题总结_2019年全网最热门的123个Java并发面试题总结
    面试题总结_2019年全网最热门的123个Java并发面试题总结 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
author-avatar
君子淡如水2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有