服务发现基础
原理
serviceA 调用serviceB,B只要将IP地址告诉A,就跟通讯录一样,但是如果B的地址变了,A的通讯录就得改。实际上多个服务的地址是会变的那么每个服务需要维护所有相关服务的地址,所以使用第三方存储(注册中心),A先从注册中心获取B的地址然后调用。如果B挂掉了,但注册中心还存在B的服务信息,A服务需要调用B服务去服务注册中心获取B的地址然后调用就会出问题,通过心跳机制进行健康检查,注册中心删除无心跳的是来信息。服务调用方每次发起服务请求都要去服务注册中心获取这样很浪费性能,可以在服务A中本地缓存服务列表,,不用每次调用都去注册中心获取。那么产生一个问题,如何更新本地缓存: 当服务注册中心发生变更推送给A,定时查询最新的服务列表更新本地缓存。 服务注册中心非常关键,需要提高可用性,需要使用集群。数据的一致性: 强一致性(Zookeeper),弱一致性(Eureka)
Nacos框架(服务注册中心)
Nacos简介
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。全称Name and Config Service,Nacos的核心功能 = 服务注册 + 动态配置,可以理解为Nacos = SpringCloud Eureka + SpringCloud Config
Nacos环境搭建
- 版本选择
您可以在Nacos的release notes及博客中找到每个版本支持的功能的介绍,当前推荐的稳定版本为1.2.1。
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
- 下载源码或者安装包
你可以通过源码和发行包两种方式来获取 Nacos。-
从 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
-
启动服务器
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令:cmd startup.cmd
或者双击startup.cmd运行文件。
-
服务注册&发现和配置管理
服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test" -
关闭服务器
Linux/Unix/Mac
sh shutdown.shWindows
cmd shutdown.cmd或者双击shutdown.cmd运行文件。
-