IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Nacos记录 -> 正文阅读

[Java知识库]Nacos记录

Nacos

Nacos 可以发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 可以更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1 Nacos?

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

2 功能

2.1 动态配置服务

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

2.2 服务发现及管理

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

2.3 动态DNS服务

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

3 windows单机

1、修改nacos-server-xxx的bin目录下的startup.cmd

set MODE="standalone"

2、修改config目录下的application.properties文件数据库连接的内容

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://node2:3306/db_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=MyNewPass4!

3、新建库db_nacos,将config目录下的nacos-mysql.sql脚本文件导入该库

4、启动bin目录下的startup.cmd

5、登录http://localhost:8848/nacos,默认账号密码都是nacos

4 nacos管理平台新建配置

1、管理平台配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjI4NYia-1633702792139)(nacos%E8%AE%B0%E5%BD%95/image-20211008200514518.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMkCRfYx-1633702792142)(nacos%E8%AE%B0%E5%BD%95/image-20211008200346529.png)]

2、项目内部bootstrap.properties文件配置

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

3、远程配置中心(nacos管理平台)的优先级比配置文件优先级高(项目配置文件)

5 数据模型

5.1 定义

1、Nacos数据模型key(DataID)是由三元组唯一确定,分别是:Namespace(默认是空串)、公共命名空间(public)、分组默认是DEFAULT_GROUP

所以如果dataId取名相同,但组名不同,那也是不同的

5.2 新建命名空间

上文所提,每个命名空间就是一层维度,后续在项目配置文件中指定命名空间即可

spring.application.name=nacos_config_test
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f6bdfa3a-aa29-49b3-a567-ccc2ddeaabbd
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.name=nacos_config.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7fuajJ5u-1633702792143)(nacos%E8%AE%B0%E5%BD%95/image-20211008202200698.png)]

6 多配置集

抽取公共配置,对应nacos管理平台中具体命名空间下的对应配置,所以后面直接修改nacos端的配置,其他端会自动更新,解耦维护方便

spring.application.name=nacos_config_test
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f6bdfa3a-aa29-49b3-a567-ccc2ddeaabbd
#spring.cloud.nacos.config.group=DEFAULT_GROUP
#spring.cloud.nacos.config.name=nacos_config.properties

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

7 其他功能

7.1 导入导出

导出配置是一个zip包,里面其实就是配置的文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLWvPFyK-1633702792145)(nacos%E8%AE%B0%E5%BD%95/image-20211008204002152.png)]

7.2 克隆

类似导入导出功能,但是不用中转直接克隆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ynJT1Edv-1633702792145)(nacos%E8%AE%B0%E5%BD%95/image-20211008204326098.png)]

7.3 历史版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEUxdi3a-1633702792146)(nacos%E8%AE%B0%E5%BD%95/image-20211008204615002.png)]

7.4 监听

监控查看客户端是否掉线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nVHMh72Z-1633702792147)(nacos%E8%AE%B0%E5%BD%95/image-20211008204910587.png)]

8 服务注册与发现

8.1 定义

分布式的微服务项目中各个模块会去访问其他模块的项目。互相调用,就需要一个nacos中间者获取所有模块项目的地址和端口,以便于互相访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYA67Y4L-1633702792148)(nacos%E8%AE%B0%E5%BD%95/image-20211008210943106.png)]

8.2 实现

1、新建application.yml

server:
 port: 8082
 servlet:
   context-path: /

spring:
 application:
   name: nacos-order
 cloud:
   nacos:
     discovery:
       server-addr: 127.0.0.1:8848

2、启动服务

@SpringBootApplication
@EnableDiscoveryClient //让注册中心发现
public class NacosOrderApplication {
   public static void main(String[] args){
       SpringApplication.run(NacosOrderApplication.class,args);
   }
}

3、查看nacos平台是否有服务[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8yBsthrw-1633702792148)(nacos%E8%AE%B0%E5%BD%95/image-20211008212003888.png)]

4、案例

//库存模块
@RestController
@RequestMapping("/stock")
public class StockController {

   @RequestMapping("/test")
   public String test(String info) {
       return "库存模块接收到的信息:" + info;
   }
}
//fegin接口
@FeignClient("nacos-stock")
public interface StockfeignService {

   @RequestMapping("/stock/test")
   public String test(@RequestParam("info") String info);

}
//订单模块
@RestController
@RequestMapping("/order")
public class OrderController {

   @Autowired
   private StockfeignService stockfeignService;

   @RequestMapping("/test")
   public String test(){
       return stockfeignService.test("youpei");
   }

}

启动服务,访问http://localhost:8082/order/test,返回库存模块接收到的信息:youpei

8.3 负载均衡

如果多实例,比如上面的多个库存实例,其他配置不怎么变化,那就会轮询访问test,以便达到负载均衡的目的,查看服务可以看到,也可以配置权重

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m8LPZcAe-1633702792149)(nacos%E8%AE%B0%E5%BD%95/image-20211008214717571.png)]

9 服务领域模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kah7WNgd-1633702792149)(nacos%E8%AE%B0%E5%BD%95/image-20211008215538234.png)]

实例:

配置文件配置,主要是namespace和cluster-name

server:
 port: 8088
 servlet:
   context-path: /

spring:
 application:
   name: nacos-stock
 cloud:
   nacos:
     discovery:
       server-addr: 127.0.0.1:8848
       namespace: f6bdfa3a-aa29-49b3-a567-ccc2ddeaabbd
       cluster-name: znv

10 集群

1、修改启动脚本中配置,改为集群模式

set MODE="cluster"

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

3、设置IP:nacos.inetutils.ip-address=127.0.0.1(部署服务器要局域网ip)

4、cluster.conf.example改成cluster.conf,并修改cluster.conf中的ip列表

127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850

5、启动三个nacos服务,刷新web端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GeKwp3rS-1633702792150)(nacos%E8%AE%B0%E5%BD%95/image-20211008221259347.png)]

nacos集群的作用主要在于高可用,即使三个两个都挂,都可正常使用

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:08:22  更:2021-10-09 16:10:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:07:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码