首页IT科技springcloud阿里巴巴和springcloud区别(Spring Cloud Alibaba之Nacos)

springcloud阿里巴巴和springcloud区别(Spring Cloud Alibaba之Nacos)

时间2025-04-30 08:05:38分类IT科技浏览3297
导读:目录结构:...

目录结构:

  一            、Spring Cloud Alibaba简介

  二               、使用版本情况

  三      、什么是Nacos?

  四         、Nacos运行环境部署

  五               、Nacos注册中心

  六        、Nacos命名空间和分组

  七      、Nacos配置中心

  八                、基于profile多环境配置

  九          、Nacos配置中心动态刷新

  十   、Nacos数据持久化

  十一                 、Nacos集群部署

一            、Spring Cloud Alibaba简介

Spring Cloud Alibaba是Spring Cloud下的一个子项目         ,Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案                  ,它包含开发分布式应用程序所需的所有组件      ,使您可以轻松地使用Spring Cloud开发应用程序      ,使用Spring Cloud Alibaba                 ,您只需要添加一些注解和少量配置即可将Spring Cloud应用程序整合Alibaba的分布式解决方案         ,并使用Alibaba中间件构建分布式应用程序系统         。

二、使用版本情况

1               、项目所使用的的版本

Spring Cloud Alibaba Version Spring Cloud Version Spring Boot Version 2.2.9.RELEASE Spring Cloud Hoxton.SR12 2.3.12.RELEASE

2               、Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本:

Spring Cloud Alibaba Version Nacos Version Sentinel Version Seata Version RocketMQ Version Dubbo Version 2.2.9.RELEASE 2.0.4 1.8.5 1.5.2 4.9.4 2.7.13

三   、什么是Nacos?

Nacos是阿里巴巴2018年7月推出来的一个开源项目    ,是一个构建微服务应用的服务注册与发现            、配置管理平台;

Nacos 属于Spring Cloud Alibaba下的一个组件;

Nacos 约等于 Spring Cloud Eureka(注册中心)+ Spring Cloud Config(配置中心)

Nacos官网:https://nacos.io/

四               、Nacos运行环境部署

服务端(部署一个nacos-server)+ 客户端(你的各个服务)

步骤:

  1      、下载Nacos的二进制压缩包

  下载地址:https://github.com/alibaba/nacos/releases

  2         、解压下载下来的Nacos的二进制压缩包  

  tar -zxvf nacos-server-2.0.4.tar.gz

  3               、启动nacos server

  [root@localhost bin]# ./startup.sh -m standalone

  注:单机环境必须带-m standalone参数启动                ,否则无法启动            ,不带参数启动的是集群环境

  4        、访问nacos的web客户端地址:http://ip地址:8848/nacos

  使用默认的用户名:nacos      、密码:nacos

  5                、关闭nacos server

  [root@localhost bin]# ./shutdown.sh

五          、Nacos注册中心

Nacos注册中心可以说是类似于Eureka-server的功能

微服务开发是controller调用controller  ,调用者是服务消费者               ,被调用者是服务提供者               ,服务消费者和服务提供者是相对概念,服务消费者也可以被另一个服务调用            ,那么此时的服务消费者也是一个服务提供者;

在实际开发中                  ,我们会把所有服务都注册到nacos注册中心上   ,由nacos去维护和管理我们的所有服务                  。

5.1   、实现服务提供者

1                 、pom.xml 文件中引入Nacos Discovery Starter依赖

2            、配置文件application.yml中添加Nacos Server地址

spring: cloud: nacos: discovery: server-addr: http://ip地址:8848/nacos username: nacos password: nacos application: name: nacos-provider

注意:如果不想使用Nacos作为你的服务注册与发现         ,可以将spring.cloud.nacos.discovery.enabled设置为false      。

3、启动项目                  ,此时就可以在Nacos的web管控台上看到注册上来的服务信息了;

5.2               、实现服务消费者

消费者应用比提供者应用要稍微复杂一点      ,因为在消费端需要去调用提供者提供的REST服务      ,此时需要用到RestTemplate               、OpenFeign及负载均衡Spring Cloud LoadBalancer      。

1   、添加OpenFeign            、Nacos Discovery Starter依赖

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

2               、配置文件application.yml中添加Nacos Server地址

spring: cloud: nacos: discovery: server-addr: http://ip地址:8848/nacos username: nacos password: nacos application: name: nacos-consumer

3      、新建Feign接口                 ,调用服务提供者

// nacos-provider是服务提供者的应用名         ,也就是注册到Nacos中的应用名 @FeignClient(value = "nacos-provider") public interface ProductFeign { // 服务提供者对应的controller接口 @GetMapping("/product/{id}") Product getProduct(@PathVariable("id") Integer id); }

4         、服务消费者接口实现类中注入Feign对象    ,调用服务提供者

@Service public class OrderServiceImpl implements OrderService { @Resource private OrderDao orderDao; @Resource private ProductFeign productFeign; @Override public int addOrder(Integer id) { // 注入Feign接口对象                ,调用服务提供者接口 Product product = productFeign.getProduct(id); int result = 0; if (product != null) { Order order = Order.builder().orderName("我购买的").orderMoney(new BigDecimal(1000)).productId(1).orderStatus(0).memberId(1001).build(); result = orderDao.addOrder(order); } return result; } }

六               、Nacos命名空间和分组

6.1        、命名空间:用于隔离每一个微服务的外部应用配置            ,每一个微服务都可以有自己单独的配置环境                 。默认新增的所有服务都在public空间(保留空间)         。

新建命名空间  ,每一个服务都可以创建一个命名空间

6.2      、配置分组:默认所有的配置都属于:DEFAULT_GROUP

每个微服务创建自己的命名空间               ,使用配置分组区分环境:开发环境dev               ,测试环境test以及生产环境prod等

创建分组:选择对应的命名空间,点击“+         ”创建分组配置

七                、Nacos配置中心

Nacos配置中心类似于Spring Cloud Config的功能

Spring Cloud Config 使用git仓库存储配置文件            ,程序员自己创建config-server的服务器                  ,把各个微服务作为客户端

Nacos 作为配置中心   ,配置的信息存储到服务端         ,就是Nacos    。Nacos提供用于存储配置数据功能                  ,为分布式系统中的配置数据提供服务器端和客户端支持      ,使用Spring Cloud Alibaba Nacos Config就可以在Nacos Server集中管理Spring Cloud应用的外部属性配置;

Spring Cloud Alibaba Nacos config是在启动的bootstrap阶段      ,将配置加载到Spring环境中;

通过bootstrap.properties(bootstrap.yml)启动我们的微服务

6.1          、基于Nacos配置中心构建微服务应用

步骤:

1   、pom文件中添加Nacos Config依赖

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.5</version> </dependency>

2                 、项目配置文件bootstrap.yml中

Spring Cloud Alibaba Nacos Config会根据命名空间            、DataId、GROUP以及文件后缀名确定唯一一个配置

spring: cloud: nacos: config: server-addr: http://ip地址:8848/nacos username: nacos password: nacos namespace: e769b2bd-5082-4829-82a5-3c98ee6cf758 group: dev-group file-extension: properties application: name: config-server

3               、Nacos中添加外部配置文件

4               、客户端通过nacos调用外部配置文件                 ,拿到相应的属性值

@RestController public class ConfigController { @Value("${user.info.username}") private String username; @Value("${user.info.password}") private String password; @GetMapping("/user/info") public String getUserInfo(){ return username + ": " + password; } }

八   、基于profile多环境配置

nacos配置中心在加载配置的时候         ,不仅仅加载了以 dataid为${spring.application.name}.${file-extension:properties}的基础配置    ,还加载了dataid为${spring.application.name}-${profile}.${file-extension:properties}的基础配置;

在日常开发中如果遇到多套环境下的不同配置                ,可以通过Spring提供的${spring.profiles.active}配置项来激活使用某个配置文件;

1            、在Nacos中创建两个配置文件

2               、修改项目的配置文件bootstrap.yml

spring: cloud: nacos: config: server-addr: http://192.168.0.130:8848/nacos username: nacos password: nacos namespace: e769b2bd-5082-4829-82a5-3c98ee6cf758 group: user-group file-extension: properties application: name: config-server profiles: active: dev

如果需要切换到测试环境            ,只需要更改${spring.profiles.active}参数配置即可  ,如下所示:

spring.profiles.active=test

九      、Nacos配置中心动态刷新

Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能               ,在监听到服务端配置发生变化时会实时触发org.springframework.cloud.context.refresh.ContextRefresher的refresh 方法;

可以通过配置spring.cloud.nacos.config.refresh.enabled=false来关闭动态刷新;

controller 加上以下注解

@RestController @RefreshScope public class ConfigController { @Value("${user.info.username}") private String username; @Value("${user.info.password}") private String password; @GetMapping("/user/info") public String getUserInfo(){ return username + ": " + password; } }

十         、Nacos数据持久化

参考网址:https://nacos.io/zh-cn/docs/deployment.html

Nacos默认情况下是采用apache derby内嵌数据库进行数据存储               ,在单机模式时可以使用nacos嵌入式数据库实现数据存储,但是derby数据库不方便观察数据存储的基本情况            ,从acos 0.7版本开始增加了支持mysql数据源能力;

具体操作步骤:

第一步:安装数据库                  ,版本要求:5.6.5+;

第二步:初始化MySQL数据库(也就是生成对应的数据库和表)   ,数据库初始化文件: nacos-mysql.sql         ,该文件可以在Nacos程序包下的 conf目录下获得

第三步:修改 conf/application.properties文件                  ,增加支持MySQL数据源配置      ,添加(目前只支持mysql)数据源的url               、用户名和密码

#*************** Config Module Related Configurations ***************# 32 ### If use MySQL as datasource: 33 spring.datasource.platform=mysql 34 35 ### Count of DB: 36 db.num=1 37 38 ### Connect URL of DB: 39 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai 40 db.user.0=root 41 db.password.0=123456

第四步:然后启动nacos(还是单机启动)      ,此时发现nacos所有嵌入式数据库的数据都写到了mysql;

十一        、Nacos集群部署

具体配置步骤:

1      、准备三个nacos                 ,3个或3个以上Nacos节点才能构成集群;

2                、在Nacos的conf目录下有一个cluster.conf.example         ,可以直接把example扩展名去掉来使用    ,也可以单独创建一个cluster.conf文件                ,然后在该文件中每行配置一个ip:port;

端口号需要和对应nacos的文件application.properties中的端口号一致

3          、按照上面nacos持久化的方式配置好数据持久化到MySQL            ,生产使用建议至少主备模式  ,或者采用高可用数据库

4   、启动测试;

集群下客户端怎么连?

第一种:可以在单机的基础上加多个IP和端口中间用逗号隔开;

spring: cloud: nacos: config: server-addr: http://ip地址1:8848/nacos,http://IP地址2:8848/nacos,http://ip地址3:8848/nacos username: nacos password: nacos namespace: e769b2bd-5082-4829-82a5-3c98ee6cf758 group: user-group file-extension: properties application: name: config-server profiles: active: dev

第二种:配合Nginx代理我们的Nacos集群               ,配置里就直接写Nginx的IP和端口即可;

声明:本站所有文章               ,如无特殊说明或标注,均为本站原创发布                。任何个人或组织            ,在未征得本站同意时                  ,禁止复制                 、盗用            、采集、发布本站内容到任何网站               、书籍等各类媒体平台            。如若本站内容侵犯了原著者的合法权益   ,可联系我们进行处理  。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
织梦怎么自动采集发布(dedecms织梦获取栏目(分类)的文章数量的方法) macoscatalina10.15.4(macOS Catalina 10.15正式版有哪些改进 苹果macOS Catalina 10.15体验评测)