注册中心
当远程连接的微服务对象是集群时,不能根据固定的ip及端口调用
注册中心原理
-
服务提供商向注册中心注册服务信息
-
服务调用者向注册中心订阅对应的服务提供商注册的信息
-
服务调用者进行负载均衡(通过负载均衡的算法(轮询,加权轮询,随机等),选择其中的一个实例
-
服务调用者远程调用对应的实例
注:如果服务提供商信息变更
-
服务提供商与注册中心之间有心跳续约,如果某一次检测到变更,会重新注册服务信息
-
注册中心推送变更给服务调用者,服务调用者进行更新
目前开源的注册中心框架有很多,国内比较常见的有:
- Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用
- Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用
- Consul:HashiCorp公司出品,目前集成在SpringCloud中,不限制微服务语言
Nacos
国内产品,中文文档比较丰富,而且同时具备配置管理功能
Docker中部署
/root/nacos/custom.env
文件
修改主机IP、用户、密码(若使用其他数据库注意更换)
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=IP
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=用户(root)
MYSQL_SERVICE_PASSWORD=密码
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
root
目录下
如果存在准备好的nacos
镜像, 则执行命令docker load -i 镜像包.tar
然后运行
docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
--network 网络名称 \
nacos/nacos-server:latest (或nacos/nacos-server:v2.1.0-slim,镜像名:版本号)
服务注册
- 引入
nacos discovery
依赖
<!-- nacos 服务初测发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 配置
Nacos
地址
spring:
application:
name: 服务器名称
cloud:
nacos:
server-addr: IP:nacos的端口