目录

一、前言

二、SpringCloud Alibaba系列以及要点

1.1、环境搭建篇

1.2、SpringCloud Alibaba微服务第1章

1.3、Nacos篇

1.4、网关篇

1.5、服务负载均衡篇

1.6、ORM框架之MyBatis-plus篇

1.7、分库分表篇

7.8、服务容错篇

1.9、消息中间件篇

1.10、分布式事务篇

1.11、Oauth2篇

1.12、系统部署篇


一、前言

SpringCloud Alibaba系列是阿里巴巴用SpringCloud实践产物,经得住市场的考验,同时配套不少好用的中间件,因此在这里安利一波。笔者SpringCloud Alibaba系列专栏是经过实际生产总结的,目前项目的基础搭建放在了码云的私人仓库。集项目搭建、开发、系统测试以及系统部署于一体的专栏,为知识付费的。这两三天搭建了SpringCloud Alibaba版微信小程序电商项目,前后端完全分离并且已经可以展示小程序首页功能。

二、SpringCloud Alibaba系列以及要点

1.1、环境搭建篇

主要介绍了Nacos是什么,可以做哪些工作,给我们的项目带来了那些方便。同时介绍了在不同操作系统安装Nacos

1.2、SpringCloud Alibaba微服务第1章

开始初始化项目的结构,详细的图文讲解,加上完整代码,运行结果截图。

1.3、Nacos篇

1)​​​​​​SpringCloud Alibaba微服务第2章之Nacos

注册配置中心是一个集中化管理中心,它不仅仅可以管理多个系统,还可以管理各种环境。那么Nacos是如何进行管理的呢?要确保它们之间没有互相干预,那就得确保相互独立,于是命名空间就应运而生。……

2)SpringCloud Alibaba微服务第3章之Nacos

本文主要面向 Spring Cloud 的使用者,通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理。这篇文章主角就是Nacos,无论是日常开发还是实际生产环境,作为程序员,都得熟悉Nacos的web端管理与维护,详细地罗列了Nacos的配置数据的存放位置,Nacos的配置管理、命名空间等细节。图文并茂,细节到位。

关于 Nacos Spring Cloud 的详细文档

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

3)SpringCloud Alibaba微服务第4章之Nacos

直接上代码实战了一回生产者与消费者使用Nacos的服务发现功能

1.4、网关篇

1)SpringCloud Alibaba微服务第5章之Gateway

API Gateway 是一个服务器,也可以说是进入系统的唯一节点(插入个面试者的描述:面试官心想既然你了解微服务,那么想问你微服务的 入口 是什么,面试者假装沉思:注册中心、微服务、配置中心…然后以肯定的语速回答了–网关。面试官面无表情地只回了个“嗯”)。这跟面向对象设计模式中的 Facade 模式很像。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。

详细介绍了网关模块的搭建过程,启动类、配置、依赖等代码。

测试结果如下成功

2)SpringCloud Alibaba微服务第6章之Gateway

Gateway模块高级玩法,介绍了权限、验证码等过滤器的玩法。

通俗一点地讲网关就像大学的门口,有门卫在那里坚守。如果你想进入园区,你得亮出你的学生证、绿色健康码、行程卡,门卫可能检查比对看看是否是本校学生。

下图展示了一 个适应当前架构的 API Gateway。

1.5、服务负载均衡篇

1)Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

主要介绍Ribbon实现负载均衡

我们都知道在微服务架构中,微服务之间总是需要互相调用,以此来实现一些组合业务的需求。例如用户下单,由于下单信息里有用户信息,所以订单服务就得调用用户服务来获取用户信息。要实现远程调用就需要发送网络请求,而每个微服务都可能会存在有多个实例分布在不同的机器上,那么当一个微服务调用另一个微服务的时候就需要将请求均匀的分发到各个实例上,以此避免某些实例负载过高,某些实例又太空闲,所以在这种场景必须要有负载均衡器。负载均衡,一定程度上也保障了服务的高可用。

图1

图2

2)Spring Cloud Alibaba微服务第8章之OpenFeign

介绍了使用OpenFeign实现负载均衡,feign集成了Ribbon,以接口编程式风格使得代码优雅。

测试结果

1.6、ORM框架之MyBatis-plus篇

1)Spring Cloud Alibaba微服务第9章之MyBatis-plus

主要介绍它的特性以及插件使用等。

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 – Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

框架结构

2)Spring Cloud Alibaba微服务第10章之MyBatis-plus

主要介绍MyBatis-plus的API

通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
泛型 T 为任意实体对象
建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
对象 Wrapper 为 条件构造器

3)Spring Cloud Alibaba微服务第11章之MyBatis-plus

MyBatis-Plus是一个Mybatis增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。话不多说,直接上代码。

1.7、分库分表篇

1)Spring Cloud Alibaba微服务第13章之分库分表

主要介绍中间件的几种架构,中间件的优点

2)Spring Cloud Alibaba微服务第14章之分库分表

主要介绍如何实现分库、分表功能,整合中间件

图1

图2

7.8、服务容错篇

1)Spring Cloud Alibaba微服务第15章之服务容错

主要介绍了服务雪崩概念、常见场景、服务容错解决方案

流量控制

熔断降级

2)Spring Cloud Alibaba微服务第16章之服务容错

主要讲述了Sentinel 控制台的使用、项目整合Sentinel

限流测试

降级测试

1.9、消息中间件篇

1)Spring Cloud Alibaba微服务第17章之消息服务

主要讲述了常见中间件,项目使用的中间件优点、使用场景、如何确保消息正确地发送至中间件? 如何确保消息接收方消费了消息?消息传输、分发、路由,如何确保消息不丢失?等等

2)Spring Cloud Alibaba微服务第18章之消息服务

主要介绍了如何整合消息中间件,消息中间件控制台的使用查看,消息生产者与消息消费者代码实战

测试结果:

图1

图2

1.10、分布式事务篇

1)Spring Cloud Alibaba微服务第19章之分布式事务

主要介绍分布式事务的中间件的几种设计模式、工作机制、使用场景等

2)Spring Cloud Alibaba微服务第20章之分布式事务

主要介绍中间件的安装、将配置上传Nacos

3)Spring Cloud Alibaba微服务第21章之分布式事务

传统的spring提供的声明式事务解决方案并不能解决分布式事务问题,只能解决单机事务。业界也提供了不少解决方案,其中阿里提供的seata项目受到了很多大型企业的认可,社区也很活跃。故我们采用Seata帮助我们解决分布式事务,下面就以实战经验,一起再来看看分布式事务的项目是如何实现的。
图1


图2

1.11、Oauth2篇

1)Spring Cloud Alibaba微服务第22章之Oauth2

概述:新版本的Spring OAuth2.0 ,不再作为一个独立模块,而是Spring Security中的一个子模块。OAuth2提供项目安全认证(包括身份,权限,角色认证等)。

其中OAuth2为我们提供了四种授权方式:

授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)
而较常用的则为密码模式和授权码模式,而授权码模式又是最为安全的模式,常见的第三方授权登录就是基于Oauth2标准。完整的项目结构分为:客户端服务,认证服务,资源服务。客户端需要访问资源服务的资源时,则需要得到认证服务的认证。

2)Spring Cloud Alibaba微服务第23章之Oauth2授权码模式

主要介绍Oauth2的授权码模式的使用

Spring Cloud Alibaba微服务第24章之Docker部署

主要介绍Docker如何部署前后端完全分离的项目

容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。

容器镜像在运行时变成容器,在 Docker 容器的情况下——镜像在Docker Engine上运行时变成容器。可用于 Linux 和基于 Windows 的应用程序,容器化软件将始终以相同的方式运行,无论基础设施如何。容器将软件与其环境隔离开来,并确保尽管开发和暂存之间存在差异,但它仍能统一工作。

在 Docker Engine 上运行的 Docker 容器:

  • 标准: Docker 为容器创建了行业标准,因此它们可以在任何地方移植
  • 轻量级:容器共享机器的操作系统系统内核,因此每个应用程序不需要操作系统,从而提高服务器效率并降低服务器和许可成本
  • 安全:应用在容器中更安全,Docker 提供业界最强的默认隔离能力

2)Spring Cloud Alibaba微服务第25章之Jenkins

主要介绍了Docker安装Jenkins、JDK、Maven

3)Spring Cloud Alibaba微服务第26章之Jenkins

主要介绍Jenkins的一些配置,如JDK、Maven、Git等

4)Spring Cloud Alibaba微服务第27章之Jenkins

主要介绍系统部署级别的配置

图1

图2

上述就是SpringCloud Alibaba系列的内容要点

三、微信小程序

1、

2、

3、

4、

5、