Springcloud 学习笔记06-Nacos 下载安装与基本使用
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:
register-enabled: true server-addr: 192.168.0.127:8848 #注册中心地址 server: port: 17357
注意:如果不想使用 Nacos 作为您的服务注册与发现,可以将 spring.cloud.nacos.discovery.register-enabled 设置为 false。
第五步:运行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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-08-23 030 SSM综合练习06--数据后台管理系统--SSM权限操作及Spring Security入门
2019-08-23 029 SSM综合练习05--数据后台管理系统--订单分页查询
2019-08-23 028 SSM综合练习04--数据后台管理系统--订单相关操作