云原生构建
更新日期:2024-07-13 00:59:56
书店:浙江平湖新华书店图书专营店
出版时间:2021-11
浏览量:1128
价格:0.0¥

书籍下载

内容介绍

内容提要:
        本书力求对构建云原生应用做一个较为完整的梳理,意在建立云原生应用编程技术的知识体系和对云原生的理解。 
    本书从单体应用编程基础开始,带领读者一步步地完成单体应用并将单体应用改造成微服务,然后进行容器化以及容器编排,循序渐进地构造云原生应用。本书着重于经验分享和总结,同时也会有相关的概念解析以及代码示例,希望能够帮助大家少走弯路,共同学习与进步。 
    本书主要面向有一定基础和工作经验的软件工程师和架构师,旨在通过梳理云原生应用编程中的关键和实用知识点,并伴有相应的概念解析及实践案例,进而更快地建立起自身对云原生应用的理解以及感受传统应用演变为云原生应用的过程变化。

作者简介:
邹炎多年从事互联网Java开发与架构工作,拥有丰富的系统架构经验,曾参与过多个大型分布式网站架构设计与开发,指导操作过多个互联网系统的微服务改造,担任过所在企业的技术讲师和校/社招面试官;对分布式与高并发、云原生有着较为深入的研究和理解。目前从事系统架构和企业架构设计评审工作,对安全性、高可用、高性能、云原生系统设计与开发有着丰富的实战经验。谢邵虎曾于GE消费者金融集团(GECF)OO研发中心担任系统架构师和TechLeader;拥有十年以上后端开发经验,精通分布式系统设计和开发,对分布式系统实现及设计理念有独到的见解,多年系统架构经验。参与开发/架构多个大型项目,对SpringCloud、微服务、持续集成、持续交付、容器技术、大数据生态圈常用组件均有涉猎。朱明杰拥有丰富的Java开发经验,一直工作在编程一线,作为开发主力参与过多个高并发、微服务架构的大型项目,现已在线上稳定运行,对微服务领域有着较为深入的理解。

目录:
OO章    何为云原生,云原生为何而生 
    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.4    如何构造云原生应用 
        1.4.1    云原生应用设计理念 
        1.4.2    云原生应用的12要素 
        1.4.3    云原生应用的构造步骤 
    1.5    本章小结 
第2章    从0到1——单体应用 
    2.1    单体应用介绍 
        2.1.1    单体应用:不可分割的软件架构 
        2.1.2    单体应用的优缺点 
        2.1.3    单体应用的适用场景 
    2.2    单体应用实践——微商城项目介绍与设计 
        2.2.1    项目背景 
        2.2.2    开发工具与技术栈 
    2.3    项目开发前——Spring Boot概念 
        2.3.1    Spring Boot:快速配置开发的脚手架 
        2.3.2    Spring Boot Starters:依赖关系描述符 
        2.3.3    Spring Cloud:系列框架的有序集合 
        2.3.4    Spring、Spring MVC、Spring Boot、Spring Cloud之间的联系与区别 
        2.3.5    Spring Initializr:项目结构创建工具 
    2.4    项目开发——微商城搭建实践 
        2.4.1    使用Spring Initializr初始化项目 
        2.4.2    项目分层——持久层 
        2.4.3    项目分层——业务逻辑层 
        2.4.4    项目分层——控制层 
        2.4.5    添加用户认证拦截 
        2.4.6    配置H2数据库 
        2.4.7    使用Swagger自动生成接口文档 
        2.4.8    配置log 
        2.4.9    启动项目并进行接口测试 
    2.5    项目开发——应用构建与部署 
        2.5.1    打包类型选择——jar与war 
        2.5.2    使用Maven构建可运行的jar包 
        2.5.3    使用Maven构建可外部部署的war包 
        2.5.4    部署jar/war包并启动应用程序 
    2.6    本章小结 
第3章    拆分单体应用方法及微服务设计模式 
    3.1    不仅仅是编码——馓服务介绍 
        3.1.1    两面性:微服务的优缺点 
        3.1.2    项目需要从单体应用切换成微服务吗 
    3.2    单体应用拆分成微服务设计理论 
    3.3    微服务场景下事务控制的典型解决方案 
        3.3.1    二阶段提交 
        3.3.2    三阶段提交 
        3.3.3    服务化的二阶段提交(TCC) 
        3.3.4    基于消息的O终一致性方案 
        3.3.5    如何选择事务控制解决方案 
    3.4    微服务架构常见的设计模式 
        3.4.1    独享数据库 
        3.4.2    事件溯源 
        3.4.3    命令查询职责分离 
        3.4.4    外部化配置 
        3.4.5    API网关 
        3.4.6    服务发现 
        3.4.7    断路器 
        3.4.8    健康检查 
        3.4.9    日志聚合 
        3.4.10    日志审计 
        3.4.11    分布式追踪 
        3.4.12    访问令牌 
    3.5    本章小结 
第4章    单体应用微服务改造实践 
    4.1    单体应用内分隔服务 
        4.1.1    创建划分服务的包 
        4.1.2    查看依赖结构矩阵 
        4.1.3    改造服务之间的相互依赖 
    4.2    外部化配置 
        4.2.1    生成Config Server基本框架 
        4.2.2    配置Config Server 
        4.2.3    启用Config Server 
        4.2.4    启动Config Server 
        4.2.5    配置中心客户端 
    4.3    服务注册与发现 
        4.3.1    生成Eureka Server基本框架 
        4.3.2    配置Eureka Server 
        4.3.3    启用Eureka Server 
        4.3.4    更新配置中心全局配置 
        4.3.5    启动Eureka Server 
    4.4    健康检查 
    4.5    熔断 
    4.6    服务追踪 
        4.6.1    运行Zipkin Server 
        4.6.2    应用服务集成Zipkin 
    4.7    API网关 
        4.7.1    生成API Gateway基本框架 
        4.7.2    配置API网关 
        4.7.3    启动API网关 
    4.8    日志聚合与分析 
        4.8.1    分布式搜索和分析引擎Elasticsearch 
        4.8.2    分析和可视化平台Kibana 
        4.8.3    数据收集引擎Logstash 
        4.8.4    应用服务集成ELK 
    4.9    微商城完全改造成微服务架构 
        4.9.1    微商城总体微服务架构图 
        4.9.2    按照应用内分隔服务理论彻底将业务服务拆分 
        4.9.3    微商城微服务启动实践 
    4.10    本章小结 
第5章    微服务进阶——容器化技术 
    5.1    容器化技术介绍 
        5.1.1    容器化:应用程序级别的虚拟化 
        5.1.2    容器:标准化的软件单元 
    5.2    开源的应用容器引擎Docker 
        5.2.1    运行和管理容器的核心软件Docker Engine 
        5.2.2    Docker容器的特点 
        5.2.3    为什么要使用Docker 
        5.2.4    容器与虚拟机的区别 
    5.3    Docker架构 
        5.3.1    Docker守护进程 
        5.3.2    Docker客户端 
        5.3.3    Docker仓库 
        5.3.4    Doeker对象 
        5.3.5    底层技术支持 
    5.4    Docker安装 
        5.4.1    卸载旧版本 
        5.4.2    安装方法的选择 
        5.4.3    使用Docker仓库进行安装 
        5.4.4    运行OO个容器 
    5.5    镜像和容器的基本操作 
        5.5.1    获取镜像 
        5.5.2    列出镜像 
        5.5.3    删除镜像 
        5.5.4    运行容器 
        5.5.5    列出容器 
        5.5.6    查看容器日志 
        5.5.7    在运行的容器中执行命令 
        5.5.8    启停容器 
        5.5.9    删除容器 
        5.5.10    删除不再使用的Docker对象 
    5.6    本章小结 
第6章    Docker实践及容器化微服务 
    6.1    Dockerfile方式下镜像的定义、自动构建和运行 
        6.1.1    镜像构建图纸Dockerfile 
        6.1.2    使用Dockerfile定制镜像 
        6.1.3    创建一个Java应用 
        6.1.4    构建镜像 
        6.1.5    运行容器 
    6.2    发布镜像 
        6.2.1    私有库与公共库 
        6.2.2    镜像的标记、发布与运行 
    6.3    使用maven插件自动构建镜像 
        6.3.1    早期的Spotify Maven插件 
        6.3.2    便捷的GoogleContainerTools jib Maven插件 
        6.3.3    Spring Boot官方的Spring Boot Maven插件 
    6.4    部署Docker服务 
        6.4.1    什么是Docker Compose 
        6.4.2    安装Docker Compose 
        6.4.3    实践Docker Compose:创建docker-compose.yml 
        6.4.4    集群化部署 
    6.5    容器化微服务 
        6.5.1    添加Jib Maven插件 
        6.5.2    构建镜像 
        6.5.3    微服务容器化运行 
    6.6    本章小结 
第7章    容器编排——Kubernetes 
    7.1    容器编排引擎Kubernetes 
        7.1.1    Kubernetes优点与适用场景 
        7.1.2    Kubernetes核心组件:控制平面与Node 
    7.2    Kubernetes核心概念 
        7.2.1    逻辑分组——命名空间 
        7.2.2    O小单元——Pod 
        7.2.3    附加在对象之上的标签、注解与标签选择器 
        7.2.4    工作负载——控制器 
        7.2.5    持久化——存储 
        7.2.6    集群访问_暇务 
        7.2.7    保存配置参数——配置 
    7.3    Minikube安装 
        7.3.1    Windows系统下安装Minikube 
        7.3.2    macOS系统下安装Minikube 
    7.4    Kubernetes集群安装 
    7.5    Kubernetes常用命令 
    7.6    本章小结 
第8章    基于Kubernetes、Docker和微服务构建云原生应用 
    8.1    部署MySQL到Kubernetes实践 
        8.1.1    创建ConfigMap以保存数据库名称 
        8.1.2    创建Secret以保存敏感信息 
        8.1.3    使用MySQL资源文件创建资源对象 
    8.2    部署Spring Boot应用到Kubernetes实践 
        8.2.1    使用ConfigMap保存配置文件 
        8.2.2    使用Spring Cloud Kubernetes访问配置数据 
        8.2.3    使用Fabric8-Maven-Plugin将应用部署到Kubernetes 
        8.2.4    访问应用程序 
    8.3    构建云原生应用实践 
        8.3.1    服务注册与发现 
        8.3.2    负载均衡 
        8.3.3    统一配置中心 
        8.3.4    健康检查 
        8.3.5    API网关 
        8.3.6    服务追踪 
        8.3.7    日志聚合 
    8.4    本章小结 
第9章    回首与展望:云原生心路历程 
    9.1    微商城项目云原生演进总结 
        9.1.1    单体应用阶段 
        9.1.2    微服务阶段 
        9.1.3    云原生阶段 
    9.2    云原生的生态 
        9.2.1    云原生路线图 
        9.2.2    云原生全景图 
    9.3    云原生未来的展望 
        9.3.1    服务网格 
        9.3.2    无服务器 
致谢