SpringCloud全家桶

一、SpringCloud基本知识

  1. 什么是微服务及SpringCloud与dubbo对比.
  2. SpringCloud基本知识.(SpringCloud与SpringBoot版本对应问题要注意,后面内容未提及)

二、服务注册与发现(Eureka)

  1. 什么是服务治理及什么是Eureka.
  2. Eureka的简单实现.
  3. 【进阶】Eureka的高可用.

三、服务消费者(RestTemple+Ribbon / Feign)

  1. 什么是负载均衡.
  2. 什么是Ribbon.
  3. ribbon + restTemplate 进行服务调用实现.
  4. 什么是Feign.
  5. Feign进行服务调用实现.

四、熔断器(Hystrix)

  1. 什么是熔断器.
  2. 什么是Hystrix.
  3. Hystrix简单实现熔断器模式.

五、路由网关(zuul)

  1. 微服务网关简介.(API网关是什么、网关的优缺点、网关的选择)
  2. 什么是zuul.
  3. zuul简单实现路由转发和过滤器.
  4. 【进阶】zuul实现过滤器、异常处理.
  5. 【进阶】利用swagger2聚合API文档.

六、分布式配置中心(Spring Cloud Config)

  1. 为什么要统一管理微服务配置.
  2. 什么是SpringCloudConfig.
  3. SpringCloudConfig配置于Git仓库的简单实现.(如果出现问题可以看看评论区,有些已经改了,有的还没)
  4. 【进阶】分布式配置中心的服务化(高可用)及动态刷新.
  5. 【进阶】分布式配置中心的服务化(高可用)及动态刷新2.

七 、消息总线(Spring Cloud Bus)

  1. RabbitMQ安装教程.(这个教程是比较完整的,登录验证时账户和密码都是guest)
  2. RabbitMQ使用教程.
  3. Spring Cloud Bus实现通知微服务架构的配置文件的更改.(文中发送post请求使用postman)

写在最后

本来是想写一系列SpringCloud的知识点总结的,但发现网上其实已经有很多这样的教程,当然内容也参差不齐,为避免Reinventing the wheel(重复发明轮子),这篇博客较系统地梳理了一下SpringCloud的学习路线,当然也只能说是入门。这里较多引用了下面两位大佬的博客:

### Spring Cloud 全家的组成及功能介绍 #### 一、Spring Cloud 定义与作用 Spring Cloud 是一套用于构建微服务架构的技术栈集合,旨在帮助开发者快速搭建分布式系统。它提供了多种工具和服务来支持微服务的关键特性,如服务注册与发现、负载均衡、断路器、配置管理等[^2]。 --- #### 二、核心组成部分及其功能 1. **服务注册与发现** - **Eureka**: 提供了一个服务治理方案,允许微服务实例向注册中心注册自己,并能够查询其他服务的位置以便相互通信[^3]。 - **Consul**: 类似于 Eureka 的另一种选择,除了服务注册外还具备健康检查等功能。 - **Nacos**: 阿里巴巴开源的服务发现和配置管理平台,集成了服务注册、配置存储等多种能力。 2. **负载均衡** - **Ribbon**: 实现客户端侧的负载均衡算法,可以根据不同的策略分发请求给后端服务器。 - **OpenFeign**: 声明式的 HTTP 客户端,简化了 RESTful API 的调用过程,内置 Ribbon 支持透明化负载均衡。 3. **熔断与限流** - **Hystrix**: 提供了一种保护机制,当某个远程调用失败时可以迅速返回错误响应而不是长时间等待超时。 - **Sentinel**: 阿里的流量防护组件,专注于实时监控、流量控制以及高可用保障等方面[^3]。 4. **API 网关** - **Zuul**: Netflix 推出的第一代网关产品,负责路由转发、过滤拦截等工作;但由于性能瓶颈已被逐渐淘汰[^4]。 - **Gateway**: 新一代反应式编程模型下的网关实现,具有更高的吞吐量和支持 WebFlux 特性[^3]。 5. **分布式配置** - **Spring Cloud Config**: 中央化的外部配置文件管理系统,便于维护环境间差异较大的参数设置[^3]。 - **Nacos**: 同样可作为配置管理中心使用,兼具动态刷新无需重启应用的优势。 6. **消息驱动** - **Stream**: 构建基于事件驱动的消息传递应用程序,无缝对接 Kafka、RabbitMQ 等中间件[^1]。 7. **任务调度** - **Task**: 生命周期较短的任务型微服务框架,适用于批处理作业或定时脚本执行场景[^1]。 8. **链路追踪** - **Sleuth + Zipkin**: 记录每一次请求经过的所有微服务节点路径信息,辅助排查问题定位根因[^4]。 9. **总线通信** - **Bus**: 结合 RabbitMQ 或 Kafka 进行集群内的广播通知推送,比如更新全局配置时触发全服同步动作。 --- #### 三、典型应用场景举例 假设我们要部署一个电商网站,则可以用如下方式组合这些模块: - 使用 **Eureka/Consul/Nacos** 来完成订单服务、库存服务、支付服务之间的相互查找; - 设置 **Gateway/Zuul** 外部入口统一接入点并对 URL 请求做映射分流; - 加入 **Hystrix/Sentinel** 减少单点故障影响范围; - 把公共属性放到 **Config Server** 上集中管控版本迭代历史记录清晰可见; - 若涉及复杂业务流程编排还可以考虑引入 **Camel/Drools** 工作流引擎补充决策逻辑部分。 --- ### 示例代码片段展示 下面给出一段简单的 Feign 调用示例代码: ```java @FeignClient(name = "product-service") public interface ProductServiceClient { @GetMapping("/products/{id}") Product findById(@PathVariable("id") Long id); } ``` 此接口定义好以后可以直接像本地方法一样调用远端资源而不需要关心底层细节[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值