在程序员的世界里,新概念、新技术层出不穷,诚如庄子所言:“吾生也有涯,而知也无涯,以有涯随无涯,殆已!”把学习新技术当作一种乐趣,掌握其精髓,并应用到日常的开发工作中,提高开发效率,构建出更酷、更符合用户需求的产品,是一件很快乐的事。

高级软件架构师多年实战经验的结晶,多位专家联袂推荐!

手把手带你体会从微服务的设计、实现到运维的全过程。涵盖了微服务度量的概念、设计,实现、聚合分析、展示和报警,以及如何通过度量来推动服务的改进和完善

 

本文从一开始接触微服务到熟练应用度量驱动开发方法,由浅入深,按照微服务开发的全过程逐步展开!我们将从目录、主要内容和评价三部分做介绍!

目录

 

主要内容

在本文主线上,我们从微服务的特点入手,引出了度量驱动开发的基本概念、内容、方法与策略,然后从度量的设计和实现开始详细讲述如何设计与实现微服务的度量,并介绍如何用度量驱动的方法和技术来改进微服务。接下来,详细阐述了度量数据的聚合与展示、分析与报警的各种方案,最后结合实例介绍了度量驱动运维和微服务的全程度量。下面简要介绍一下本文各章节的主要内容。

第1章微服务入门;对比了单体服务与微服务的特点,讲解了我们心中的微服务之道,并介绍了一个贯穿始终的微服务实例——土豆微服务,将我们熟悉的待办事项Todo List应用拆分为土豆管理微服务、土豆提醒微服务和土豆网页微服务,并分别简述了它们的功能与设计。在技术实现上,使用Java语言基于Spring Boot进行开发,这个案例为后续的度量做了最基本的铺垫。

  • 1.1单体服务的特点
  • 1.2拆分服务
  • 1.3微服务的特点
  • 1.4微服务之道
  • 1.5十豆微服务案例快速上手

 

第2章微服务度量的基本概念;本章简要介绍了微服务的局限及度量在解决微服务局限中的重要作用。然后分别从内容、层次、方案选择等各个方面介绍了度量的一些基本概念和方法,为后文如何使用度量来驱动设计、开发等铺垫初步的理论知识。微服务自身的特点和局限,使得它相比传统单体服务更加需要重视度量,每个微服务都应该在开发功能之前先定义度量指标。关于度量的基本知识还有很多,读者可以通过下面的超链接获取到更多、更深入的知识。

  • 2.1微服务的局限及其解决方案
  • 2.2微服务中度量的重要性
  • 2.3微服务度量的内容
  • 2.4微服务度量指标与术语
  • 2.5微服务度量策略选择
  • 2.6本章小结

 

第3章微服务度量的设计;本章主要介绍了微服务协议和存储系统的选择,并以3种常用的微服务协议为例,分析了它们的特点及度量方法,以及对应的数据存储系统,还介绍了用度量实现高可用性的3个重要手段:分流、限流和断流。我们提倡度量驱动设计,就是让大家在做微服务设计时根据度量指标做出技术选型决策,并对度量什么、如何度量等在设计阶段就胸有成竹。我们为土豆微服务设计了一个度量驱动方案供大家参考。

  • 3.1微服务协议的选择与度量
  • 3.2 HTTP及其度量
  • 3.3 SIP及其度量
  • 3.4 RTP及其度量
  • 3.5数据存储系统的选型
  • 3.6基于度量实现高可用性
  • 3.7土豆微服务度量驱动的设计
  • 3.8本章小结

 

第4章度量驱动的微服务实现;软件核心都是由代码构成的,所以对代码的度量不仅仅展示代码的质量,同时也能反过来通过不断反馈、修改,促进代码质量的改善。本章首先介绍如何度量代码的质量,然后在度量代码的实现上,介绍了度量实现依赖的关键技术,最后重点介绍了如何利用这些技术实现土豆微服务的度量。度量驱动实现的要点就在于我们在实现服务时要有的放矢,根据设计在适当的地方进行埋点。通过上述常用的软件库和技术可产生各种各样的度量信息,下一章我们将介绍如何收集和展示这些度量数据。

  • 4.1度量代码
  • 4.2度量进度
  • 4.3度量性能
  • 4.4度量微服务的常用技术
  • 4.5度量常用类库
  • 4.6土豆微服务度量实现
  • 4.7本章小结

 

第5章度量数据的聚合与展示;本章主要介绍了度量数据产生后,怎么把这些数据聚合、存储起来,并以案例的方式介绍了度量数据清洗与处理的方法,然后介绍了数据展示中经常用到的图表类型及选择标准。最后重点介绍了两种常用的开源的聚合与展示方案,即TIG和ELK,并基于这两个方案展示了土豆微服务的各种度量数据的展示效果。这些技术都是为了从大量的度量指标数据中提炼、挖掘出有用的信息,围绕着微服务和其所支撑的业务的关键业绩指标,利用这些强大的数据统计和图表工具,我们就可以做有针对性的分析。下一章我们就开始介绍度量的分析与报警相关的技术与实践。

  • 5.1度量数据的聚合和存储
  • 5.2度量数据的清洗和处理
  • 5.3度量数据的可视化
  • 5.4常用度量聚合与展示方案
  • 5.5土豆微服务的度量聚合与展示
  • 5.6本章小结

 

第6章度量数据的分析与报警;本章以实例出发,介绍了如何对度量数据进行分析与报警设计,并列举了一些常见问题。重点在于围绕数据分析的目标,通过观察、比较和分析,透过现象看本质。我们基于Python和Elasticsearch API从零开始为土豆微服务打造了一个迷你的报警系统,麻雀虽小,功能却不弱。利用度量检查、报警和报告三大功能,能使你的系统时刻有双“慧眼”护航,开发人员和运维人员再也不用担心产品线问题没能及时发现了。以这个系统为雏形,我们在实际工作中开发了一个更强大的报警系统,并与PagerDuty和即时通信(IM)系统做了深度整合,可预先或及时发现产品线上的很多问题。

  • 6.1度量数据的分析
  • 6.2实现报警常用的技术
  • 6.3土豆微服务的报警实现
  • 6.4本章小结

 

第7章度量驱动的运维;微服务的运维是件很麻烦的事,涉及部署升级、监控报警、故障恢复等繁杂的事项,其目的就是保证持续地向用户提供可靠高效的服务。传统的监控系统主要关注系统级的指标,而只有针对微服务自身和业务KPI的全方位度量才能做好运维工作。度量驱动的运维是我们在事前、事中和事后对产品线上的服务做好运维工作的有效手段和关键技术。我们的微服务能够达到3个9(99.9%)以上的高可用,度量功不可没。

  • 7.1部署升级
  • 7.2数据的运维
  • 7.3配置调整
  • 7.4开源组件的度量
  • 7.5土豆微服务的运维示例
  • 7.6本章小结

 

第8章全链路度量;本章是全文的最后一章,我们首先讨论了微服务的全链路度量,从前端的各个客户端(浏览器、本地应用和手机应用App)到后台的众多服务器进行全链路全方位的度量数据采集,这样才能通过度量来驱动我们从各个方面持续改进。之后我们对微服务度量驱动开发这套方法论做了回顾和展望。技术发展日新月异,随着云平台、大数据、流计算、机器学习的浪潮袭来,度量驱动开发的方法与之结合将如虎添翼。由于篇幅所限,不再展开阐述,希望在以后能有机会与大家一起讨论和学习。

  • 8.1微服务的调用链路度量
  • 8.2客户端度量数据的采集
  • 8.3度量驱动开发的回顾与展望
  • 8.4本章小结

 

这份【微服务之道:度量驱动开发】实战笔记共有442页,需要完整版的同学,可以转发此文关注小编,扫码下方来获取!!!

大牛对本文评价