架构探险:轻量级微服务架构(下册)
  • 推荐1
  • 收藏10
  • 浏览5.4K

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

黄勇 (作者) 

  • 书  号:978-7-121-32447-5
  • 出版日期:2017-08-26
  • 页  数:340
  • 开  本:16(185*235)
  • 出版状态:上市销售
纸质版 ¥79.00
本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习到轻量级微服务架构的全景视图,随后的各个章节将围绕微服务的日志、监控、通信、解耦、测试、配置等六大方面进行展开。读者可亲自动手,从零开始搭建轻量级微服务架构,充分享受架构探险的乐趣。
架构犹如探险,踩坑在所难免。技术不能肤浅,眼界必须超前。
现任上海特赞科技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所提供的自注册特性,实现微服务的平滑升级目标。
如何获取本书源码?
可通过以下链接下载本书源码。
http://git.oschina.net/huangyong/msa-book-2
如何参与线上互动?
欢迎加入“轻量级微服务架构”QQ群,申请加入时请注明“架构探险”。
群号:528265294
此外,请关注“架构探险图书”微信公众号,可免费获取关于本书后续的更多内容。

致谢
首先需要感谢的是我们的技术团队,如果没有你们所提供的实践经验,这本书也不可能问世。我很庆幸自己能加入特赞技术团队,也很感激你们对我一如既往的支持与鼓励。在微服务实践这条路上,你们才是专家,我只是把你们的宝贵经验整理出来,希望能让更多的人从中受益,我想这也是我们特赞技术团队的共同理想。
自从去年9月上册出版以后,很多读者都在问“下册什么时候出版?”,我原本以为是今年上半年就能完成的事情,没想到计划不如变化,公司有更加重要的工作需要我去完成,因此写书的计划也被频繁打断。直到一年后的今天,下册才能与你们见面。在此,我先对你们说声抱歉,也感谢你们一直对我的关注与等待,希望下册能给你们带来更多的帮助。
最近这一年中,我在很多公开场合下分享过关于微服务的话题,在此向曾经帮助我的技术专家们致谢,和你们聊技术是一件兴奋的事情,让我更加深刻地认识到微服务的本质,也让我对我们技术团队现在搭建的微服务架构更有信心了。同时也感谢你们对这本书所做的推荐,希望我的全力以赴能够配得上你们的称赞。
如果说写完一本书全是作者的功劳,那就大错特错了。没有好的出版社,没有优秀的编辑,我想再好的书也会让大家失望。感谢本书编辑陈晓猛先生对本书的辛勤付出,我在晓猛身上学会了谨慎与专注,这是我和晓猛第三次合作,每次合作都能让我感到,写书其实是一件快乐的事情,我很享受这个过程。
最后我想把感谢的话留给我的妻子和女儿,感谢你们一路陪伴着我,我们共同见证着对方的成长。这本书能够顺利完成,绝对离不开你们努力,因为你们给了我一个幸福而美满的家庭,让我能够将心思沉醉在写作之中。虽然最后我才感谢你们,但你们在我心中永远是最重要的人,永远无法取代。

黄勇
2017年7月18日于上海

目录

第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 本章小结

本书勘误

印次
  • 页码:11  •  行数:7  •  印次: 1

    图1-10修改为如下

    陈晓猛 提交于 2017/9/28 10:05:16
    陈晓猛 确认于 2017/9/28 10:06:44
  • 页码:13  •  行数:1  •  印次: 1

    图1-12修改为下图

    陈晓猛 提交于 2017/9/28 10:05:55
    陈晓猛 确认于 2017/9/28 10:06:55

读者评论

  • 下册? 有上册吗?

    硕仔发表于 2017/10/9 11:54:25
    • 有的,http://www.broadview.com.cn/book/2630

      陈晓猛发表于 2017/10/26 15:32:48
  • 什么时候把书中代码放出来啊!

    hilozwj发表于 2017/8/29 22:08:42
    • 书前言处有写地址,本页面下载资源处也可以下载

      陈晓猛发表于 2017/8/30 9:37:42

图书类别

相关博文

推荐用户

相关图书

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh

程超 (作者)

近年来微服务架构已经成为大规模分布式架构的主流技术,越来越多的公司已经或开始转型为微服务架构。本书不以某一种微服务框架的使用为主题,而是对整个微服务生态进行系统...

¥54.00

微服务架构实战

张锋 (作者)

本书从大型网站的架构设计模式以及技术造型着手,以Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构。项目分层清晰,包括完备的质量和监控...

¥89.00

Spring Cloud微服务实战

翟永超 (作者)

本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码...

¥59.00

Node.js微服务

David Gonzalez (作者) 赵震一 (译者)

本书对如何采用Node.js及其生态工具进行微服务开发的最佳实践做了全面的介绍,内容包括对微服务架构基本概念及设计原则的讲解,以及如何采用Node.js搭配Se...

¥69.00

Java微服务

卢涛 (作者) 卢涛 卢涛 (译者)

微服务是利用云平台开发企业应用程序的最新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到最佳利...

¥69.00