猜你喜欢
架构探险:轻量级微服务架构(下册)

架构探险:轻量级微服务架构(下册)

书籍作者:黄勇 ISBN:9787121324475
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3122
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习轻量级微服务架构的全景视图,随后的各个章节将围绕微服务的日志、监控、通信、解耦、测试、配置六大方面进行展开。读者可亲自动手,从零开始搭建轻量级微服务架构,充分享受架构探险的乐趣。

作者简介

黄勇,现任上海特赞科技CTO,曾任阿里巴巴公司系统架构师。具有丰富的互联网产品架构经验与技术管理经验,擅长敏捷开发模式,推崇“轻量级”系统架构。国内开源软件推动者,Smart开源框架创始人,图书《架构探险:从零开始写Java Web框架》作者。技术大会讲师、培训师、咨询师。热爱技术交流,乐于分享自己的成长经验。

编辑推荐
适读人群 :本书适合对微服务实践感兴趣,以及想成为微服务架构师的人员阅读。
微服务落地的实践之作
国内一线专家联袂力荐
让微服务真正可操作、可实现

前言
微服务来了,有了“服务”这两个字,这注定又是个一说就明白、一举例就糊涂、一讨论就吵架的概念。微服务的出现有其必然的商业背景和架构哲学,如何更好地认识微服务的内涵、如臂使指地应用2017年,微服务三岁了。我们一直期盼它能快速长大,希望微服务技术社区能推出更多框架与工具,可以帮助我们更好地落地微服务,并从中获得微服务给我们带来的甜头,但实际情况却让我们感到有些失望。我们至今还在寻找适合自身技术需求的微服务架构,甚至仍然觉得微服务离自己有些距离。
因此我们更多的是在观望,希望看到有成功实践微服务的企业能够将自己的技术分享出来,以供更多的企业来使用,但实际情况仍然让我们感到失望。我们不得不选择Spring Cloud这样的“全家桶”式的微服务框架来实现微服务架构,此时我们就需要基于Spring Boot来开发微服务,Spring Cloud提供的大量基础设施虽然可与Spring Boot进行无缝整合,但这样的架构给微服务的技术选型带来了一定的局限性。此外,Spring Cloud包含了大量的Spring官方所提供的开源项目,目前不同的版本在兼容性方面也存在一些不稳定现象。
我们认为,微服务是一个灵活的技术架构,它不能绑定在特定的技术平台上,微服务不应该存在任何的局限性,同时还要确保有较强的兼容性。比如,虽然我们也使用Spring Boot开发微服务,但也允许使用其他更适合的开发框架或编程语言来实现微服务。再比如,我们目前通过ZooKeeper来实现服务注册,但也能轻松地切换为其他技术选型,对于整个应用程序而言,这些都是无感知的。微服务所提倡的理念就是,用最合适的技术以最高效的方式来解决实际应用中的问题。
经过两年多的实践过程,我们找到了一款能让微服务架构快速且稳定落地的解决方案,并将此方案的核心内容汇集成本书,希望该方案能给微服务世界带一点新的能量。
本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习轻量级微服务架构的全景视图,随后的各个章节将围绕微服务的日志、监控、通信、解耦、测试、配置六大方面进行展开。读者可亲自动手,从零开始搭建轻量级微服务架构,充分享受架构探险的乐趣。
本书是如何组织的?
第1章:轻量级的微服务。
本章将从宏观上描述轻量级微服务架构。首先我们将从架构与架构师开始讲起,简单回顾架构演进的过程与微服务的发展趋势。随后我们将探讨在搭建微服务架构之前需要准备的工作,认识微服务架构的“冰山模型”,介绍切分微服务边界的方法和技巧。最后我们将从部署与运行两个角度来观察微服务架构,并以一幅架构全景图来结束本章。
第2章:微服务日志。
本章将关注点放在微服务日志上。首先我们将从Spring Boot日志框架入手,使应用日志可以输出到Docker容器外部,以便我们可随时查看日志文件。随后我们将学习Docker日志驱动,使日志信息输出到Linux的Syslog中。最后我们将Syslog与ELK技术栈整合,搭建一款微服务的日志中心。
第3章:微服务监控。
本章将视角放在微服务监控方面。首先我们将学习Spring Boot应用程序自带的监控特性,接着将介绍Spring Boot Admin开源监控系统的使用方法。随后我们将集成InfluxDB、cAdvisor、Grafana等开源工具,搭建一款微服务的监控中心。最后我们将学习Zipkin工具的使用方法,将其用于微服务的追踪中心。
第4章:微服务通信。
本章将围绕微服务之间的通信来展开。首先我们将在Spring Boot应用程序中实现基于HTTP的同步调用,同时我们也会对比Spring RestTemplate、OkHttp、Retrofit等工具的使用方法。随后我们将使用gRPC框架实现基于RPC的同步调用,并将gRPC与Spring Boot进行整合。最后我们将亲自动手,搭建一款轻量级分布式RPC框架。
第5章:微服务解耦。
本章将使用消息队列的异步方式来解耦微服务调用问题。首先我们将对比ActiveMQ与RabbitMQ,它们是两款经典的开源消息队列。随后我们将使用RabbitMQ来实现请求应答模式,并通过RabbitMQ来实现RPC同步调用。最后我们将使用Event-Sourcing与MQ相结合,巧妙地解决分布式事务问题。
第6章:微服务测试。
本章将聚焦在微服务测试方面。首先我们将以Spring Boot应用程序为例,分别针对Service层与REST API进行单元测试。随后我们将使用Postman来充当REST API的测试工具,并结合Jenkins与Newman搭建一款REST API的自动化测试框架。最后我们将分别使用Swagger与apiDoc工具来自动生成REST API文档,并比较这两款工具的优缺点。
第7章:微服务配置。
本章将解决微服务的配置参数问题。首先我们将通过一些实例,快速学习Ansible自动化运维工具的使用方法。随后将Ansible作为微服务的配置中心,并将Jenkins与Ansible相结合,可用于优化我们现有的微服务部署框架。最后我们将使用Registrator所提供的自注册特性,实现微服务的平滑升级目标。
如何获取本书源码?
可通过以下链接下载本书源码。
如何参与线上互动?
欢迎加入“轻量级微服务架构”QQ群,申请加入时请注明“架构探险”。

目录

第1章 轻量级的微服务
1.1 微服务将变得轻量级
1.1.1 架构与架构师
1.1.2 架构演进过程
1.1.3 微服务架构发展趋势
1.2 微服务架构前期准备
1.2.1 认识微服务架构冰山模型
1.2.2 冰山下的微服务基础设施
1.2.3 根据业务切分微服务边界
1.3 轻量级微服务架构图
1.3.1 轻量级微服务部署架构
1.3.2 轻量级微服务运行架构
1.3.3 轻量级微服务全局架构
1.4 本章小结
第2章 微服务日志
2.1 使用Spring Boot日志框架
2.1.1 使用Spring Boot Logging插件
2.1.2 集成Log4J日志框架
2.1.3 将日志输出到Docker容器外
2.2 使用Docker容器日志
2.2.1 Docker日志驱动
2.2.2 Linux日志系统:Syslog
2.2.3 Docker日志架构
2.3 搭建应用日志中心
2.3.1 开源日志中心:ELK
2.3.2 日志存储系统:Elasticsearch
2.3.3 日志收集系统:Logstash
2.3.4 日志查询系统:Kibana
2.3.5 搭建ELK日志中心
2.4 本章小结
第3章 微服务监控
3.1 使用Spring Boot监控系统
3.1.1 Spring Boot自带的监控功能
3.1.2 Spring Boot Admin开源监控系统
3.2 搭建系统监控中心
3.2.1 时序数据收集系统:cAdvisor
3.2.2 时序数据存储系统:InfluxDB
3.2.3 时序数据分析系统:Grafana
3.2.4 集成InfluxDB + cAdvisor + Grafana
3.3 搭建调用追踪中心
3.3.1 开源调用追踪中心:Zipkin
3.3.2 追踪微服务调用链
3.3.3 追踪数据库调用链
3.4 本章小结
第4章 微服务通信
4.1 使用HTTP实现同步调用
4.1.1 使用Spring Boot开发服务端
4.1.2 使用Spring RestTemplate开发客户端
4.1.3 使用OkHttp开发客户端
4.1.4 使用Retrofit开发客户端
4.2 使用RPC实现同步调用
4.2.1 RPC通信原理
4.2.2 初步体验gRPC
4.2.3 Spring Boot集成gRPC
4.3 搭建分布式RPC框架
4.3.1 架构设计
4.3.2 搭建模块代码框架
4.3.3 开发RPC服务端
4.3.4 开发RPC客户端
4.4 本章小结
第5章 微服务解耦
5.1 使用MQ实现异步调用
5.1.1 使用ActiveMQ实现JMS异步调用
5.1.2 使用RabbitMQ实现AMQP异步调用
5.2 使用请求应答模式实现RPC调用
5.2.1 请求应答模式简介
5.2.2 使用RabbitMQ实现RPC调用
5.2.3 封装RabbitMQ的RPC代码框架
5.3 解决分布式事务问题
5.3.1 什么是Event-Sourcing
5.3.2 使用Event-Sourcing与MQ实现分布式事务控制
5.4 本章小结
第6章 微服务测试
6.1 使用Spring Boot单元测试
6.1.1 搭建待测应用程序框架
6.1.2 测试Service层
6.1.3 测试REST API
6.2 搭建REST API自动化测试框架
6.2.1 使用Postman手工测试REST API
6.2.2 使用Newman批量测试REST API
6.2.3 搭建REST API自动化测试框架
6.3 自动生成REST API文档
6.3.1 使用Swagger生成REST API文档
6.3.2 REST API文档的另一选择:apiDoc
6.4 本章小结
第7章 微服务配置
7.1 Ansible入门与实战
7.1.1 Ansible是什么
7.1.2 准备Ansible实战环境
7.1.3 Ansible实战
7.2 搭建服务配置中心
7.2.1 如何管理微服务中的配置
7.2.2 设计Ansible配置中心
7.2.3 动手实现自动化部署框架
7.3 自注册服务配置
7.3.1 目前服务注册存在的问题
7.3.2 使用Registrator实现服务自注册
7.3.3 微服务平滑升级解决方案
7.4 本章小结

产品特色