前言

都说程序员工资高、待遇好, 2022 金九银十到了,你的小目标是 30K、40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升 Java 核心能力最快、最有效,短期内升职加薪的方法,到底是什么?

首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目。一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多复杂的场景。这些复杂场景和项目,就像“墙外的世界”,没有看过,没有接触过,你就无法进行体系化的学习和建立认知,技术壁垒自然就出现了。

所以,如果你期望通过个人努力,实现收入增长和职位晋升,那最好的方式,一定是多学多看多做。

基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud 的版本也经历了快速的迭代和更新。

本场小编将带领大家体验如何使用 Spring Cloud 从微服务的设计、开发到部署、发布的全过程,在这一过程中,您将可以学到,怎么快速构建一个 Spring Cloud 项目工程,怎么使用最新版本的 Spring Boot 开发框架开发微服务应用,以及如何使用 Consul 进行微服务治理,并以此构建一个高性能的分布式环境,同时体会如何使用 Docker 进行微服务发布。

架构师的一天_开发语言

一、Spring Cloud概述

本章将会简述 Spring Cloud 的功能,描述什么是 Spring Cloud ,它能为我们带来什么,为后面学习该框架的知识打下理论基础。

传统的应用

  • 架构演进
  • 架构要求

学习方面的准备工作

  • 下载本书的软件及源码
  • 导入本书的案例

微服务与Spring Cloud

  • Spring Cloud与Netflix
  • 什么是微服务
  • Spring Cloud 的主要模块

小结

架构师的一天_架构师的一天_02

二、搭建开发环境

工欲善其事,必先利其器 在讲述本书的技术内容前,先将开发环境搭建好,本书所涉及的基础环境将在本章准备,

安装Eclipse

  • Eclipse版本
  • 在Eclipse中配置Maven

安装与配置Maven

  • 关于Maven
  • 下载与安装Maven
  • 配置远程仓库

Spring Boot的配置文件

  • 默认配置文件
  • 指定配置文件位置
  • YML文件
  • 运行时指定profiles配置
  • 热部署

Spring Boot

  • Spring Boot简介
  • 新建Maven项目
  • 编写启动类
  • 编写控制器
  • 发布RESTWebService

小结

架构师的一天_java_03

三、微服务发布与调用

Eureka介绍

  • 关于Eureka
  • Eureka架构
  • 服务器端
  • 服务提供者
  • 服务调用者

Eureka集群搭建

  • 改造服务调用者
  • 改造服务提供者
  • 本例集群结构图
  • 改造服务器端

编写REST客户端进行测试

第一个Eureka应用

  • 构建服务器
  • 编写服务提供者
  • 服务器注册开关
  • 编写服务调用者

Eureka的常用配置

  • 心跳检测配置
  • 配置与使用元数据
  • 注册表抓取间隔
  • 自我保模式

服务实例的健康自检

  • 程序结构
  • 实现应用健康自检
  • 使用Spring Boot Actuator
  • 服务查询

架构师的一天_微服务_04

四、负载均衡

Ribbon介绍

  • Ribbon简介
  • 负载均衡器组件
  • Ribbon子模块

第一个Ribbon程序

  • 编写服务
  • Ribbon的配置
  • 编写请求客户端

在Spring Cloud中使用Ribbon

  • 准备工作
  • 使用配置文件设置Ribbon
  • 使用代码配置Ribbon
  • Spring使用Ribbon的API

Ribbon的负载均衡机制

  • 负载均衡器
  • Ribbon自带的负载规则
  • 自定义负载规则
  • 自定义Ping
  • Pingg机制
  • 其他配置

RestTemplate负载均衡

  • @LoadBalanced注解概述
  • 使用自定义拦截器以及注解
  • 编写自定义注解以及拦截器
  • 在控制器中使用RestTemplate

架构师的一天_java_05

五、REST客户端Feign

REST客户端

  • 使用CXF调用REST服务
  • Feign框架介绍
  • 使用Restlet调用REST服务
  • 请求参数与返回对象
  • 第一个Feign程序

在Spring Cloud中使用Feign

  • Spring Cloud整合Feign
  • 默认配置
  • Feign负载均衡
  • 可选配置
  • 自定义配置
  • 压缩配置

使用Feign

  • 编码器
  • 解码器
  • 自定义编码器与解码器
  • XML的编码与解码
  • 使用第三方注解
  • 自定义Feign客户端
  • Feign解析第三方注解
  • 接口日志
  • 请求拦截器

架构师的一天_java_06

六、Spring Cloud的保护机制

概述

  • 实际问题
  • 集群容错框架Hystrix
  • 传统的解决方式
  • Hystrix的功能

第一个Hystrix程序

  • 准备工作
  • 调用错误服务
  • 客户端使用Hystrix
  • Hystrix的运作流程

在Spring Cloud中使用Hystrix

  • 整合Hystrix
  • 默认配置
  • 命令配置
  • 缓存注解
  • Feign与Hystrix整合
  • 合并请求注解

Hystrix的使用

  • 命令执行
  • 回退
  • 属性配置
  • 回退的模式
  • 断路器关闭
  • 断路器开启
  • 合并请求
  • 隔离机制
  • 请求缓存

架构师的一天_java_07

七、微服务集群网关

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

架构师的一天_架构师的一天_08

九、集群配置中心

概述

  • 关于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注解
  • 方法名查询

架构师的一天_微服务_09

十二、案例实战

概述

  • 案例概述
  • 表现层技术
  • 案例技术选型

Spring Boot与JSP

  • 配置
  • 构建项目
  • 打包部署

模板引擎Thymeleaf

  • 关于Thymeleaf
  • Spring B o o t整合Thymeleaf
  • 调用Bean方法
  • 获取请求数据
  • 遍历集合
  • 表单提交

图书管理案例

  • 运行案例
  • 案例模块
  • 新建图书
  • 数据库
  • 用户登录
  • 图书展示
  • 案例架构

架构师的一天_开发语言_10