目录
什么是 Nacos
Nacos 的主要特点:
Dockerfile+docker-compose.yml 快速搭建 nacos 单机
什么是 Nacos
Nacos/nɑ:kəʊs/
是“动态命名和配置服务”的缩写,是一个用于构建云原生应用的易于使用的动态服务发现、配置和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。它提供了一组简单实用的功能,使您能够实现动态服务发现、服务配置、服务元数据和流量管理。
Nacos 可让您更轻松、更快速地构建、交付和管理微服务平台。它是支持以服务为中心的现代应用架构的基础设施,采用微服务或云原生方法。
Nacos 的主要特点:
-
服务发现和服务健康检查
Nacos 支持基于 DNS 和基于 RPC(Dubbo/gRPC)的服务发现。服务提供者通过原生、OpenAPI或专用代理注册服务后,服务消费者可以通过DNS_TODO或HTTP发现服务。
Nacos 提供实时健康检查,防止服务向不健康的主机或服务实例发送请求。Nacos 支持传输层(PING 或 TCP)健康检查和应用层(如 HTTP、Redis、MySQL 和用户定义协议)健康检查。对于复杂云和网络拓扑(如 VPC、边缘服务等)的健康检查,Nacos 提供代理模式和服务器模式健康检查。Nacos 还提供统一的服务健康仪表板,帮助您管理服务的可用性和流量。
-
动态配置管理
动态配置服务允许您以集中式、外部化和动态的方式管理所有环境中所有应用程序和服务的配置。
动态配置消除了配置更新时重新部署应用程序和服务的需要。
配置集中管理,让您更方便实现服务无状态、服务实例按需弹性扩展。
Nacos 提供了简单易用的 UI(DEMO)帮助您管理所有应用或服务的配置,并提供配置版本跟踪、金丝雀/beta 发布、配置回滚、客户端配置更新状态跟踪等开箱即用的功能,确保配置变更的安全性和风险控制。
-
动态 DNS 服务
支持加权路由的动态 DNS 服务可让您更轻松地在数据中心内的生产环境中实现中间层负载平衡、灵活的路由策略、流量控制和简单的 DNS 解析服务。动态 DNS 服务可让您更轻松地实现基于 DNS 的服务发现。
Nacos 提供了一些简单的DNS API TODO供您管理您的 DNS 域名和 IP。
-
服务治理和元数据管理
Nacos 允许您从微服务平台构建者的角度管理所有服务和元数据。这包括管理服务描述、生命周期、服务静态依赖关系分析、服务健康状态、服务流量管理、路由和安全规则、服务 SLA 和一线指标。
-
特性大图:从功能特性和非功能特性两个方面来介绍我们要解决的问题域的特性。
-
架构大全:通过清晰的架构快速进入Nacos世界
-
业务图景:当前功能可以支持的业务场景以及最佳实践
-
生态大局:系统梳理Nacos与主流技术生态的关系
-
优势大图:展示Nacos核心竞争力
-
战略图景:Nacos从战略到战术层面的宏观优势
Docfile+docker-compose.yml 快速搭建 nacos 单机
Dockerfile
FROM mysql:8.0.31
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
docker-compose.yml
声明一下,我的主机叫 slave ,大家在配置的时候写上自己的主机名
services:
nacos:
image: nacos/nacos-server
container_name: nacos-standalone-mysql
environment:
- PREFER_HOST_MODE=slave
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_devtest
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- NACOS_AUTH_IDENTITY_KEY=2222
- NACOS_AUTH_IDENTITY_VALUE=2xxx
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
volumes:
- ./standalone-logs/:/home/nacos/logs
ports:
- "8848:8848"
- "9848:9848"
depends_on:
mysql:
condition: service_healthy
restart: always
mysql:
container_name: mysql
image: nacos-mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=nacos_devtest
- MYSQL_USER=nacos
- MYSQL_PASSWORD=nacos
- LANG=C.UTF-8
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 5s
timeout: 10s
retries: 10
最后访问 web 页
192.168.142.156:8848/nacos