新書推薦:
《
剑桥意大利戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
740.0
《
教育何用:重估教育的价值
》
售價:NT$
299.0
《
理想城市:环境与诗性
》
售價:NT$
390.0
《
逆风翻盘 危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道
》
售價:NT$
625.0
《
工业互联网导论
》
售價:NT$
445.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
形而上学与测量
》
售價:NT$
340.0
|
編輯推薦: |
本书结合实际生产项目,详细介绍从单体架构过渡到微服务容器化的分布式架构的全流程方法,囊括Spring Cloud、Docker、Rancher、Prometheus和Kubernetes等技术。
|
內容簡介: |
微服务和Docker容器技术是目前分布式架构中常用的主流技术,结合Kubernetes强大的容器服务编排与调度能力,中小企业能够简单快速地构建自己的分布式互联网架构系统。本书结合实际生产项目的架构重构过程和经验,详细介绍从单体架构过渡到微服务容器化的分布式架构的各个方面,主要包括微服务开发和运维技术栈的选型、Spring Cloud微服务开发、Rancher和Kubernetes生产离线环境下的安装与部署、微服务的容器化与服务编排、日志调用链的采集和展示、基于Prometheus的系统监控,以及微服务的持续集成等要点。本书基于Spring Boot、Spring Cloud、Docker、Rancher、Kubernetes等技术,主要提供从设计、开发、部署到运维的微服务容器化的生产环境整体解决方案。
|
關於作者: |
资深程序员、架构师。从事软件开发设计十余年,现就职于中国联通电子商务中心,集团IT专家人才。主导电信运营商某中台系统的架构重构、微服务、容器化的设计开发和落地工作。主要技术领域是分布式系统架构设计、微服务设计与开发、容器化部署与服务编排和容器云计算等。
|
目錄:
|
第1章 单体架构与微服务架构 1
1.1 背景介绍 2
1.2 单体架构 3
1.2.1 单体架构的特点 3
1.2.2 单体架构的优点 4
1.2.3 单体架构的缺点 4
1.3 微服务架构 4
1.3.1 微服务架构的特点 6
1.3.2 微服务架构的优点 6
1.3.3 微服务架构的缺点 6
1.4 微服务拆分 7
1.4.1 微服务设计原则 7
1.4.2 微服务拆分原则 8
1.5 微服务开发原则 9
1.5.1 微服务命名 9
1.5.2 项目依赖配置 9
1.5.3 配置文件 10
1.5.4 代码命名 10
1.6 本章小结 11
第2章 Spring Boot微服务开发 12
2.1 微服务框架 13
2.1.1 Dubbo服务框架 13
2.1.2 Spring Cloud微服务框架 15
2.1.3 Dubbo服务框架和Spring Cloud微服务框架的对比 17
2.2 技术栈选型 17
2.3 搭建开发环境 19
2.3.1 安装开发软件 19
2.3.2 Maven配置 20
2.3.3 IDE配置 21
2.4 编写框架代码 22
2.4.1 创建Maven工程 22
2.4.2 创建微服务模块 24
2.4.3 微服务代码结构 26
2.5 编写业务代码 29
2.5.1 Controller文件 30
2.5.2 Mapper文件 31
2.5.3 Service文件和ServiceImpl文件 31
2.6 打包与测试 33
2.6.1 编译打包 33
2.6.2 运行测试 35
2.7 本章小结 36
第3章 搭建微服务运行环境 37
3.1 运行环境概述 38
3.2 搭建开发环境 38
3.2.1 IDE环境 40
3.2.2 非IDE环境 41
3.3 搭建测试环境 41
3.3.1 非容器化环境 41
3.3.2 容器化环境 42
3.4 搭建生产环境 43
3.5 切换运行环境 45
3.6 本章小结 45
第4章 Rancher和Kubernetes离线部署 46
4.1 下载离线文件 47
4.1.1 下载Docker安装文件 47
4.1.2 下载docker-compose文件 48
4.1.3 下载Harbor安装文件 48
4.1.4 下载Rancher离线文件 49
4.2 创建CA证书 51
4.3 Docker离线安装 52
4.3.1 安装Docker 52
4.3.2 自定义Docker目录 53
4.3.3 创建用户eos 54
4.4 Harbor离线安装 54
4.4.1 配置docker-compose 54
4.4.2 载入Harbor镜像 55
4.4.3 配置Harbor 56
4.4.4 启动Harbor 57
4.4.5 创建用户和项目 58
4.5 Docker登录设置 61
4.5.1 配置Harbor证书 61
4.5.2 登录Docker 62
4.6 Rancher离线安装 62
4.6.1 载入Rancher镜像 63
4.6.2 安装Rancher 65
4.7 Kubernetes安装 66
4.7.1 配置私有仓库 66
4.7.2 添加Control节点 67
4.7.3 添加Worker节点 71
4.7.4 配置kubectl客户端 74
4.8 本章小结 76
第5章 日志采集 78
5.1 日志采集模型 79
5.2 配置微服务日志 80
5.3 容器日志采集 81
5.4 日志汇集 82
5.4.1 日志格式 83
5.4.2 配置Filebeat 84
5.4.3 配置Logstash 86
5.4.4 配置Elasticsearch 91
5.5 日志展示 95
5.5.1 配置Kibana 95
5.5.2 启动和关闭Kibana 96
5.5.3 Kibana索引设置 96
5.5.4 展示Kibana图形化 98
5.6 本章小结 108
第6章 调用链跟踪 109
6.1 调用链概述 110
6.1.1 系统完整调用链 111
6.1.2 调用过程追踪 111
6.2 Spring Cloud调用链模型 112
6.2.1 Sleuth组件 112
6.2.2 Zipkin组件 114
6.2.3 Spring Cloud调用链跟踪 115
6.3 调用链跟踪配置 116
6.3.1 微服务配置 116
6.3.2 Zipkin服务端配置 120
6.4 调用链跟踪展示 124
6.4.1 Zipkin图形化展示 125
6.4.2 Kibana图形化展示 133
6.5 本章小结 136
第7章 熔断器 137
7.1 熔断器概述 138
7.1.1 熔断器介绍 138
7.1.2 Hystrix介绍 138
7.2 熔断器配置 139
7.3 熔断器使用 140
7.3.1 EnableCircuitBreaker注解 140
7.3.2 HystrixCommand注解 141
7.3.3 Fallback函数 142
7.4 熔断器监控 144
7.5 本章小结 145
第8章 容器化与服务编排 146
8.1 容器化与服务编排概述 147
8.1.1 Docker介绍 147
8.1.2 Docker与虚拟机 148
8.1.3 服务编排与调度 149
8.2 构建基础镜像 149
8.2.1 母镜像的选择 150
8.2.2 基础镜像的特点 151
8.2.3 生成基础镜像 151
8.3 构建业务镜像 154
8.3.1 微服务打包 154
8.3.2 镜像构建的Dockerfile文件 156
8.3.3 镜像集成构建 157
8.4 服务编排 161
8.4.1 服务创建 161
8.4.2 服务版本升级 165
8.4.3 参数配置 166
8.4.4 服务版本降级 167
8.5 目录挂载 168
8.5.1 创建持久化卷 169
8.5.2 绑定持久化卷 170
8.5.3 挂载持久化卷 170
8.6 环境变量 171
8.7 管理Config Map 172
8.7.1 创建Config Map 172
8.7.2 使用Config Map 173
8.8 本章小结 175
第9章 系统监控 176
9.1 系统监控概述 177
9.1.1 主机监控 177
9.1.2 安全监控 179
9.1.3 中间件监控 181
9.1.4 业务监控 183
9.1.5 容器监控 184
9.1.6 监控工具 184
9.2 Kubernetes监控 185
9.3 Node Exporter组件 187
9.4 Prometheus组件 191
9.4.1 Prometheus组件的特征 191
9.4.2 Prometheus组件的架构 193
9.4.3 Prometheus组件的部署 194
9.5 Grafana组件 206
9.5.1 Grafana组件介绍 206
9.5.2 Grafana组件的部署 207
9.5.3 Grafana组件的展示 209
9.6 本章小结 211
第10章 持续集成部署 212
10.1 持续集成部署的概念 213
10.1.1 持续集成 213
10.1.2 持续部署 213
10.2 持续集成部署的模型 214
10.3 基于Jenkins的CICD 215
10.3.1 GitLab代码分支管理 215
10.3.2 CICD模型 215
10.3.3 CICD流程 216
10.3.4 CICD实践 218
10.4 本章小结 220
|
內容試閱:
|
序一
在计算机技术日新月异的今天,层出不穷的新技术推动了生产力的发展,也推动了整个社会的进步。软件架构从单体架构到分布式架构,从SOA架构到微服务架构,再到服务网格。数据库从Oracle包打天下到MySQL大行其道,再到内存数据库、NoSQL数据库遍地开花。容器编排调度技术从Mesos、Swarm、Kubernetes三足鼎立,到最终Kubernetes一统天下。工欲善其事,必先利其器。在互联网转型的大潮中,需要在思想、方法、技术等方面全面转型。互联网架构的高可靠、高并发、高扩展与低耦合,共同创造了互联网应用的无限可能。
微服务的核心思想是将整个系统拆分为多个相互独立的业务,各模块可以独立地开发、测试、部署、运行和运维。这种低耦合、高内聚的灵活特性正是所有架构设计人员所期盼的。因此,微服务架构在短时间内便得到大型互联网企业的青睐,成为打造复杂互联网应用的一把利器。Kubernetes作为目前主流的容器编排调度平台,从新生事物逐渐发展成为影响全球IT技术的基础设施平台,更推动了微服务架构、云原生应用、服务网格等热门技术的普及和落地。
本书内容循序渐进,概念清晰明了,由浅入深,从易到难,为读者呈现了一幅包括微服务、容器化及技术实践在内的全景图。本书融合了作者在企业推广实施微服务的诸多经验,不但理论架构完整,而且包含典型的实践案例。
目前,大数据、云计算、物联网、人工智能、区块链等技术遍地开花,借助5G技术的翅膀,我们定能展翅翱翔!
黄文良
中国联通集团首席业务创新官 电子商务中心总经理
序二
不断增长的用户访问量,快速多变的业务需求,随之带来的资源高效利用和敏捷开发迭代需求,对于开发人员和运维人员来说都是新的挑战。为了解决应用快速部署、资源弹性使用问题,容器化和微服务等新技术正在不断深入人心。Docker容器技术、Google的Kubernetes和Mesosphere的Mesos等分布式互联网架构技术应运而生并日益成熟。DevOps理念正在不断得到业界认同和落地实践。
本书作者尹为强是我多年的老同事,是一位多年来潜心研究互联网架构新技术的资深研发工程师,在云化架构、容器化微服务等方面有独特的见解和心得体会,并在实际生产系统中得到了成功的应用。现在他利用业余时间将工作中形成的宝贵经验汇集成册同大家分享,可以使有志学习容器化和微服务方面的技术爱好者少走弯路,这是一件值得庆贺的好事。
本书有两大特点:一是理论知识论述深入浅出、通俗易懂;二是内容基于作者在设计互联网亿级用户的高并发、分布式架构平台过程中的实际经验和深刻总结。每个关键知识点都并非纸上谈兵,而是有详细的实操案例,具有很强的实战指导意义。在实际开发工作中,人们经常遇到诸多挑战,如开发环境和生产环境保持一致、大规模应用的快速部署、服务平滑升级、应用的微服务化拆分、微服务编排和自动扩缩容、资源的弹性使用、容器化集群的高效管理等。通过阅读本书,人们可以很好地应对这些挑战。本书可以作为初级和中级开发人员、架构师、技术经理等人员的学习参考书。
赵锡成
中国联通集团电子商务中心软件开发部总监
前言
微服务的概念最早是在2011年5月的软件架构会议上提出的,Martin Fowler于2014年全面阐释了微服务架构。Docker作为一种容器化技术诞生于2013年的开源项目,如今,Docker已经成为容器技术领域的领头羊。Kubernetes这个名字起源于古希腊,是舵手、罗盘的意思。Google于2014年6月推出Kubernetes(Borg 的开源版本),并于2015年7月推出Kubernetes v1.0版本。微服务、Docker和Kubernetes涵盖了系统开发、运行环境与编排调度技术,是目前分布式系统架构中主流的技术栈。
为什么写本书
如今,无论是开发人员、运维人员还是技术管理者,言系统架构必谈微服务和容器化,必谈分布式和互联网架构。但是对于大多数IT从业者来说,微服务、容器化、Kubernetes等涉及很多新技术,如果完全摸索着去学习,无形中会增加学习时间,并延长系统的新架构改造周期,而且其他人遇到的问题还要重新解决。
笔者也曾遇到相同的问题,微服务、容器化和Kubernetes相关技术栈过于庞大,在自行摸索过程中,由于主机环境、软件版本、参数配置、网络模式等存在一定的差异,所以其他人分享的经验无法复用。笔者在进行订单系统进行微服务、容器化的新架构开发和升级过程中,总结和提炼了一些经验与注意事项,将这些内容加以整理并固化形成本书,希望对读者的实践有所帮助。
对于微服务开发工程师、容器化和Kubernetes运维工程师、系统架构师、技术管理者等来说,本书不但能够引导他们少走弯路,而且能够给予他们系统架构、技术栈选型等方面的参考。阅读本书,读者能够使单体架构的系统简单快捷地进行微服务容器化的架构升级,从而使新项目能够基于微服务容器化的新架构迅速地开发、部署和运维。
本书主要内容
本书共包括10章,以微服务、容器化、Kubernetes、Rancher等的概念、解决方案及生产实践操作为基础和主线,进行了易于理解和上手操作的讲解。
第1章至第3章主要围绕微服务开发展开:从单体架构和微服务架构的特点、两者之间的差异开始,介绍了如何拆分微服务;然后介绍微服务开发的技术框架选型,以及微服务开发中的代码编写;最后介绍了微服务运行的3种运行环境,以及每种运行环境如何配置参数等。
第4章主要围绕微服务的容器化部署和生产展开:详细介绍在离线的生产环境内网中,如何快速、便捷地部署和管理Kubernetes集群,如何创建安全的数字证书,以及如何创建私有镜像仓库等。
第5章至第7章主要围绕微服务间的调用展开:首先介绍了基于ELK组件的日志采集模型及其在生产中的应用;然后介绍了微服务间调用链的概念、调用链模型及调用链的动态跟踪;最后介绍了服务间调用的熔断器,为服务调用提供一种稳定、可靠的容错和自保护机制。
第8章主要围绕微服务到容器化的生产构建展开:从精简、安全、标准化的基础镜像构建到业务镜像构建,再到生产环境中服务编排及特定服务涉及的目录挂载、环境变量设置等。
第9章和第10章主要围绕系统监控、持续集成部署展开:介绍了系统监控的类型、范围,以及Exporter Prometheus Grafana的监控模型体系。系统持续集成部署部分涉及基于Jenkins的自动编译、打包、部署的概念和生产实践。
致谢
首先要感谢我的家人给予我的理解和坚定支持。特别感谢我的妻子,她的理解、包容和支持使我能够全身心投入书稿的编写工作。
同时,衷心感谢电子工业出版社博文视点的宋亚东为我耐心讲解书籍出版要求以及书稿编写的注意事项,并且基于作者的角度提供了诸多帮助,尽量减轻作者工作量。他工作严谨,技术理解深刻,对书稿质量把控严格,还多次邀请专家对本书提出有益意见,对本书的修改和完善起到了重要作用。
由于作者水平有限,书中难免存在不足之处,敬请广大读者批评指正。
尹为强
|
|