云原生之nacos架构一览解读

简介: 云原生之nacos架构一览解读

Nacos 架构

基本架构及概念


af4d124d857e7888022a6f97d0a0308c.jpg

服务 (Service)


服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。


服务注册中心 (Service Registry)


服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。


服务元数据 (Service Metadata)


服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。


服务提供方 (Service Provider)


是指提供可复用和可调用服务的应用方。


服务消费方 (Service Consumer)


是指会发起对某个服务调用的应用方。


配置 (Configuration)


在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。


配置管理 (Configuration Management)


在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。


名字服务 (Naming Service)


提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的2大场景。


配置服务 (Configuration Service)


在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。


逻辑架构及其组件介绍


8f5a9a1aa3de81e6123b07e1c244c184.png


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

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

元数据管理:提供元数据CURD 和打标能力

插件机制:实现三个模块可分可合能力,实现扩展点SPI机制

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

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

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

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

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

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

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

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

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

一致性协议:解决不同数据,不同一致性要求情况下,不同一致性机制

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

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

CMDB:解决元数据存储,与三方cmdb系统对接问题,解决应用,人,资源关系

Metrics:暴露标准metrics数据,方便与三方监控系统打通

Trace:暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通

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

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

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

审计系统:扩展接口方便与不同公司审计系统打通

通知系统:核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更

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

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

SDK:多语言sdk

Agent:dns-f类似模式,或者与mesh等方案集成

CLI:命令行对产品进行轻量化管理,像git一样好用


领域模型

数据模型

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


be0144faf24c314e163a39935ed27691.jpg


服务领域模型


f3b1e0d523eac842703e365665656b98.jpg


配置领域模型

围绕配置,主要有两个关联的实体,一个是配置变更历史,一个是服务标签(用于打标分类,方便索引),由 ID 关联。


fcbc9a9e99f0015bc4e645d4b1c4c964.jpg


类视图

Nacos-SDK 类视图

a04fea65ac204e228409da142849717f.png


构建物、部署及启动模式


e04c3735a15f9485a90e924676143b18.png


两种交付工件


Nacos 支持标准 Docker 镜像(TODO: 0.2版本开始支持)及 zip(tar.gz)压缩包的构建物。


两种启动模式


Nacos 支持将注册中心(Service Registry)与配置中心(Config Center) 在一个进程合并部署或者将2者分离部署的两种模式。


免费的公有云服务模式


除了自己部署和启动 Nacos 服务之外,在云计算时代,Nacos 也支持公有云模式,在阿里云公有云的商业产品(如ACM, EDAS) 中会提供 Nacos 的免费的公有云服务。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
运维 Cloud Native 持续交付
云原生架构:未来软件开发的蓝图
【6月更文挑战第6天】随着云计算技术的不断进步,云原生架构已经成为推动现代软件开发的重要力量。本文将深入探讨云原生的概念、核心组件以及它如何改变应用程序的开发、部署和运维方式。通过分析云原生的优势,我们将揭示这一趋势如何为企业带来更高的效率、灵活性和创新能力。
|
3天前
|
监控 Cloud Native 开发者
云原生技术浪潮下的微服务架构实践
云原生技术正引领着现代软件开发的潮流,其中微服务架构作为其核心理念之一,为复杂应用提供了灵活、可扩展的解决方案。本文将探讨在云原生环境下实施微服务架构的策略和挑战,并结合实际案例分析微服务设计的最佳实践,旨在为开发者提供一套可行的微服务部署与管理指南。
|
5天前
|
监控 Cloud Native 安全
云原生架构:现代应用的未来之路
随着数字化转型的推进,云原生架构成为了现代应用开发的关键。本文将探讨云原生架构的基本概念、优势以及实践指南,帮助读者更好地理解并应用云原生技术,为未来的应用开发之路铺平道路。
|
2天前
|
存储 Cloud Native 持续交付
云原生架构:未来软件开发的引擎
【6月更文挑战第13天】随着企业数字化转型的加速,云原生技术已成为推动现代软件交付和运维的关键力量。本文将深入探讨云原生架构的核心概念、优势以及它如何重塑软件开发流程,为企业带来前所未有的敏捷性、可扩展性和成本效率。
9 1
|
2天前
|
运维 Cloud Native 开发者
云原生技术:构建未来软件架构的基石
【6月更文挑战第13天】随着云计算的不断演进,云原生技术已成为推动现代软件开发、部署和运维的关键力量。本文深入探讨了云原生的核心概念、优势以及它在企业中的应用,旨在揭示如何借助云原生技术实现更高效、灵活和可靠的软件解决方案。
13 2
|
3天前
|
运维 Cloud Native Devops
云原生架构:未来软件开发的引擎
【6月更文挑战第12天】随着数字化转型的不断深入,企业对软件交付速度和质量的要求日益提高。本文将探讨云原生架构如何成为推动现代软件开发的关键力量,通过其灵活性、可扩展性和自动化特性,帮助企业快速响应市场变化,实现持续创新。
10 0
|
3天前
|
Cloud Native 持续交付 云计算
云端架构的未来:探索云原生技术的无限可能
【6月更文挑战第12天】随着企业数字化转型的加速,云计算已成为推动现代IT发展的核心力量。本文深入探讨了云原生技术如何重新定义软件开发、部署和运维,以及它如何使组织能够更快速、更灵活地响应市场变化。我们将分析云原生的关键组成部分,包括容器化、微服务架构、持续集成/持续部署(CI/CD)和无服务器计算,并探讨这些技术如何共同塑造了一个更加高效、可扩展和成本效益高的IT环境。
|
5天前
|
监控 Cloud Native 持续交付
云原生架构:从理念到实践的全面解析
云原生架构已经成为现代软件开发和部署的核心理念。它不仅改变了传统的软件开发模式,还为企业提供了更高的灵活性、可扩展性和可靠性。本篇文章将深入探讨云原生架构的基本概念、关键组件以及实际应用案例,帮助读者更好地理解和应用这一先进的技术框架。
27 3
|
5天前
|
Cloud Native Java Devops
【Quarkus 技术系列】「云原生架构体系」在云原生时代下的 Java“拯救者”是 Quarkus,那云原生是什么呢?
【Quarkus 技术系列】「云原生架构体系」在云原生时代下的 Java“拯救者”是 Quarkus,那云原生是什么呢?
17 3
|
5天前
|
运维 Cloud Native 持续交付
云原生架构的演进之路
在数字化转型的浪潮中,云原生技术以其灵活性和可扩展性引领了软件开发的新纪元。本文将探讨云原生架构从概念提出到实践应用的发展历程,解析其核心价值,并展望未来趋势。