华为高级技术专家多年经验分享微服务治理体系、架构及实践文档

news2024/11/24 8:52:19

前言

都说程序员工资高、待遇好, 2022 金九银十到了,你的小目标是 30K、40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升 Java 核心能力最快、最有效,短期内升职加薪的方法,到底是什么?

首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目。一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多复杂的场景。这些复杂场景和项目,就像“墙外的世界”,没有看过,没有接触过,你就无法进行体系化的学习和建立认知,技术壁垒自然就出现了。

所以,如果你期望通过个人努力,实现收入增长和职位晋升,那最好的方式,一定是多学多看多做。

任何系统的可持续发展都需要与之相匹配的治理能力 。在人类文明演进的过程中 ,技术第一生产力,管理则是不可或缺的软实力,两者刚柔相济,从而使得政治 经济、军事、社会形成高效可控的体系。进入 纪以来,软件代码借由互联网、云计算、人工智能、 VR/AR物联网等技术正在“吞噬”整个世界,大规模复杂系统成为社会运转的基础设施。随着应用的功能不断增强,服务粒度越发精细,系统规模更加庞大,技术架构更加复杂,技术团队持续“膨胀”,软件之熵急剧增长,相应的治理体系在实践中法代演进,日趋成熟。

大平台、微服务架构之下,服务治理能力至关重要。 衡量系统成熟度的主要标准是非功能性指标,如稳定性、安全性、可维护性、可扩展性等 系统架构从单体到分布式,再到微服务云原生,甚至混合云,管理复杂度显著提高。解藕分治的系统更需要全局维度的服务治理能力,且必须依靠系统管理系统,实现代码即文档 ,系统即规范。千里之堤溃于蚁穴,一旦有所忽视,不能以规范化、过程化、数据化有效地治理,系统就将迅速腐化,轻则留下技术债务,重则沉病难起,无药可救 软件系统固然有其生命周期,但因治理失效导致不可持续则无疑是一种失败。

本文专注于服务治理,内容系统全面,涵盖发展历史、体系构建、实例详解。如果你的系统越来越乱,那么可以借鉴本文,重建治理体系,由乱而治。

如果你的系统刚刚起步,那么本文能够让你少走弯路,从一开始就兼顾治理,让一切尽在掌握。诚然治理也有成本,需与实际收益匹配,合适的才是最好的,过犹不及。水火相济,阴阳相契,平衡乃中庸之道的最高境界 ,做系统须有系统化思维。

作为系统创造者,面对软件之恼, 当制之以衡、行之有度,使之增减有序,有为而治,方显能者本色!天高海阔,大有可为,而修齐治平,当身体力行,与诸君共勉 !

希望本文能够帮到大家的学习,本文将从目录、主要内容、面向的读者给大家进行介绍!!

目录

主要内容

第1、2章全面阐述服务治理的发展历程,以及“大平台、微服务”架构下服务治理的难点及特点;提出由微服务的度量、管控及管理构建起一个三位一体的闭环体系,从而综合解决微服务全生命周期的现实治理问题;同时阐述治理体系所涉及的相关细分领域及技术能力。

  • 1.1 IT治理与服务治理的关系
  • 1.2服务治理发展历史
  • 1.3微服务治理的范畴

  • 2.1微服务架构

  • 2.2服务度量

  • 2.3服务管控

  • 2.4三位—体:通过度量、管控、管理实现微服务治理闭环

第3、4章重点介绍微服务的线上治理能力;通过微服务治理的度量指标体系及指标采集、存储、分析手段构建微服务度量能力,并在此基础上,通过微服务的健康度分析、故障定界定位、容量规划、根因分析、趋势预测等来构建针对微服务的“看”的能力;通过限流、降级、容错、弹性伸缩、安全管控等手段来构建微服务的“管”的能力;同时通过应急预案、故障演练、混沌工程等来提升线上微服务的可靠性。

  • 3.1线上微服务度量核心指标及分析手段
  • 3.2服务关系维度
  • 3.3应用关系维度
  • 3.4服务性能维度
  • 3.5服务异常维度
  • 3.6资源维度
  • 3.7服务综合度量

  • 4.1分布式服务鲁棒性的架构保障
  • 4.2服务负载
  • 4.3服务限流
  • 4.4服务集群容错
  • 4.5服务降级
  • 4.6服务授权
  • 4.7服务线上生命周期管理
  • 4.8服务线上稳定性保障

**第5章介绍通过APM及动态调用链跟踪来提升微服务的监控及度量能力。**一个跨网络的业务调用请求涉及不同应用及服务节点的调用。我们虽然可以将这个请求在每个节点上的行为以日志的形式记录下来,但在传统的日志监控中,日志之间是没有关系的。就算这些日志被完全收集,也很难识别出这个请求所关联的日志,更别说基于这些关联日志还原出请求的全貌。离散、无关联的日志记录无法有效地帮助我们快速地进行分布式环境下的故障及性能问题的定界定位和关系梳理。

所幸的是,IT技术领域很早就注意到分布式环境下的性能及调用关系梳理问题,并发展出了相关的应用性能管理(Application Performance Management,APM)技术体系。APM 是实现服务度量的一种非常重要并且有效的手段,本章将重点介绍APM及其核心技术:调用链跟踪。

  • 5.1 APM及调用链发展史
  • 5.2调用链跟踪原理
  • 5.3调用链跟踪实战
  • 5.4 APM及调用链落地策略

第6章介绍微服务深度治理能力的构建,将微服务的治理“延升”到架构、开发、测试、运维、团队协同等各个领域,从而实现微服务架构在组织中从“用得了”到“用得好”的提升;同时将服务治理能力反哺给业务,实现技术和业务的良性互动。

6.1架构治理

6.2研发治理

6.3运维治理

6.4协同管理治理

6.5业务治理

**第7章构建轻量高效的指标采集能力;**通过前面6章的学习,相信读者已经对徼服务治理的整体技术架构有了一个相对完整的认识。但是,“纸上得来终觉浅,绝知此事要躬行”,理论和实践之间终究还有一定的距离。为了帮助读者学以致用,从本章开始的后3章将构建一个服务治理的演示实例。服务治理的技术及应用体系非常庞大,一个示例不可能覆盖所有的领域。本书一再强调,度量是治理的前提和基础,因此本实例不追求面面俱到,只重点聚焦于服务度量领域,构建一个集指标采集、分析、监控为一体的服务度量平台,帮助读者深入理解如何基于性能、异常和自定义日志采集来对服务的性能及业务状态进行监控。

本章主要聚焦于服务指标采集客户端SDK的构建,包含架构分析和必要的核心代码说明。

  • 7.1整体架构
  • 7.2指标采集
  • 7.3日志预处理
  • 7.4指标发送

**第8章构建支持高并发的高效的指标收集及存储能力;**第7章介绍了使用Spring AOP、MyBatis Plugin机制、JVM的 ManagementFactory来构建针对服务调用日志、DAO调用日志、系统日志等的采集功能,采用Netty NIO来构建高性能的日志传输通道。本章将构建一个接收指标消息并落地存储的服务端应用,与第7章构建的指标采集客户端相对接,形成一个完整的“采集—接收”闭环体系。

  • 8.1整体架构
  • 8.2数据接收
  • 8.3扩展能力

**第9章指标可视化及度量能力构建;**通过前面两章的介绍,我们已经构建了基本完整的治理指标采集、收集、存储的技术框架和系统功能。本章将重点介绍数据的可视化及治理指标的度量分析。我们会构建一个可视化系统来承载这些能力。

  • 9.1系统架构9.2服务监控
  • 9.3 DAO监控
  • 9.4系统监控
  • 9.5自定义业务监控

大牛对本文的评价以及所面向读者

从SOA到当今的微服务历时十多年,其中不乏服务治理的身影。但服务治理的概念、内涵和实践,在业界一直无法统一,更无法形成行业标准。随着系统的复杂程度越来越高,服务治理的需求越来越紧迫,并已成为一大痛点。

微服务是现代系统中非常受关注的“焦点”,越来越多的分布式系统都纷纷采用微服务的设计理念来演进其架构模型。随着微服务应用规模的增长,治理膨胀的系统会越来越困难。比起微服务设计和拆分,如何能够更好地治理大规模的微服务,才是微服务落地的真正难点。

本文站在治理的角度,从海量微服务出发,向读者展现了微服务领域的“深水区”。我相信,通过阅读本文,你能够更顺畅地迈进微服务的下半场。

本文适合技术管理者、架构师和有一定基础的技术人员阅读,尤其适合自己进入或即将进入服务化和服务治理领域的相关人员阅读。

希望本文能够为读者提供一些启发和指引,让大家少走弯路。

努力成就更好的自己,不断地提升自己的技术深度和广度,让自己变得更加有价值,希望本文能够帮助到大家的学习和喜欢!

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

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

相关文章

WEB前端网页设计 HTML网页代码 基础参数(一)

插入图片&#xff1a;<img src"./图像URL"> 整个HTML格式分为两大部分&#xff0c;一个是head部分&#xff0c;一个是body部分&#xff0c;其中head部分是用于书写网页样式&#xff0c;而body部分用于书写网页主题 标题标记 <h1></h1> ... <h6&…

生产型企业中采购管理系统的优势有哪些?

采购是生产型企业重要的环节&#xff0c;采购成本更是与企业利润息息相关。通常企业采购主要是取自于企业本身的需求&#xff0c;由于不同企业的需求不同&#xff0c;采购管理也就自然有所区别了。尤其是对于中小型企业而言&#xff0c;由于其本身规模有限&#xff0c; 生产资金…

[附源码]JAVA毕业设计健身房管理系统(系统+LW)

[附源码]JAVA毕业设计健身房管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

如何在Linux下 自定义/编写 一个守护进程

【摘要】本文主要讲述何为守护进程&#xff0c;以及如何自编或者利用现有程序将其伪装成守护进程。 何为守护进程&#xff1f; 正常情况下&#xff0c;当我们运行一个前台或后台进程时&#xff0c;一旦离开当前会话&#xff08;终端&#xff09;&#xff0c;那该会话中的所有…

BlockingQueue

网上看了好多文章将线程池的但是似乎都没的多少人会详细讲解里面的任务队列&#xff0c;所以只有自己动手学习其中的任务队列 BlockingQueue 要学习其中的任务队列就需要先学习BlockingQueue&#xff0c;Blocking是一个接口&#xff0c;其中主要的方法为 // 尝试往队尾添加元素…

m基于OFDM的OMP压缩感知信道估计算法误码率仿真,对比传统的LS,MMSE以及LMMSE信道估计性能

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 正交频分复用技术(orthogonalfrequencydivisionmultiplexing,ofdm)应用在通信系统中可以有效抵抗码间干扰(inter-symbolinterference,isi)。同时&#xff0c;通过在符号间插入循环前缀(cyclicpre…

格利尔在北交所上市:市值突破9亿元,朱从利夫妇为实控人

12月2日&#xff0c;格利尔数码科技股份有限公司&#xff08;下称“格利尔”&#xff0c;BJ:831641&#xff09;在北京证券交易所上市。本次上市&#xff0c;格利尔公开发行1050万股&#xff0c;发行价格为9.60元/股&#xff0c;发行市盈率为23.32倍。 据了解&#xff0c;格利尔…

压缩文件7-Zip与WinRAR个人免费版在不同压缩等级下的对比

总结&#xff1a; 压缩率越高&#xff0c;压缩及解压时间相对更长&#xff0c;但传输时间越短&#xff0c;消耗流量越少。在各个压缩等级下&#xff0c;7-Zip均比RAR的压缩率更高&#xff0c;更能达到**“压缩”**的目的&#xff1b;而且相同参数下的压缩速度更快&#xff0c;…

基于增强蛇优化算法求解单目标优化问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

从源码分析vue3组件的生命周期

概览 借官网一张图充篇幅☺ 这张图展示了一个vue组件从开始渲染到卸载结束一整个生命周期经历的每个环节 但只罗列了选项式api生命周期钩子&#xff0c;没有将组合式api的生命周期钩子放进去 下面这个表格列出了所有选项式api生命周期钩子和组合式api生命周期钩子&#xff0c…

函数的节流和防抖?节流和防抖的区别及实现

一.防抖和节流的本质 本质上就是优化高频率执行代码的一种手段。 比如说&#xff1a;浏览器的scroll,keypress,mousemove,resize等事件在触发时&#xff0c;会不断的调用绑定在事件上的回调函数&#xff0c;会极大地浪费资源&#xff0c;降低前端的性能。 因此为了优化用户体…

【C++模板】非类型模板参数

目录什么是非类型模板参数&#xff1f;非类型的类模板参数非类型的函数模板参数非类型模板参数的局限性限制使用的场景支持使用的场景什么是非类型模板参数&#xff1f; 在函数模板和类模板中&#xff0c;模板参数并不仅仅可以当作类型&#xff0c;还可以当作普通值。当使用普通…

Numpy解决找出二维随机矩阵中每行数据中最接近某个数字的数字

解决思路&#xff1a; 利用np.random.rand()函数生成随机的矩阵。abs函数实现对矩阵中每一个元素和指定元素相减np.argsort()函数实现找到排序后新元素在原来矩阵中的下标利用mask函数提取矩阵中第一列的元素最后利用for循环遍历所有的二维坐标&#xff0c;找到矩阵中每行中满…

微信小程序-读取数据

在开发微信小程序的时候,我们经常都会用到一些配置数据,或者当做“单向数据库(只读)”使用。 我们新建一个新的项目工程,JS版本就可以。 免于麻烦,我们新建一个page(showdata)来显示数据。 为了方便管理,我们在项目工程新建一个目录(data),用于存数据。另外我们再新…

面向对象-05-06-构造方法,标准的 javabean 类

实例化的本质就是调用构造方法 package com.luo.demo01;public class StudenTest {public static void main(String[] args) {// 创建对象// 本质&#xff1a;调用构造器Student s new Student();Student student new Student("luo",18);System.out.println(studen…

Git系列,自定义 git 命令,用 shell 脚本帮助你更好的实现 git 版本控制

一、问题引出 在实际的生产当中&#xff0c;无论是 git、小乌龟 git 、idea git 插件&#xff0c;都满足不了我们生产中遇到的一些常见的问题&#xff0c;例如&#xff1a; 工作任务重的时候&#xff0c;手头上可能有若干个分支&#xff0c;每个分支对应着不同的业务&#xf…

Mysql面试题汇总

Mysql面试题 文章目录Mysql面试题一 Mysql索引001 Mysql如何实现的索引机制&#xff1f;002 InnoDB索引与MyISAM索引实现的区别是什么&#xff1f;003 一个表中如果没有创建索引&#xff0c;那么还会创建B树吗&#xff1f;004 说一下B树索引实现原理&#xff08;数据结构&#…

妙啊,Python 管道 Pipe 编写代码如此优雅

大家好&#xff0c;今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法&#xff0c;喜欢本文点赞支持&#xff0c;欢迎收藏学习&#xff0c;文末提供技术交流群&#xff0c;欢迎畅聊&#xff01; 我们知道 map 和 filter 是两种有效的 Python 方法来处理可迭代对象。…

如何基于YAML设计接口自动化测试框架?看完秒会!

在设计自动化测试框架的时候&#xff0c;我们会经常将测试数据保存在外部的文件&#xff08;如Excel、YAML、CSV&#xff09;或者数据库中&#xff0c;实现脚本与数据解耦&#xff0c;方便后期维护。目前非常多的自动化测试框架采用通过Excel或者YAML文件直接编写测试用例&…

[附源码]计算机毕业设计springboot招聘系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…