1、Nacos
1.1 介绍:
在微服务环境下,每个服务调用若基于手动编写的方式会有:多实例部署地址定向问题、代码重复编写问题等等。Nacos则是在此环境下出现的应对这种情况的技术。我们可以将服务注册到Nacos上,Nacos会解决如某一实例宕机之后仍被调用等此类问题。
以下是官方对Nacos的介绍:
欢迎来到 Nacos 的世界!
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1.2 下载与安装:
官方地址: nacos.io/zh-cn/docs/…
1.2.1 下载前环境准备:
Nacos的运行需要依赖于JDK和Maven的环境,此处以Nacos的2.x版本为例
2.x版本Nacos需要 JDK1.8+ 与 Maven3.2.x+
1.2.2 下载与安装:
可以选择拉去Git的源码或者下载发行包(参照官网)
以安装包为例:
- 下载完成后直接bin目录下运行sh startup.sh -m standalone 命令即可
- 建议封装为bat脚本可以省去每次输入命令的繁琐
运行成功后访问 http://localhost:8848/nacos (默认地址)登录账密均为nacos
1.2.3 与项目适配
-
导入依赖 `
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>` -
配置文件更新
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
- 注意: Nacos旧版本需要额外的在启动类声明注解@EnableDiscoveryClient
2.1 注册与发现原理
既为远程调用,则一定存在服务的提供者与消费者
服务提供者:提供一个接口以便于其他微服务调用,例如图示中的item-service
服务消费者:调用其他微服务提供到注册中心的接口,比如cart-service
流程:
- 服务启动时将自己的服务信息上传到注册中心
- 调用者从注册中心订阅自己要访问的服务
- 调用者对实例列表负载均衡,选择自己本次要访问的实例
- 服务列表变更,注册中心会进行通知