![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Cloud 快速入门
攻克 Spring Cloud 各大模块,结合实例搭建分布式微服务架构
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
lynnlovemin
李熠,中国石油规划总院高级开发工程师,对Java编码规范和编码技巧有着独特的见解,热衷微服务架构,曾作为中小型企业CTO,带领过超过30人的技术团队。
现专注于网络安全尤其是web渗透方向的研究,长期活跃于各大SRC平台,为其提供漏洞报告。
著有《Spring Cloud实战演练》一书
展开
-
导读:什么是 Spring Cloud 及应用现状
Spring Cloud 是什么?在学习本课程之前,读者有必要先了解一下 Spring Cloud。Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句话说:S...原创 2020-09-22 12:16:01 · 740 阅读 · 0 评论 -
第01课:Spring Boot 入门
什么是 Spring BootSpring Boot 是由 Pivotal 团队提供的基于 Spring 的全新框架,其设计目的是为了简化 Spring 应用的搭建和开发过程。该框架遵循“约定大于配置”原则,采用特定的方式进行配置,从而使开发者无需定义大量的 XML 配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。Spring Boot 并不重复造轮子...原创 2020-09-22 12:16:00 · 337 阅读 · 0 评论 -
第02课:Spring Boot 进阶
上一篇带领大家初步了解了如何使用 Spring Boot 搭建框架,通过 Spring Boot 和传统的 SpringMVC 架构的对比,我们清晰地发现 Spring Boot 的好处,它使我们的代码更加简单,结构更加清晰。从这一篇开始,我将带领大家更加深入的认识 Spring Boot,将 Spring Boot 涉及到东西进行拆解,从而了解 Spring Boot 的方方面面。学完本文后,...原创 2020-09-22 12:15:58 · 356 阅读 · 0 评论 -
第03课:Spring Boot 启动原理
引言Spring Boot 大大简化了我们的开发配置,节省了大量的时间,确实比较方便。但是对于新手来说,如果不了解个中原理,难免会遇到坑。本文作者将带领大家走近神秘的 Spring Boot,一步步破开它的神秘面纱,探索 Spring Boot 的启动原理。开发任何基于 Spring Boot 的项目,我们都会使用以下的启动类:import org.springframework.boot...原创 2020-09-22 12:15:57 · 321 阅读 · 0 评论 -
第04课:初识 Spring Cloud
Spring Cloud 基于 Spring Boot,因此在前几篇,我们系统地学习了 Spring Boot 的基础知识,为深入研究Spring Cloud打下扎实的基础。从本章开始,我们将正式进入探索Spring Cloud秘密的旅程中。学习完本课程后,读者将从中学习到如何搭建一个完整的分布式架构,从而向架构师方向靠近。微服务概述根据百度百科的描述,微服务架构是一项在云中部署应用和服务的...原创 2020-09-22 12:15:55 · 243 阅读 · 0 评论 -
第05课:服务注册与发现
我们知道,微服务是一个架构思想,而 Spring Cloud 集成了用以实现微服务架构的方方面面。从本文开始,我将带领大家逐个击破 Spring Cloud 的各个模块。本文,我们先来学习服务的注册与发现,Spring Cloud Netflix 的 Eureka 组件是服务于发现模块,下面我们将学习它。服务注册与发现模块分为服务注册中心和服务提供者,接下来,我将一一讲解。服务注册中心首先...原创 2020-09-22 12:15:53 · 297 阅读 · 0 评论 -
第06课:服务网关
本文,我们将学习 Spring Cloud的另一个组件:zuul,它提供微服务的网关功能,即中转站,通过它提供的接口,可以转发不同的服务。在学习 zuul 之前,我们先接着上一篇的代码,来看看服务提供者是如何提供服务的。在服务提供者的 module 下创建 HelloController 类,添加内容如下:@RestControllerpublic class HelloController...原创 2020-09-22 12:15:52 · 228 阅读 · 0 评论 -
第07课:服务消费者
前面我们提到,对外提供接口通过 zuul 服务网关实现。一个大型的系统由多个微服务模块组成,各模块之间不可避免需要进行通信,一般我们可以通过内部接口调用的形式,服务 A 提供一个接口,服务 B 通过 HTTP 请求调用服务 A 的接口,为了简化开发,Spring Cloud 提供了一个基础组件方便不同服务之间的 HTTP 调用,那就是 Feign。什么是 FeignFeign 是一个声明式的 ...原创 2020-09-22 12:15:51 · 170 阅读 · 0 评论 -
第08课:服务异常处理
上一篇,我们讲了服务之间的相互通信,利用 Feign 的声明式 HTTP 客户端,通过注解的形式很容易做到不同服务之间的相互调用。我们的服务最终是部署在服务器上,因为各种原因,服务难免会发生故障,那么其他服务去调用这个服务就会调不到,甚至会一直卡在那里,导致用户体验不好。针对这个问题,我们就需要对服务接口做错误处理,一旦发现无法访问服务,则立即返回并报错,我们捕捉到这个异常就可以以可读化的字符串...原创 2020-09-22 12:15:49 · 505 阅读 · 0 评论 -
第09课:配置中心
通过前面章节,我们已经学习了 SpringCloud 的很多组件,每个组件都创建了一个工程,而每个工程都会有一个配置文件,并且有些配置是一样的。例如:在实际项目中,我们创建了用户和订单两个服务,这两个服务是同一个数据库,那么我们在这两个服务的配置文件都会配置相同的数据源,一旦我们的数据库地址发生改变(只是一种情况),用户和订单两个服务的配置文件都需要改,这还是只是两个服务,在一个大型系统(比如淘宝...原创 2020-09-22 12:15:48 · 152 阅读 · 0 评论 -
第10课:消息总线
其实在上一课我们已经接触过了消息总线,那就是 Spring Cloud Bus,这一课我们将继续深入研究 Spring Cloud Bus 的一些特性。局部刷新Spring Cloud Bus 用于实现在集群中传播一些状态变化(例如:配置变化),它常常与 Spring Cloud Config 联合实现热部署。上一课我们体验了配置的自动刷新,但每次都会刷新所有微服务,有些时候我们只想刷新部分微...原创 2020-09-22 12:15:46 · 142 阅读 · 0 评论 -
第11课:服务链路追踪
在前面的课程中,我们已经学习了使用 Actuator 监控微服务,使用 Hystrix 监控 Hystrix Command。本文,我们来研究微服务链路追踪。我们知道,微服务之间通过网络进行通信。在我们提供服务的同时,我们不能保证网络一定是畅通的,相反,网络是很脆弱的,网络资源也有限。因此,我们有必要追踪每个网络请求,了解其经过了哪些微服务,延迟多少,每个请求所耗费的时间等。只有这样,我们才能更...原创 2020-09-22 12:15:45 · 176 阅读 · 0 评论 -
第12课:分布式锁
本达人课讲述的是基于 Spring Cloud 的分布式架构,那么也带来了线程安全问题,比如一个商城系统,下单过程可能由不同的微服务协作完成,在高并发的情况下如果不加锁就会有问题,而传统的加锁方式只针对单一架构,对于分布式架构是不适合的,这时就需要用到分布式锁。实现分布式锁的方式有很多,本文结合我的实际项目和目前的技术趋势,通过实例实现几种较为流行的分布式锁方案,最后会对不同的方案进行比较。基...原创 2020-09-22 12:15:43 · 217 阅读 · 0 评论 -
第13课:分布式事务
首先我们应知道,事务是为了保证数据的一致性而产生的。那么分布式事务,顾名思义,就是我们要保证分布在不同数据库、不同服务器、不同应用之间的数据一致性。为什么需要分布式事务?最传统的架构是单一架构,数据是存放在一个数据库上的,采用数据库的事务就能满足我们的要求。随着业务的不断扩张,数据的不断增加,单一数据库已经到达了一个瓶颈,因此我们需要对数据库进行分库分表。为了保证数据的一致性,可能需要不同的数...原创 2020-09-22 12:15:42 · 313 阅读 · 0 评论 -
第14课:Spring Cloud 实例详解——基础框架搭建(一)
通过前面基础组件的学习,我们已经可以利用这些组件搭建一个比较完整的微服务架构,为了巩固我们前面学习的知识,从本文开始,将以一个实际的案例带领大家构建一个完整的微服务架构(本文代码已放在 Github 上)。需求分析本文要实现的一个产品是新闻门户网站,首先我们需要对其进行需求分析,本新闻门户网站包括的功能大概有以下几个:注册登录新闻列表用户评论产品设计根据需求分析,就可以进行产品设...原创 2020-09-22 12:15:40 · 216 阅读 · 0 评论 -
第15课:Spring Cloud 实例详解——基础框架搭建(二)
接着上一篇,我们继续来搭建基础框架,本文我们将搭建客户端基础模块,集成熔断器,集成持久层框架 Mybatis。在上一篇我们已经构建好了配置中心,因此,此后搭建的所有工程都是将配置文件放到 Git 上(点击这里获取本课程配置文件的 Git 仓库地址),通过配置中心将配置文件从 Git 仓库上拉取下来。客户端基础模块为了便于应用的可读性,我们在顶级工程下,先创建一个 packaging 为 po...原创 2020-09-22 12:15:39 · 160 阅读 · 0 评论 -
第16课:Spring Cloud 实例详解——基础框架搭建(三)
本文我们将集成 Redis,实现 API 鉴权机制。Redis 的集成Spring Boot 集成 Redis 相当简单,只需要在 pom 里加入如下依赖即可:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>...原创 2020-09-22 12:15:37 · 209 阅读 · 0 评论 -
第17课:Spring Cloud 实例详解——业务代码实现
本文开始,我们将实现具体的业务,由于篇幅问题,本文将贴出部分实例代码,其余会提供一般思路。公共模块我们的接口会分别放在不同的工程下,其中会有公共代码,在此我们考虑将公共代码抽象出来放到公共模块 common 下。Bean我们提供的接口分为输入参数(request)和输出参数(response),输入参数为客户端请求时传入,输出参数为后端接口返回的数据。我们在定义接口时最好将输入参数和输出参...原创 2020-09-22 12:15:35 · 205 阅读 · 0 评论 -
第18课:Spring Cloud 实例详解——系统发布
接口开发完成并且测试通过后,就可以进行发布,系统发布可以有很多方式,本文将目前主要的发布方式一一列举出来,供大家参考。Java 命令行启动这种方式比较简单,由于 Spring Boot 默认内置了 Tomcat,我们只需要打包成 Jar,即可通过 Java 命令启动 Jar 包,即我们的应用程序。首先,news 下面的每个子工程都加上(Client 除外):<packaging>...原创 2020-09-22 12:15:34 · 168 阅读 · 0 评论 -
第19课:Spring Cloud 源码解析
Spring Cloud 集成了很多第三方框架,把它的全部源码拿出来解析几本书都讲不完,也不太现实,本文带领读者分析其中一小部分源码(其余源码读者有兴趣可以继续跟进),包括 Eureka-Server、Config、Zuul 的 starter 部分,分析其启动原理。如果我们开发出一套框架,要和 Spring Boot 集成,就需要放到它的 starter 里。因此我们分析启动原理,直接从每个框...原创 2020-09-22 12:15:33 · 230 阅读 · 0 评论 -
第20课:K8S+Docker 部署 Spring Cloud 集群
在一个实际的大型系统中,微服务架构可能由成百上千个服务组成,我们发布一个系统如果都单纯的通过打包上传,再发布,工作量无疑是巨大的,也是不可取的,前面我们知道了可以通过 Jenkins 帮我们自动化完成发布任务。但是,我们知道一个 Java 应用其实是比较占用资源的,每个服务都发布到物理宿主机上面,资源开销也是巨大的,而且每扩展一台服务器,都需要重复部署相同的软件,这种方式显然是不可取的。容器技...原创 2020-09-22 12:15:31 · 506 阅读 · 0 评论