在了解Nacos注册配置中心之前,先了解一下Spring Cloud的相关基础组件有那些
相关介绍
一:nacso
1:基本概念
(1)英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心作者。Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
(2)常见的注册中心:
1. Eureka(原生)
2. Zookeeper(支持,专业的独立产品。例如:dubbo)
3. Consul(原生,GO语言开发)
4. Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
二、Nacos原理
(1)Nacos地图
(1)Nacos结构图
(1)nacos介绍
(2)nacos服务领域模型
(3)Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。
Nacos主要提供以下四大功能:
1. 服务发现和服务健康监测
2. 动态配置服务
3. 动态DNS服务
4. 服务及其元数据管理
(4)注册中心原理
服务注册方法:以Java nacos client v1.0.1 为例子,服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。
(5) 配置中心原理
三、Nacos下载和安装
(1)下载地址和版本
下载地址:https://github.com/alibaba/nacos/releases
下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可
(2)启动nacos服务
- Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式)
启动命令:sh startup.sh -m standalone
- Windows
启动命令:cmd startup.cmd 或者双击startup.cmd运行文件。
访问:http://localhost:8848/nacos
用户名密码:nacos/nacos
二、服务注册
1:配置Nacos客户端的pom依赖
org.springframework.cloud
spring-cloud-dependencies
Hoxton.RELEASE
pom
import
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-openfeign
2、添加服务配置信息
配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息
# 服务名(同时为nacos注册的服务名称)
spring.application.name=service-edu
#springcloud的Nacos 注册中心配置
#Nacos服务地址(本地服务是:127.0.0.1)(部署后需要换成部署的服务器地址)
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3、添加Nacos客户端注解
在客户端微服务启动类中添加注解
@EnableDiscoveryClient
4、启动客户端微服务
1:启动注册中心
2:启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务
二、服务调用
1、在调用端的启动类添加注解
@EnableFeignClients
2、创建包和接口
创建client包
@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。
@GetMapping注解用于对被调用的微服务进行地址映射。
@PathVariable注解一定要指定参数名称,否则出错
@Component注解防止,在其他位置注入CodClient时idea报错
@Component
@FeignClient(name = "service-order")//@FeignClient(name = "服务名称")
public interface OrderClient {
//服务接口的全路径名称,使用@PathVariable需要注明参数名称,如:@PathVariable("courseId") String courseId
@GetMapping("/eduorder/order/isBuyCourse/{courseId}/{memberId}")
public boolean isBuyCourse(@PathVariable("courseId") String courseId, @PathVariable("memberId") String memberId);
}
3、调用微服务
@Autowired
private FeignToUcenterClient feignToUcenterClient;
@ApiOperation(value = "添加评论")
@PostMapping("addComment")
public R addComment(@RequestBody Comment comment, HttpServletRequest request) {
String memberId = JwtUtils.getMemberIdByJwtToken(request);//解析token字符串中的信息,获取id
if(StringUtils.isEmpty(memberId)) {//如果没有值,让用户先登录
return R.error().code(28004).message("请登录");
}
comment.setMemberId(memberId);//将用户id添加
UcenterMember ucenterMember = feignToUcenterClient.selectById(memberId);//调用feign接口,远程调用根据id获取用户信息
//将用户昵称和头像添加
comment.setNickname(ucenterMember.getNickname());
comment.setAvatar(ucenterMember.getAvatar());
commentService.save(comment);//执行添加操作
return R.ok();
相关连接
https://www.jianshu.com/p/39ade28c150d
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html