Spring Cloud与Docker微服务架构实战(第2版) - (EPUB全文下载)
文件大小:0.16 mb。
文件格式:epub 格式。
书籍内容:
Spring Cloud与Docker微服务架构实战(第2版)
1 微服务架构概述
2 微服务开发框架——Spring Cloud
3 开始使用Spring Cloud实战微服务
4 微服务注册与发现
5 使用Ribbon实现客户端侧负载均衡
6 使用Feign实现声明式REST调用
7 使用Hystrix实现微服务的容错处理
8 使用Zuul构建微服务网关
9 使用Spring Cloud Config统一管理微服务配置
10 使用Spring Cloud Sleuth实现微服务跟踪
11 Spring Cloud常见问题与总结
12 Docker入门
13 将微服务运行在Docker上
14 使用Docker Compose编排微服务
后记
附录A:本书配套代码
附录B:Spring Cloud YES——快速开发脚手架
附录C:使用Docker快速安装本书中的组件
封底
1 微服务架构概述
微服务架构是当前软件开发领域的技术热点。它在各种博客、社交媒体和会议演讲上的出镜率非常之高,笔者相信大家也都听说过微服务这个名词。然而微服务似乎又是非常虚幻的——我们找不到微服务的完整定义,以至于很多人认为是在炒作概念。
那么什么是微服务呢?它解决了哪些问题?它又具有哪些特点?诸多问题,本章都将为你一一解答。同时,微服务理论性的内容,互联网上已有很多,本书不会过多提及。笔者会尽量把篇幅花在微服务的具体实战内容上。
1.1 单体应用架构存在的问题
一个归档包(例如war格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。
以一个电影售票系统为例,架构如图1-1所示。
如图1-1所示,该应用尽管已经进行了模块化,但由于UI和若干业务模块最终都被打包在一个war包中,该war包包含了整个系统所有的业务功能,这样的应用系统称为单体应用。
图1-1 电影售票系统单体架构示意图
相信很多项目都是从单体应用开始的。单体应用比较容易部署、测试,在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加,越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活性逐渐降低,维护成本越来越高。下面列举了单体应用存在的一些问题。
•复杂性高:以笔者经手的一个百万行级别的单体应用为例,整个项目包含的模块非常多、模块的边界模糊、依赖关系不清晰、代码质量参差不齐、混乱地堆砌在一起……整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个Bug都会带来隐含的缺陷。
•技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。“不坏不修(Notbroken,don’t fix)”,这在软件开发中非常常见,在单体应用中这种思想更甚。已使用的系统设计或代码难以被修改,因为应用程序中的其他模块可能会以意料之外的方式使用它。
•部署频率低:随着代码的增多,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错概率比较高。
•可靠性差:某个应用Bug,例如死循环、OOM等,可能会导致整个应用的崩溃。
•扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的CPU;有的模块则是IO密集型的,需要更大的内存。由于这些模块部署在一起,不得不在硬件的选择上做出妥协。
•阻碍技术创新:单体应用往往使用统一的技术平台或方案解决所有的问题,团队中的每个成员都必须使用相同的开发语言和框架,要想引入新框架或新技术平台会非常困难。例如,一个使用Struts2构建的、有100万行代码的单体应用,如果想要换用SpringMVC,毫无疑问切换的成本是非常高的。
综上,随着业务需求的发展,功能的不断增加,单体架构很难满足互联网时代业务快速变化的需要。那么,如何解决单体应用架构存在的问题呢?
1.2 如何解决单体应用架构存在的问题
综上所述,单体应用架构存在很多的问题。有没有一种架构模式可以有助于解决这些问题呢?
微服务就是这样的一种架构模式。下面将着重介绍什么是微服务,以及使用微服务架构有哪些优点与挑战。
1.3 什么是微服务
就目前来看,微服务本身并没有一个严格的定义,每个人对微服务的理解都不同。Martin Fow ler在他的博客中是这样描述微服务的。
In short,them icroservice architectural style is an approach to developing a single application as a suite of small services,each running in itsown process and communicating with lightweight mechanisms,often an HTTP resource API.These services are built around business capabilities and independently deployable by fully automated deployment machinery.There is a barem inimum of centralized management of these services,which may be written in different programming languagesand use different data storage technologies.
用中文表述就是,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Spring Cloud与Docker微服务架构实战(第2版) - (EPUB全文下载)