本书从大型网站的架构设计模式以及技术造型着手,以Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构。项目分层清晰,包括完备的质量和监控体系。依据敏捷开发的原则,快速迭代,以完整的示例实现整个CI/CD的流程,快速响应需求。在本书的最后,会精选在项目中应用的几个开源框架,以期读者能够在阅读完本书后,快速掌握并应用微服务相关的知识。
概念篇详细阐述微服务的由来和设计要点。开发篇介绍Spring Boot、Docker和Spring Cloud应用于微服务的案例,并且附有源代码。运维篇从测试、快速开发、质量管理、自动化运维和监控的角度介绍微服务涉及的知识点。实战篇将企业级开发中涉及的内容尽可能详细地列出。
前言
从分布式服务到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的发布一样,为前后端分离进一步奠定了基础。本书中涉及的内容大多是个人的理解和认知,难免有不足之处,所以本书中提及的知识点主要作为抛砖引玉之用,如果有错误之处,还请读者指正。
由于笔者水平有限,且编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有问题或者宝贵意见,欢迎发送邮件至邮箱cloudskyme@163.com,期待能够得到您的反馈。
致谢
首先要感谢我的家人,没有他们默默的支持,我不可能坚持完成本书的创作。
然后要感谢电子工业出版社博文视点的陈晓猛等编辑对本书内容的校对、勘正及反复核对,感谢你们的付出。
最后感谢在写作过程中给予我帮助的朋友们。
张 锋
4.6 Docker 数据卷 下的数据卷容器拼写错误 (Data Volumes Dontainers)
Dontainers 应为Containers
“Alice:123456”应该为“zhangfeng:123456”
playload拼写错误,应该为payload