SpringCloud
本文最后更新于:2025年4月29日 下午
SpringCloud
目前微服务的开发框架,最常用的有以下四个:
Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
Dubbo:http://dubbo.io
Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)
Consul、etcd&etc.(微服务的模块)
基本概念
什么是 SpringCloud
Spring Cloud 是一系列框架的集合。它利用 Spring Boot 的开发便利性简化了分布式系统基础设施的开发,如服务发现、服务注册、配置中心、消息总线、负载均衡、 熔断器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
SpringCloud 与 SpringBoot 的关系
- Spring Boot 是 Spring 的一套快速配置脚手架,可以基于 Spring Boot 快速开发单个微服务,Spring Cloud 是一个基于 Spring Boot 实现的开发工具;
- Spring Boot 专注于快速、方便集成的单个微服务个体,Spring Cloud 关注全局的服务治理框架;
- Spring Boot 使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud 很大的一部分是基于 Spring Boot 来实现,必须基于 Spring Boot 开发。
- 可以单独使用 Spring Boot 开发项目,但是 Spring Cloud 离不开 Spring Boot。
Spring Cloud 主要基础服务组件
服务发现——Netflix Eureka (Nacos)
服务调用——Netflix Feign
熔断器——Netflix Hystrix (Sentinel)
服务网关——Spring Cloud GateWay
分布式配置——Spring Cloud Config (Nacos)
Nacos 下载与安装
SpringCloud-Nacos
(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
(2)常见的注册中心:
Eureka(原生,2.0 遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO 语言开发)
Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
(3)Nacos 是以服务为主要服务对象的中间件,Nacos 支持所有主流的服务发现、配置和管理。
Nacos 主要提供以下四大功能:
服务发现和服务健康监测
动态配置服务
动态 DNS 服务
服务及其元数据管理
(4)Nacos 结构图
Nacos 下载和安装
(1)下载地址和版本
下载地址:https://github.com/alibaba/nacos/releases
下载版本:nacos-server-2.2.1.tar.gz 或 nacos-server-2.2.1.zip,解压没有中文没有空格目录即可
(2)修改配置文件
参考官方文档:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
在/nacos/conf/application.properties
中,修改nacos.core.auth.plugin.nacos.token.secret.key
的,因为 2.2.0.1 以后无默认值
nacos.core.auth.plugin.nacos.token.secret.key | SecretKey012345678901234567890123456789012345678901234567890123456789(2.2.0.1 后无默认值) | 2.1.0 ~ latest | 默认鉴权插件用于生成用户登陆临时 accessToken 所使用的密钥,使用默认值有安全风险 |
---|
(3)启动 nacos 服务
- Linux/Unix/Mac
启动命令(standalone 代表着单机模式运行,非集群模式)
启动命令:sh startup.sh -m standalone
- Windows
启动方式,cmd 打开,执行命令:
startup.cmd -m standalone
访问:http://localhost:8848/nacos
用户名密码:nacos/nacos
服务注册
把各个微服务注册到注册中心,其他模块步骤相同
在 service 模块配置 pom
配置 Nacos 客户端的 pom 依赖
<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
添加服务配置信息
配置 application.yml,在客户端微服务中添加注册 Nacos 服务的配置信息
spring:
cloud:
nacos:
server-addr: localhost:8848
添加 Nacos 客户端注解
在客户端微服务启动类中添加注解
@EnableDiscoveryClient
启动客户端微服务
启动注册中心
启动已注册的微服务,可以在 Nacos 服务列表中看到被注册的微服务