1.nacos基本架构及概念
服务 (Service)
服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。
服务注册中心 (Service Registry)
服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。
服务提供方 (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大场景。
2.单机版nacos安装教程
(1)Nacos下载地址:https://github.com/alibaba/nacos/releases
(2)下载完毕后,进行解压后,我们可以看看目录结构:
这里的bin目录里面有windows启动文件startup.cmd,我们双击就能启动了,和大多数windows进程类似。
(3)注意:启动的是单机版的nacos,修改startup.cmd相关脚本
(4)启动后会有一个cmd窗口去打印命令并启动。
(5)访问地址:http://localhost:8848/nacos/index.html
用户名密码:nacos/nacos
3.服务提供者
第一步:创建一个nacos-test项目,包含两个模块nacos-provider和nacos-consumer,在父项目pom.xml文件统一管理springboot、spring cloud和spring cloud alibaba版本。
第二步:先来处理nacos-provider模块项目,在nacos-provider模块项目的pom.xml配置alibaba-nacos-discovery依赖。
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--nacos注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
第三步:编写入口类NacosProvider ,并添加一个EchoController 提供HTTP接口服务。
@SpringBootApplication @EnableDiscoveryClient public class NacosProvider { public static void main(String[] args) { SpringApplication.run(NacosProvider.class,args); } @RestController class EchoController { @GetMapping("/echo/{string}") public String echo(@PathVariable String string) { return "Hello Nacos Discovery " + string; } } }
第四步:在bootstrap.yml文件配置nacos配置中心相关参数。
spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: 192.168.0.127:8848 #注册中心地址 server: port: 17357
第五步:运行nacos-provider,可以从启动日志看到注册到了nacos,打开nacos管理台在服务管理菜单下的服务列表项可以看到注册的实例信息。
4.服务消费者
第一步:接下来处理nacos-consumer模块项目,在nacos-consumer模块项目的pom.xml配置同样加上alibaba-nacos-discovery依赖。
第二步:编写入口类NacosConsumer ,并添加一个TestController提供HTTP接口服务,通过RestTemplate远程调用NacosProvider。
@SpringBootApplication @EnableDiscoveryClient public class NacosConsumer { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(NacosConsumer.class,args); } @RestController public class TestController { private final RestTemplate restTemplate; @Autowired public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;} @GetMapping("/echo/{str}") public String echo(@PathVariable String str) { return restTemplate.getForObject("http://nacos-provider/echo/" + str, String.class); } } }
第三步:在bootstrap.yml文件配置nacos配置中心相关参数。
spring: application: name: nacos-consumer cloud: nacos: discovery: server-addr: 192.168.0.127:8848 #注册中心地址 server: port: 17358
第四步:测试消费者调用提供者接口服务。
参考文献:https://blog.csdn.net/q15102780705/article/details/102571353
https://nacos.io/zh-cn/docs/architecture.html 官方文档
https://www.cnblogs.com/engineer-luke/p/12171071.html