猜你喜欢
微服务架构实战

微服务架构实战

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

本书从大型网站的架构设计模式以及技术造型着手,以Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构。项目分层清晰,包括完备的质量和监控体系。依据敏捷开发的原则,快速迭代,以完整的示例实现整个CI/CD的流程,快速响应需求。在本书的最后,会精选在项目中应用的几个开源框架,以期读者能够在阅读完本书后,快速掌握并应用微服务相关的知识。

作者简介

张锋,北京航空航天大学软件工程硕士,资深架构师,有十多年管理和架构经验,在业界颇具威望和影响力。

曾就职于神州数据、亚信科技、中文在线及多家互联网公司,担任架构师及技术总监等职位,现在就职于中青旅,任架构组组长,曾成功管理和指导过三农综合服务信息平台、西北企业云服务平台、省级电信平台及多个互联网平台的架构升级改造。

拥有工信部认证高级信息系统项目管理师资格。


编辑推荐
适读人群 :本书不但适合初学者,而且对于团队的管理者及技术选型的架构师也有着非常大的参考意义。

从微服务的架构设计模式和技术造型入手,以Spring Boot 2、Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构

洞悉微服务的构建流程,从实战的角度介绍微服务使用的关键框架,依据敏捷开发的原则,快速迭代,以完整的示例实现整个CI/CD的流程,快速响应需求


前言

前言



从分布式服务到SOA,再到微服务,服务化的脚步一直在不断地前进。正所谓“分久必合,合久必分”,在企业高速发展的今天,单体架构已经很难适应业务的快速变化,微服务的出现,为应对快速变化的业务需求、冗长的开发周期提供了一种新的解决方案。它以模块化的思维应对快速变化的业务需求,使用比如自动化部署、自动化业务监控预警、调用链监控、容器化,以及快速开发等思想加快软件的开发周期,实现更快速、更高质量的交付,整体提高客户的满意度。

内容介绍

本书系统地介绍了微服务涉及的各种知识点,横跨软件开发的整个生命周期,采用目前前沿的技术进行知识点的展开。微服务是一个概念,就像SOA一样,可能在不同的环境中会产生不同的设计方案。但是总的来说,微服务是为了解决高并发、大数据量的问题而产生的分布式的综合系统解决方案。

本书的内容安排非常有层次感,对于软件开发和从业人员从整体上了解和掌握微服务所需要的知识点进行了全面的梳理。

本书可以分为概念篇、开发篇、运维篇和实战篇。

概念篇

首先从概念的角度出发,让读者对微服务的发展有一个感观的了解,然后从设计理念上给出一些建议。

第1章从微服务的起源和现实业务的角度探讨微服务,使读者能够对微服务有一个感观的认识。

第2章是针对微服务的设计理念进行整理,包括服务如何折分、前后端分离、CAP理论和CQRS等,是一个高层次的指导原则。

开发篇

开发篇以Java中常用的微服务框架Spring Boot为基础,介绍Spring Boot的快速开发,以及Docker技术的基础,并且完成两者的无缝结合。接着对Spring Cloud的整体架构进行介绍。

第3章详细地介绍Spring Boot的开发,包括使用它的优缺点,以及在企业级开发中常用的工具包的整合,包括面向切面编程、Web开发、文档管理和调度管理,最后结合Dubbo完成一个示例性的分布式工程。

第4章主要讲解Docker的基础操作,介绍微服务中所用到的容器相关的技术,最后给出通用的基于容器的私有云架构。

第5章对Spring Cloud实现微服务的几个重要框架进行展开描述,让读者了解注册中心、负载均衡、容错、分布式配置、网关和消息总线,能够完成开发层面的微服务架构。

第6章对Spring Cloud的非核心框架进行介绍,包括Consul、ZooKeeper、安全框架和数据流框架。

通过对以上几章的了解,读者应该能够从开发的角度基本掌握微服务的开发。

运维篇

在微服务中,涉及的不仅仅是开发,还会涉及很多的点,包括运维、测试、监控和日志管理。

第7章主要对测试和质量管理进行介绍,测试部分包括单元测试、A/B测试、冒烟和回归测试,质量管理部分主要使用静态代码分析,并且基于SonarQube对代码进行静态检查,以及分析代码的总体质量。

第8章对微服务的最佳实践JHipster进行系统的介绍,并且对JHipster部分内容做了处理,将在国内不是很流行的部分进行了处理,尽可能详细地介绍JHipster的应用和配置。

第9章主要对自动化部署进行介绍,因为微服务的目的不仅仅是简化开发,而且能够提高整个团队的运行效率。所以私服的使用和自动化运维就显得非常重要。

第10章主要讲解日志收集和APM监控,对于线上系统来说,出现问题的概率还是非常大的,如何快速定位并第一时间找到问题所在的点就显得非常重要。APM部分对常用的监控工具进行列举,重点介绍Pinpoint,对使用和邮件告警也进行了重点介绍。

通过以上几章的了解,读者应该能够充分理解DevOps的概念,并且了解微服务并不单纯是开发人员的工作,而是整个团队的协同合作。

实战篇

第11章通过对PiggyMetrics的全面讲解,让读者能够了解一个简单的微服务架构所包含的技术点和构建原则,并且实际部署微服务,完成业务的基础操作。

第12章对在微服务构建过程中可能涉及的技术点进行讲解,包括工作流引擎、规则引擎、调度系统、分布式配置及单点登录。

通过以上几章的学习,读者应该能够在技术选型的过程中扩展思路,了解更多的分布式业务涉及的扩展知识,并且有选择地应用到业务中。

勘误和支持

随着技术的进步,微服务的架构也会有不同的演化,就像Spring 5的发布一样,为前后端分离进一步奠定了基础。本书中涉及的内容大多是个人的理解和认知,难免有不足之处,所以本书中提及的知识点主要作为抛砖引玉之用,如果有错误之处,还请读者指正。

由于笔者水平有限,且编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有问题或者宝贵意见,欢迎发送邮件至邮箱[email protected],期待能够得到您的反馈。

致谢

首先要感谢我的家人,没有他们默默的支持,我不可能坚持完成本书的创作。

然后要感谢电子工业出版社博文视点的陈晓猛等编辑对本书内容的校对、勘正及反复核对,感谢你们的付出。

最后感谢在写作过程中给予我帮助的朋友们。


张 锋


目录

目录


第1章 微服务概述
1.1 什么是微服务
1.2 为什么微服务
1.2.1 区别
1.2.2 从单体应用说起
1.2.3 第一步切分
1.2.4 服务化所带来的问题
1.2.5 微服务的可扩展性
1.2.6 微服务与SOA的区别
1.3 常见的微服务组件
1.4 常用的微服务框架
1.4.1 Spring顶级项目
1.4.2 背景
1.4.3 社区活跃度
1.4.4 架构完整度
1.4.5 总结
1.5 微服务架构设计模式
1.6 如何实施微服务
1.7 小结
第2章 微服务设计原则
2.1 设计原则之分层架构
2.2 设计原则之统一通信协议
2.3 设计原则之单一职责
2.4 设计原则之服务拆分
2.5 设计原则之前后端分离
2.6 设计原则之版本控制
2.7 设计原则之围绕业务构建
2.8 设计原则之并发流量控制
2.9 设计原则之CAP
2.10 设计原则之EDA事件驱动
2.11 设计原则之CQRS
2.12 设计原则之基础设施自动化
2.13 设计原则之数据一致性
2.14 设计原则之设计模式
2.15 设计原则之DevOps
2.16 设计原则之无状态服务
2.17 小结
第3章 微服务之Spring Boot
3.1 一切从简单开始
3.2 快速集成第三方的Starter
3.3 降低开发复杂度之面向切面
3.3.1 前置通知
3.3.2 后置返回通知
3.3.3 后置异常通知
3.3.4 后置最终通知
3.3.5 环绕通知
3.3.6 AOP总结
3.4 并不复杂的持久化
3.4.1 单数据源
3.4.2 多数据源
3.4.3 JOOQ
3.4.4 事务处理
3.4.5 整合Redis
3.4.6 整合队列
3.4.7 操作MongoDB
3.5 Web开发
3.6 懒人的接口文档管理
3.7 优化的调度
3.8 健康是永恒的主题
3.9 强强联合之整合Dubbo
3.10 小结
第4章 微服务之Docker
4.1 Docker原理
4.2 更轻量级的虚拟化
4.3 三个概念理解Docker
4.3.1 镜像(Image)
4.3.2 容器(Container)
4.3.3 仓库(Repository)
4.4 Dockerfile定制一切
4.4.1 Dockerfile语法
4.4.2 Dockerfile命令
4.4.3 Dockerfile构建过程
4.4.4 构建Java环境
4.4.5 Dockerfile小结
4.5 Docker网络
4.5.1 网络模式
4.5.2 link
4.5.3 跨主机访问
4.6 Docker数据卷
4.6.1 数据卷
4.6.2 数据卷容器
4.7 Spring Boot与Docker
4.8 搭建自己的镜像仓库
4.8.1 安装和启动
4.8.2 使用
4.9 Kubernetes
4.10 私有云整体架构
4.11 小结
第5章 微服务之Spring Cloud
5.1 注册中心
5.1.1 常用的注册中心
5.1.2 Eureka介绍
5.1.3 服务发现
5.1.4 简单注册
5.2 负载均衡
5.2.1 Spring Cloud的负载实现
5.2.2 Ribbon
5.2.3 Feign
5.2.4 加入core
5.3 微服务容错(Hystrix)
5.3.1 雪崩的形成
5.3.2 应对方案
5.3.3 降级和熔断
5.3.4 Hystrix
5.3.5 集中监控
5.4 分布式配置中心
5.5 API网关
5.5.1 为什么需要网关
5.5.2 Zuul
5.6 消息总线(Spring Cloud Bus)
5.7 小结
第6章 微服务之Spring Cloud其他框架
6.1 Spring Cloud Consul
6.2 Spring Cloud ZooKeeper
6.3 Spring Cloud archaius
6.4 Spring Cloud Task
6.5 Spring Cloud Security
6.5.1 HTTP Basic Authentication
6.5.2 JWT
6.5.3 OAuth 2
6.5.4 Spring Cloud Security
6.6 Spring Cloud Sleuth
6.6.1 服务端
6.6.2 客户端
6.7 Spring Cloud Stream
6.8 Spring Cloud Data Flow
6.9 小结
第7章 微服务之自动化测试与质量管理
7.1 微服务测试
7.2 单元测试
7.2.1 单元测试及覆盖率评估
7.2.2 JUnit
7.2.3 Spring Boot单元测试
7.2.4 Mockito
7.3 API测试
7.3.1 Jmeter
7.3.2 压力测试
7.4 A/B测试
7.5 冒烟和回归测试
7.6 静态代码分析
7.6.1 Checkstyle
7.6.2 FindBugs
7.6.3 PMD
7.7 SonarQube质量监控
7.7.1 为什么使用
7.7.2 安装和使用
7.7.3 安装插件
7.7.4 运行流程
7.8 小结
第8章 微服务之JHipster
8.1 JHipster技术列表
8.1.1 客户端选项
8.1.2 服务端选项
8.1.3 部署选项
8.2 Angular简介
8.3 快速开始JHipster
8.3.1 安装
8.3.2 使用
8.3.3 构建单体应用
8.3.4 Entity sub-generator
8.3.5 开发和运行
8.3.6 插件安装
8.4 目录结构
8.5 构建微服务应用
8.5.1 注册中心
8.5.2 创建微服务网关
8.5.3 Traefik
8.5.4 JHipster UAA
8.5.5 构建微服务应用
8.6 基础配置
8.6.1 JHipster属性配置
8.6.2 作为Maven项目
8.6.3 数据库
8.6.4 DTO
8.6.5 分页
8.6.6 文档
8.7 小结
第9章 微服务之自动化部署
9.1 私有仓库搭建
9.1.1 Nexus介绍
9.1.2 安装与配置
9.1.3 在项目中使用
9.2 Ansible
9.3 持续集成
9.3.1 持续集成流程
9.3.2 Jenkins介绍与安装
9.3.3 Maven介绍
9.3.4 Jenkins系统设置
9.3.5 集成Sonar
9.3.6 构建工程
9.3.7 配置测试
9.4 灰度发布
9.5 小结
第10章 微服务之日志收集与监控
10.1 ELK搜集与分析
10.1.1 工作流程
10.1.2 日志格式
10.1.3 平台搭建
10.2 系统监控
10.2.1 监控策略和监控对象
10.2.2 进程监控
10.2.3 数据波动监控
10.2.4 常用监控命令
10.3 运维监控
10.3.1 Zabbix
10.3.2 Open-Falcon
10.4 APM监控
10.4.1 Pinpoint
10.4.2 SkyWalking
10.4.3 Zipkin
10.4.4 CAT
10.5 Pinpoint的安装与使用
10.5.1 Pinpoint的安装
10.5.2 Pinpoint的使用
10.5.3 Pinpoint实现邮件告警
10.6 小结
第11章 完整示例
11.1 安装Lombok
11.2 PiggyMetrics
11.3 整体架构
11.3.1 配置Spring Cloud Config
11.3.2 授权服务
11.3.3 API网关
11.3.4 服务发现
11.3.5 负载均衡器、断路器和HTTP客户端
11.3.6 监控仪表盘
11.3.7 日志分析
11.4 安装和运行
11.4.1 配置Maven并导入工程
11.4.2 安装
11.4.3 使用
11.4.4 如何变成自己的项目
11.5 小结
第12章 微服务核心功能推荐
12.1 工作流引擎
12.1.1 Activiti
12.1.2 UFLO
12.2 规则引擎
12.2.1 Drools
12.2.2 URule
12.3 调度系统
12.4 消息推送
12.5 网关中间件
12.5.1 Orange
12.5.2 Kong
12.5.3 Zuul
12.6 分库分表中间件
12.6.1 Sharding-JDBC
12.6.2 MyCat
12.7 报表引擎
12.8 数据处理
12.8.1 Spring Batch
12.8.2 Kettle
12.9 并发编程
12.10 分布式配置
12.10.1 Disconf
12.10.2 Apollo
12.11 CAS
12.12 WebFlux
12.13 小结

产品特色