• SpringCloud之nacos


    以下是官网文档中个人感兴趣的部分整理,官方完整文档链接如下:
    Nacos 官方文档

    1.nacos是什么?

    1.1 概念:快速实现动态服务发现、服务配置、服务元数据及流量管理。

    简单来说就是发现、配置和管理微服务。

    1.2 nacos地图:

    在这里插入图片描述

    1.3 nacos生态图

    在这里插入图片描述

    1.4 nacos架构图

    在这里插入图片描述

    1.5 逻辑架构及其组件介绍

    选取大部分如下:

    1.5.1 服务管理:

    实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能

    1.5.2 配置管理:

    实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能

    1.5.3 元数据管理:

    提供元数据CURD 和打标能力

    1.5.4 Nacos-core模块

    (1) 事件机制:

    实现异步化事件通知,sdk数据变化异步通知等逻辑

    (2) 日志模块:

    管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮助文档

    (3) 回调机制:

    sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性

    (4)寻址模式:

    解决ip,域名,nameserver、广播等多种寻址模式,需要可扩展

    (5) 推送通道:

    解决server与存储、server间、server与sdk间推送性能问题

    (6) 容量管理:

    管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性

    (7) 流量管理:

    按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制

    (8) 缓存机制:

    容灾目录,本地缓存,server缓存机制。容灾目录使用需要工具

    (9)启动模式:

    按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI

    1.5.5 存储模块:

    解决数据持久化、非持久化存储,解决数据分片问题

    1.5.6 Nameserver:

    解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题

    1.5.7 接入管理:

    相当于阿里云开通服务,分配身份、容量、权限过程

    1.5.8 用户管理:

    解决用户管理,登录,sso等问题

    1.5.9 权限管理:

    解决身份识别,访问控制,角色管理等问题

    1.5.10 OpenAPI:

    暴露标准Rest风格HTTP接口,简单易用,方便多语言集成

    1.5.11 Console:

    易用控制台,做服务管理、配置管理等操作

    在这里插入图片描述

    1.6 领域模型

    (1)数据模型
    Nacos 数据模型 Key 由三元组唯一确定,Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP
    在这里插入图片描述

    1.7 服务领域模型

    在这里插入图片描述

    1.8 配置领域模型

    围绕配置,主要有两个关联的实体,一个是配置变更历史,一个是服务标签(用于打标分类,方便索引),由 ID 关联
    在这里插入图片描述

    1.9 类视图

    (1)Nacos-SDK 类视图
    在这里插入图片描述

    1.10 构建、部署及启动模式

    在这里插入图片描述

    2.nacos的Java SDK

    部分文档如下:

    2.1 获取配置

    用于服务启动的时候从 Nacos 获取配置。

    public String getConfig(String dataId, String group, long timeoutMs) throws NacosException
    
    • 1

    2.2 监听配置

    使用 Nacos 动态监听配置接口来实现Nacos 推送配置变更

    public void addListener(String dataId, String group, Listener listener) 
    
    • 1

    2.3 删除监听

    取消监听配置,取消监听后配置不会再推送。

    public void removeListener(String dataId, String group, Listener listener)
    
    • 1

    2.4 发布配置

    用于通过程序自动发布 Nacos 配置,以便通过自动化手段降低运维成本。

    public boolean publishConfig(String dataId, String group, String content, String type) throws NacosException;
    
    • 1

    2.5 删除配置

    用于通过程序自动删除 Nacos 配置,以便通过自动化手段降低运维成本。

    public boolean removeConfig(String dataId, String group) throws NacosException
    
    • 1

    2.6 注册实例

    注册一个实例到服务。

    void registerInstance(String serviceName, String ip, int port) throws NacosException;
    
    void registerInstance(String serviceName, String ip, int port, String clusterName) throws NacosException;
    
    void registerInstance(String serviceName, Instance instance) throws NacosException;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.7 注销实例

    删除服务下的一个实例。

    void deregisterInstance(String serviceName, String ip, int port) throws NacosException;
    
    void deregisterInstance(String serviceName, String ip, int port, String clusterName) throws NacosException;
    
    • 1
    • 2
    • 3

    2.8 获取全部实例

    获取服务下的所有实例。

    List<Instance> getAllInstances(String serviceName) throws NacosException;
    
    List<Instance> getAllInstances(String serviceName, List<String> clusters) throws NacosException;
    
    • 1
    • 2
    • 3

    3.nacos单机部署服务

    本人之前写了一篇简单部署文章,链接如下:
    公司微服务项目部署调试


    随心所往,看见未来。Follow your heart,see night!

    欢迎点赞、关注、留言,收藏及转发,一起学习、交流!

  • 相关阅读:
    《C++ primer plus》精炼(OOP部分)——对象和类(7)
    $refs $emit
    Spring 系列(二):Spring MVC的父子容器
    机器学习中常见的特征工程处理
    JAVA:实现DynamicArray动态数组算法(附完整源码)
    MVP模式根模块
    kafka的Java客户端消费者
    Jackson ImmunoResearch 蛋白质印迹指南丨膜清洗
    Github+Markdown(1)
    使用JavaScript 实现最简单最基本的轮播图样式
  • 原文地址:https://blog.csdn.net/qq_45738250/article/details/126190033