Nacos简述

一、Nacos简介

Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

功能:

1,动态配置服务

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

Nacos简述_第1张图片

2,服务发现及管理

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

Nacos简述_第2张图片

3,动态DNS服务

通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。

Nacos中文官方站点:

https://nacos.io/zh-cn/

二、Nacos server安装

Nacos Server依赖于java环境运行,jdk用1.8以上;

安装:

https://nacos.io/zh-cn/docs/quick-start.html

默认启动是集群方式:

我们修改startup.cmd默认配置 set MODE=“cluster”:

改成 standalone 单实例运行;

Nacos简述_第3张图片

默认端口:8848

配置数据库:

### Count of DB:

db.num=1



### Connect URL of DB:

db.url.0=jdbc:mysql://127.0.0.1:3306/db_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC

db.user.0=root

db.password.0=123456



### Connection pool configuration: hikariCP

db.pool.config.connectionTimeout=30000

db.pool.config.validationTimeout=10000

db.pool.config.maximumPoolSize=20

db.pool.config.minimumIdle=2

Nacos简述_第4张图片

执行sql脚本;

三、Nacos统一配置中心

3.1 配置中心Helloword入门实例

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

springcloudalibaba springcloud springboot版本

Nacos简述_第5张图片

在这里插入图片描述

客户端配置

spring.application.name=nacos_config_test

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.cloud.nacos.config.group=DEFAULT_GROUP

spring.cloud.nacos.config.name=nacos_config.properties

启动类加:

@EnableDiscoveryClient

通过@Value 读取配置:

通过@RefreshScope刷新读取最新配置;

3.2 配置中心-数据模型

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

Nacos简述_第6张图片

3.3 加载多配置集

有时候为了多模块项目的配置共享,我们需要进行配置拆分以及加载多配置集;

比如我们有10个业务模块项目;mysql,redis,reabbitmq等配置都是一样的,为了统一管理,我们在nacos配置中心需要单独的搞成一个通用配置,然后供主项目引入;

案例:

抽取公共配置:

mysql_common.properties

DEFAULT_GROUP

java1234.mysql.common=mysqlconfig

 

redis_common.properties

DEFAULT_GROUP

java1234.redis.common=redisconfig

 
业务模块项目CRM:

crm.properties

CRM_GROUP

java1234.crm.config=crm
业务模块项目OA

oa.properties

OA_GROUP

java1234.oa.config=oa

配置:

spring.cloud.nacos.config.extension-configs[0].data-id=mysql_common.properties

spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP

spring.cloud.nacos.config.extension-configs[0].refresh=true



spring.cloud.nacos.config.extension-configs[1].data-id=redis_common.properties

spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP

spring.cloud.nacos.config.extension-configs[1].refresh=true



spring.cloud.nacos.config.extension-configs[2].data-id=crm.properties

spring.cloud.nacos.config.extension-configs[2].group=CRM_GROUP

spring.cloud.nacos.config.extension-configs[2].refresh=true



spring.cloud.nacos.config.extension-configs[3].data-id=oa.properties

spring.cloud.nacos.config.extension-configs[3].group=OA_GROUP

spring.cloud.nacos.config.extension-configs[3].refresh=true
3.4 配置中心和其他功能

1,配置导出和导入;

2,配置克隆功能;

3,历史版本,可以进行版本回滚;

Nacos简述_第7张图片

4,监听查询,查看哪些客户端正在监听配置中心;

Nacos简述_第8张图片

四、Nacos服务注册与发现

4.1 服务注册与发现简介

Nacos简述_第9张图片

大的分布式微服务项目会根据业务,把项目拆分成多个业务模块项目,然后互相调用;

如何互相调用呢?

这里我们每个项目模块都需要去nacos服务注册中心注册下,登记下每个项目自身的地址和端口,然后其他的项目模块就可以通过Nacos找到需要调用的其他模块项目的地址了;

这样就可以实现服务的发现和调用;

Nacos简述_第10张图片

4.2 服务注册实现

引入依赖:





  com.alibaba.cloud

  spring-cloud-starter-alibaba-nacos-discovery


配置服务发现:

spring:

 application:

  name: nacos-order

 cloud:

  nacos: 

   discovery:

​    server-addr: 127.0.0.1:8848

启动类加注解:

@EnableDiscoveryClient

能够让注册中心发现

4.3 openfeign服务调用实现

引入依赖:





  org.springframework.cloud

  spring-cloud-starter-openfeign


定义Feign接口,生成动态代理对象

/**

 \* @author java1234_小锋

 \* @site www.java1234.com

 \* @company Java知识分享网

 \* @create 2021-03-26 8:53

 */

@FeignClient("nacos-stock")

public interface StockFeignService {

 

  @RequestMapping("/stock/test")

  public String test(@RequestParam("info")String info);

}

启动类:

@EnableFeignClients(basePackages = "com.java1234.feign")

开启Feign客户端支持

4.4 多实例服务负载均衡
4.5 服务领域模型

Nacos简述_第11张图片

五、Nacos高可用集群

为了防止一个nacos崩掉,我们可以搞个3个或者3个以上的nacos集群部署,实现高可用;

startup.bat Model改成cluster集群模式

nacos程序文件复制三分,端口分别搞成 8848,8849 , 8850;

修改 application.properties 端口改下;

设置下IP

nacos.inetutils.ip-address=127.0.0.1

cluster.conf.example改成cluster.conf

以及配置上ip列表:

127.0.0.1:8848

127.0.0.1:8849

127.0.0.1:8850

视频链接

 https://www.bilibili.com/video/BV1WZ4y1w7ww?from=search&seid=6042407474899684032&spm_id_from=333.337.0.0

你可能感兴趣的:(spring,cloud,java,运维)