SpringCloud学习

SpringCloud体系比较庞大,各个技术选型更是繁杂,如果和我一样是初学者(所以如果觉得哪里写的不对,可以在评论区提出来,感谢!),建议先不比较各类技术的优缺点,纠结与到底学哪个,而是先选定一条简单的路先入门。我是在极客时间里找了一门springcloud的课程练习。springcloud简单来说可以分为”三大功能,两大特性“。

从微服务组件的功能维度来讲,服务间通信是最基础的功能特性,这个功能模块是最适合作为初学者学习微服务技术的切入点。 所以我的学习规划是:

Spring Cloud 基础篇

使用 Nacos、Loadbalancer 和 OpenFeign 实现了跨服务的调用;

  • 服务治理:掌握如何基于 Nacos 搭建注册中心集群,并实现微服务的服务注册、服务发现、服务下线、环境隔离等,深入了解 Nacos 自动装配机制是如何工作的;

  • 负载均衡:学会如何使用 Loadbalancer 实现负载均衡,并通过自定义负载均衡策略实现金丝雀测试;

  • 服务间调用:掌握如何使用 openfeign 组件在不同微服务间发起服务调用。

Spring Cloud 进阶篇

使用 Sentinel、Nacos Config 和 Sleuth 实现了服务容错、配置管理和分布式链路追踪;

  • 服务容错:了解微服务常见的服务容错手段,使用 Spring Cloud Sentinel 实现服务降级熔断和流量整形;

  • 链路追踪:了解链路追踪的使用场景和实现原理,使用 Sleuth 完成链路打标,并集成 Zipkin 和 ELK 实现链路追踪和日志查询;

  • 分布式配置中心:了解配置中心的使用场景,使用 Nacos 实现配置项管理、动态刷新参数和环境隔离。

Spring Cloud 高级篇

使用 Gateway 和 Seata 实现了微服务网关和分布式事务。

  • 服务网关:了解微服务网关的用途,使用 Spring Cloud Gateway 搭建微服务网关;

  • 事件驱动:了解事件驱动在微服务中的应用场景,使用 Stream 集成消息组件,并实现异常容错、死信队列和延迟消息等场景;

  • 分布式事务:了解分布式事务的主流方案,使用 Spring Cloud Seata 的 AT 模式和 TCC 模式实现分布式事务,并深入了解 Seata 的底层原理。

项目主要用到的环境

开发工具:idea,注意安装lombok插件

java环境:经典的jdk1.8

maven环境:maven3.8.1

数据库:mysql5.7.33

redis环境:我的是windows版本的,redis5.0.10,下载地址Releases · tporadowski/redis · GitHub

rabbitmq:rabbitmq-server-3.9.13

学习建议

  • 懂得都懂,学习是要动手的,初学者光看是没啥用的,动手才能发现自己的不足以及实际的问题,并且要记录重要的实质知识点,后面我的笔记,就是先记录各个知识点,然后写个demo串联一下。

  • 遇到问题尝试先自己解决,别急着百度,springcloud有很多配置项,难免有配置出错,可以根据日志信息来定位问题。

  • 当你在一个问题上尝试过各种解法,可又不得要领的时候,就不用钻牛角尖死磕了,暂时先放着,隔个几天再来重新复盘这个问题,有时候会发现问题迎刃而解了。

项目地址

附上项目源码地址

劝退图

最后来一张SpringCloud劝退图: