前言
基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud 的版本也经历了快速的迭代和更新。
本场小编将带领大家体验如何使用 Spring Cloud 从微服务的设计、开发到部署、发布的全过程,在这一过程中,您将可以学到,怎么快速构建一个 Spring Cloud 项目工程,怎么使用最新版本的 Spring Boot 开发框架开发微服务应用,以及如何使用 Consul 进行微服务治理,并以此构建一个高性能的分布式环境,同时体会如何使用 Docker 进行微服务发布。
小编接下来分享的这份学习笔记将以图片的形式展现出来**+jcc4261获取**小编会阐述详细的知识小结。
一、Spring Cloud概述
本章将会简述 Spring Cloud 的功能,描述什么是 Spring Cloud ,它能为我们带来什么,为后面学习该框架的知识打下理论基础。
传统的应用
- 架构演进
- 架构要求
学习方面的准备工作
- 下载本书的软件及源码
- 导入本书的案例
微服务与Spring Cloud
- Spring Cloud与Netflix
- 什么是微服务
- Spring Cloud 的主要模块
小结
二、搭建开发环境
工欲善其事,必先利其器 在讲述本书的技术内容前,先将开发环境搭建好,本书所涉及的基础环境将在本章准备,
安装Eclipse
- Eclipse版本
- 在Eclipse中配置Maven
安装与配置Maven
- 关于Maven
- 下载与安装Maven
- 配置远程仓库
Spring Boot的配置文件
- 默认配置文件
- 指定配置文件位置
- YML文件
- 运行时指定profiles配置
- 热部署
Spring Boot
- Spring Boot简介
- 新建Maven项目
- 编写启动类
- 编写控制器
- 发布RESTWebService
小结
三、微服务发布与调用
Eureka介绍
- 关于Eureka
- Eureka架构
- 服务器端
- 服务提供者
- 服务调用者
Eureka集群搭建
- 改造服务调用者
- 改造服务提供者
- 本例集群结构图
- 改造服务器端
编写REST客户端进行测试
第一个Eureka应用
- 构建服务器
- 编写服务提供者
- 服务器注册开关
- 编写服务调用者
Eureka的常用配置
- 心跳检测配置
- 配置与使用元数据
- 注册表抓取间隔
- 自我保模式
服务实例的健康自检
-
程序结构
-
实现应用健康自检
-
使用Spring Boot Actuator
-
服务查询
四、负载均衡
Ribbon介绍
- Ribbon简介
- 负载均衡器组件
- Ribbon子模块
第一个Ribbon程序
- 编写服务
- Ribbon的配置
- 编写请求客户端
在Spring Cloud中使用Ribbon
- 准备工作
- 使用配置文件设置Ribbon
- 使用代码配置Ribbon
- Spring使用Ribbon的API
Ribbon的负载均衡机制
- 负载均衡器
- Ribbon自带的负载规则
- 自定义负载规则
- 自定义Ping
- Pingg机制
- 其他配置
RestTemplate负载均衡
-
@LoadBalanced注解概述
-
使用自定义拦截器以及注解
-
编写自定义注解以及拦截器
-
在控制器中使用RestTemplate
五、REST客户端Feign
REST客户端
- 使用CXF调用REST服务
- Feign框架介绍
- 使用Restlet调用REST服务
- 请求参数与返回对象
- 第一个Feign程序
在Spring Cloud中使用Feign
- Spring Cloud整合Feign
- 默认配置
- Feign负载均衡
- 可选配置
- 自定义配置
- 压缩配置
使用Feign
-
编码器
-
解码器
-
自定义编码器与解码器
-
XML的编码与解码
-
使用第三方注解
-
自定义Feign客户端
-
Feign解析第三方注解
-
接口日志
-
请求拦截器
六、Spring Cloud的保护机制
概述
- 实际问题
- 集群容错框架Hystrix
- 传统的解决方式
- Hystrix的功能
第一个Hystrix程序
- 准备工作
- 调用错误服务
- 客户端使用Hystrix
- Hystrix的运作流程
在Spring Cloud中使用Hystrix
- 整合Hystrix
- 默认配置
- 命令配置
- 缓存注解
- Feign与Hystrix整合
- 合并请求注解
Hystrix的使用
-
命令执行
-
回退
-
属性配置
-
回退的模式
-
断路器关闭
-
断路器开启
-
合并请求
-
隔离机制
-
请求缓存
七、微服务集群网关
Zuul框架介绍
- 关于Zuul
Spring Cloud 集群提供了多个组件,用于进行集群内部的通信,例如服务管理组件Eurek ,负载均衡组件 Ribbon 。如果集群提供了 API 或者 Web 服务,需要与外部进行通信,较好的方式是添加一个网关,将集群的服务都隐藏到网关后面。
- Zuul的功能
在Web项目中使用Z u u l
- Web项目整合Zuul
- 过滤器运行机制
- 测路由功能
在微服务集群中初试Zuul
- 集群搭建
- Zuul Http客户端
- 路由到集群服务
路由配置
- 简单路由
- Ribbon路由
- 跳转路由
- 自定义路由规则
Zuul的其他配置
- 请求头配置
- Zuul与Hystrix
- 路由端点
- Zuul中预加载Ribbon
Zuul功能进阶
- 过滤器优先级
- 动态加载过滤器
- 自定义过滤器
- 禁用过滤器
- @EnableZuulServer注解
- 态路由
- error过滤器
八、微服务与消息驱动
- Spring Cloud Stream介绍
- Spring Cloud Stream介绍
- Stream框架的组成部分
- 关于Stream框架
消息代理中间件
Apache Kafka框架
- 关于Kafka
- 编写生产者
- 运行Kafka服务器
- 编写消费者
- 消费者组
RabbitMQ框架
- RabbitMQ和AMQP
- 编写生产者
- 下载与运行
- 交换器、绑定与队列
- 编写消费者
开发消息微服务
-
准备工作
-
编写消费者
-
编写生产者
-
更换绑定器
-
消费者组
-
Sink、Source与Processor
九、集群配置中心
概述
- 关于Spring Cloud Config
- 搭建SVN环境
- 应用结构
- 引导程序简介
构建第一个例子
- 创建服务器
- 创建客户端
- 配置SVN仓库
- 从客户端读取SVN配置
- 刷新配置
- 目录配置总结
- 刷新Bean
其他配置
- 服务器健康指示器
- 安全配置
- 客户端的错误提前与重试机制
- 访问服务器配置
配置的加密和解密
- 为服务器安装JCE
- SVN存储加密数据
- 加密和解密端点
- 非对称加密
整合使用
- 准备工作
- 整合Zuul
- 配置服务器、客户端整合Eureka
- 刷新单个节点配置
- 整合Spring Cloud Bus刷新配置
十、微服务跟踪
概述
- 实际问题与Sleuth
- Sleuth的基本概念
- 服务跟踪系统
- 项目准备
Sleuth整合ELK
- 关于ELK
- 下载ELK
- 使用Logstash读取JSON
- 运行Elasticsearch
- 使用Logback转换JSON
- 使用Kibana展示数据
Sleuth整合Zipkin
- Zipkin简介
- 配置微服务
- 构建Z i p kin服务器项目
- 查看数据
- 使用消息采集数据
- 使用MySQL保存数据
十一、微服务数据库实战
概述
- 关于Spring Data
- Spring Data的模块
- Spring Data的功能
Spring Data与JPA
- 构建项目
- 自定义数据存储逻辑
- 数据访问层与业务层
- 使用@Query注解
- 方法名查询
Spring Data与Redis
-
Redis的安装与配置
-
使用Jedis
-
Redis的数据类型
-
构建Spring Data项目
-
自定义数据存储逻辑
-
数据访问层与业务层
-
方法名查询
-
Spring Data与MongoDB
-
MongoDB的概念
-
安装MongoDB
-
配置权限
-
数据访问层与业务层
-
构建项目
-
自定义数据存储逻辑
-
使用@Query注解
-
方法名查询
十二、案例实战
概述
- 案例概述
- 表现层技术
- 案例技术选型
Spring Boot与JSP
- 配置
- 构建项目
- 打包部署
模板引擎Thymeleaf
- 关于Thymeleaf
- Spring B o o t整合Thymeleaf
- 调用Bean方法
- 获取请求数据
- 遍历集合
- 表单提交
图书管理案例
-
运行案例
-
案例模块
-
新建图书
-
数据库
-
用户登录
-
图书展示
-
案例架构