从零开始搭建SpringCloud项目

本文概述了SpringCloud组件的最新动态,如Eureka被Nacos取代,ZooKeeper不再推荐,Hystrix被Sentinel取代。推荐使用Nacos、OpenFeign、Gateway和Sentinel等组件。
摘要由CSDN通过智能技术生成

SpringCloud实战系列

在这里插入图片描述
× 的表示之前的组件,现在停更了的; 的表示新的替换后的组件。

服务注册中心:

  • Eureka:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了。
  • Zookeeper:一般使用 Zookeeper + Dubbo
  • Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被 Nacos 抢了。
  • Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换 Eureka,还能做其他组件的替换,所以强烈建议使用,是学习的重点

配置中心:

  • Config:目前也在使用,风头被 Nacos 抢了。
  • Nacos:来自于SpringCloudAlibaba,后来居上,把 Config 给替换了。

服务网关:

  • Zuul:Netflix 公司产品,公司内部产生分歧,不建议使用。
  • Gateway:Spring社区自己出的网关组件,官方隆重介绍和极度推荐的网关服务组件。

服务降级:

  • Hystrix:官网不推荐使用,但是中国企业中还在大规模使用。
  • Sentinel:哨兵。来自于SpringCloudAlibaba,在中国企业替换 Hystrix 的组件,国内强烈建议使用。
  • Resilience4J:官网推荐使用,但是国内很少用这个。

服务总线:

  • Bus:SpringCloud原生的服务总线组件,现在风头也被 Nacos 抢了。
  • Nacos:来自于SpringCloudAlibaba,后来居上,把 Bus 给替换了。

服务调用:

  • Ribbon:也进入了维护状态,停止更新了。
  • LoadBalancer:Spring官方推出的一个新的组件,打算逐渐取代掉 Ribbon。
  • Feign:Netflix 公司产品,也停止更新了。
  • OpenFeign:Spring社区等不了 Netflix 更新了,然后就自己做了一个组件,不用 Feign 了。

总体来说,国内一般使用 Nacos + OpenFeign + Gateway + Sentinel

### 从零开始搭建 Spring Cloud Alibaba 项目 #### 准备工作 为了成功构建基于 Spring Cloud Alibaba 的微服务架构应用,需先安装并配置必要的环境工具。这包括但不限于 JDK、Maven 或 Gradle 构建工具以及 Git 版本控制系统。 #### 创建基础工程结构 通过 Spring Initializr 初始化一个新的 Maven 工程,选择合适的依赖项来支持 Spring Boot 和 Spring Cloud Alibaba 组件的集成[^1]。 ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 上述 XML 片段展示了如何向 `pom.xml` 文件中添加两个核心依赖:一个是用于服务发现机制的 Nacos 客户端;另一个则是标准 Web 应用程序所需的起步包。 #### 启动 Nacos Server 单机模式 对于本地测试目的,在单台机器上运行 Nacos 可简化部署流程。执行如下命令可以快速启动一个独立版本的服务注册中心: ```bash cd /path/to/nacos/bin/ sh startup.sh -m standalone ``` 此脚本会以内存数据库的形式启动 Nacos 实例,适用于开发阶段的小规模实验场景[^4]。 #### 编写应用程序入口类 创建主应用程序类,并标注 @EnableDiscoveryClient 注解以便激活自动化的服务治理功能。下面是一个简单的例子说明了这一点: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { private final String serviceInstanceName; public HelloController(@Value("${spring.application.name}") String serviceName) { this.serviceInstanceName = serviceName; } @GetMapping("/hello") public String hello() { return "Hello from " + serviceInstanceName; } } ``` 这段 Java 代码片段定义了一个 RESTful API 接口 `/hello` ,它返回调用者所访问的具体服务名称。 #### 配置文件设置 编辑 application.yml (或 .properties),指定与 Nacos 相关的信息以及其他全局参数。例如: ```yaml server: port: ${PORT:8761} spring: application: name: demo-service cloud: nacos: discovery: server-addr: localhost:8848 ``` 这里设置了当前应用的名字为 `demo-service` 并指定了连接至本地监听于 8848 端口上的 Nacos 地址[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会叫的狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值