SpringCloud微服务架构技术分享
交付二:胡铭锋
CONTENTS
01
02
03
04
单体应用架构存在的问题
主 要 介 绍 目 前 传 统 项 目 的 单 体 应 用 架 构 的
问 题 和 局 限 性
微服务架构介绍
介 绍 微 服 务 架 构 的 来 源 和 应 用 场 景 , 以 及
传 统 项 目 往 微 服 务 架 构 的 迁 移
SpringCloud简介和常用组件
培 训 的 主 要 内 容 , 主 要 讲 解 S p r i n g C l o u d 的
几 大 常 用 组 件 和 介 绍 其 他 组 件
SpringCloud总结
主 要 对 S p r i n g C l o u d 的 应 用 总 结 以 及 基 于
d o c k e r 和 J e n k i n s 进 行 项 目 的 持 续 集 成 部 署
单体应用架构存在的问题
和微服务架构介绍
单体架构应用的困境
• 在 Java 开发中,一个典型的单体架构应用就是将一个应用中所有的功能都打
包在一个 WAR 文件中,并部署在应用服务器(如 Tomcat)中运行,如图所
示。
微服务架构
• 在开发大型、复杂应用时我们常采用的开发方式就是模块化。这种大型应用的
开发往往一个人是无法掌控全局的,通过模块化的方式可以将应用分解成多个
具有关联的模块,并交由不同开发团队来完成。模块通过开发语言本身的机制
进行构建,比如 Java 中我们会打包成一个 JAR 文件,模块之间的调用则是直
接使用接口,依赖关系则可以使用 Maven 等工具进行管理。微服务架构中的
服务其实和之前模块化开发很相似,但服务是有明确服务边界的,所以更易于
开发和管控,同时也更易于单独部署和扩展。
如何定义微服务架构
• 微服务架构可以说是如何将功能分解成一系列服务的一种架构模式。对于一个
应用系统包含两部分的需求:第一部分是功能性需求,用于定义一个应用是用
来做什么的,该应用系统用来达到什么目的;第二部分就是非功能性需求,包
括了对应用系统的扩展性、灵活性,还有性能、运维、安全、测试、监控等需
求,这种非功能性需求是用来保障业务系统能够正确、顺畅地运行。而对于微
服务架构来说,则着重于后一种需求。
• 微服务架构从结构上来看就是将一个应用拆分成多个松耦合的服务,这些服务
之间通过某种协议(REST、RPC 等)进行互相协作,完成原单体架构下的业
务功能,但提供更灵活的部署模式,更容易扩展,降低了开发、运维上的复杂
度。对于微服务来说,其中一个关键点就是各服务之间的松耦合,各服务之间
通过一种“标准”的协议进行沟通,不需要理解对方服务的实现逻辑、实现方
式,只要在对方所提供的服务接口没有变化的情况下不会影响自己所提供的服
务功能即可。总而言之,微服务核心思路就是分而治之。
微服务的技术栈
微服务架构优势
• 复杂度可控
在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过
定义良好的接口清晰表述服务边界。
由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和
开发效率。
• 独立部署
由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无
需编译、部署整个应用。
由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产
环境所造成的风险,最终缩短应用交付周期。
• 技术选型灵活
微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,
自由选择最适合的技术栈。