1.理论知识
服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:
- 服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
- 动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
- 动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
- 服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
2.Nacos 地图
- 特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
- 架构大图:通过清晰架构,让您快速进入 Nacos 世界
- 业务大图:利用当前特性可以支持的业务场景,及其最佳实践
- 生态大图:系统梳理 Nacos 和主流技术生态的关系
- 优势大图:展示 Nacos 核心竞争力
- 战略大图:要从战略到战术层面讲 Nacos 的宏观优势
3.安装
3.1预备环境准备
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
3.2 下载源码或者安装包
通过源码和发行包两种方式来获取 Nacos。
3.2.1从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
下载编译后压缩包方式
您可以从 最新稳定版本 下载 nacos-server-$version.zip
包。
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
3.3 win版下载安装包
下载地址:Nacos Server 下载 | Nacoshttps://nacos.io/download/nacos-server/
3.4启动服务器
- 注:nacos的运行至少在2C4g60g*3的机器配置下运行
3.4.1 Linux/Unix/Mac
进入到nacos安装包下bin文件夹下,运行cmd
3.4.1.1单机启动命令
(standalone代表着单机模式运行):
sh startup.sh -m standalone
3.4.1.2 ubuntu系统
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
3.4.2 windows系统
startup.cmd -m standalone
3.5 关闭服务器
C:\Users\Administrator\Desktop\nacos\bin进入到nacos安装包下的bin目录双击以下命令或进入命令行使用
3.5.1 Linux/Unix/Mac
#命令行使用
sh shutdown.sh
3.5.2 windows
#命令行和双击
shutdown.cmd
4.快速创建一个Nacos
- 创建一个maven项目
- .向pom.xml文件中导入依赖
<!-- Web 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<!-- nacos 配置的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<!-- 服务注册的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
- bootstrap.yml配置文件
spring:
application:
name: nacosdemo
cloud:
nacos:
config:
# context-path: /nacos
server-addr: 127.0.0.1:8848
file-extension: properties
discovery:
server-addr: 127.0.0.1:8848
config:
import: optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
server:
port: 9000
- 创建controller层
package com.soft.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//将controller层注入到容器中
@RestController
//给类上加入一个虚拟路径,便于区分其他congtroller层请求
@RequestMapping("/config")
//实现配置自动更新
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping
public boolean get(){
return useLocalCache;
}
}
- 启动类挂载两个注解
-
@SpringBootApplication//自动装配注解
-
@EnableDiscoveryClient//能够让注册中心能够发现,扫描到当前服务。
- 项目启动后,通过以下语句,在命令行中调用
- 命令行使用
curl - X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacosdemo.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
- 在网页调用http:localhost:9000/config显示userLocalCache的值true
注:初次制作博客,如有错误,敬请指正,不喜勿喷,谢谢