本篇文章为你整理了Spring Cloud Alibaba组件之Nacos(spring cloud alibaba 从入门到实战)的详细内容,包含有spring cloud alibaba架构 spring cloud alibaba 从入门到实战 springcloud nacos集群 spring cloud alibaba 2020 Spring Cloud Alibaba组件之Nacos,希望能帮助你了解 Spring Cloud Alibaba组件之Nacos。
目录结构:
一、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、项目所使用的的版本
三、什么是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依赖
dependency
groupId com.alibaba.cloud /groupId
artifactId spring-cloud-starter-alibaba-nacos-discovery /artifactId
version 2.2.9.RELEASE /version
/dependency
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
35 ### Count of DB:
36 db.num=1
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和端口即可;
以上就是Spring Cloud Alibaba组件之Nacos(spring cloud alibaba 从入门到实战)的详细内容,想要了解更多 Spring Cloud Alibaba组件之Nacos的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。