spring cloud Alibaba 服务发现Nacos学习笔记四
服务发现Nacos
- 一、服务发现原理
- 二、Nacos 下载安装
- 三、将应用注册到Nacos
- 四、服务发现的领域模型
- 五、服务发现原数据
一、服务发现原理
1、现有架构问题:用户中心服务提供者变化,消费者无法请求,怎么办?
2、定义:消费者总能找到服务提供者的机制就叫服务发现
3、原理(用mysql类比)
- 微服务启动就在服务发现组件插入一条记录,内容中心想要找到用户中心,只需要查找名字为user-center 并且状态为up的微服务(存在问题:每次查询都需要发送请求到服务发现组件,服务发现组件压力会十分大,且服务发现组件挂了,所有微服务就不能正常调用了)
- 贴近生产服务发现机制,微服务会定时发送查询请求到服务发送组件,然后进行缓存,调用其他微服务则直接读本地缓存(提升性能,不用每次调用都发送请求到服务发送组件;且服务发送组件挂了,不会影响微服务之间调用,只是没办法更新)
PS:假设微服务宕机了,但服务发现组件却无法得知,需要修改表结构 - 增加一个心跳字段,用户中心微服务会向服务发现组件定时发送心跳,告知还在运行,若用户中心微服务很久都没发送心跳,则服务发送组件默认认为该此服务已挂,就把状态标记为down,内容中心定时发送请求后,得知地址发生变化,就不再去调用挂掉的用户中心微服务实例
二、Nacos 下载安装
1、定义:服务发送组件,也是配置组件,解决服务A如何找到服务B,管理微服务配置
2、架构演进
3、搭建Nacos Server:
- 下载 地址
PS:如何选择版本,和client、provider兼容,idea选择spring-cloud-alibaba-dependencies使用Ctrl+B打开文件,然后搜索nacos
- 搭建:参考文档 ,按指引启动,即成功搭建单机版nacos,网页输入localhost:8848/nacos,输入nacos/nacos 账号/密码 进入管理控制台
三、将应用注册到Nacos
1、遵循三板斧
加依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery 加注解:新版本不需要
写配置(yml配置文件):
spring:
cloud:nacos:
discovery: #nacos server地址
server-addr: localhost:8848
PS:clean install 启动后,提示warn no service to register,加入以下配置
spring:
application:
# 服务名称尽量用-,不用要_,更不要用特殊字符
name: user-center
PS:重新启动,可到nacos控制台查看
2、验证内容中心总是能找到用户中心机制
启动用户中心、内容中心,访问http://localhost:8088/test2,即可得到以下信息
[{
"serviceId": "user-center",
"host": "192.168.0.102",
"port": 8888,
"secure": false,
"metadata": {
"nacos.instanceId": "192.168.0.102#8888#DEFAULT#DEFAULT_GROUP@@user-center",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"preserved.register.source": "SPRING_CLOUD"
},
"uri": "http://192.168.0.102:8888",
"scheme": null,
"instanceId": null
}, {
"serviceId": "user-center",
"host": "192.168.0.102",
"port": 8080,
"secure": false,
"metadata": {
"nacos.instanceId": "192.168.0.102#8080#DEFAULT#DEFAULT_GROUP@@user-center",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"preserved.register.source": "SPRING_CLOUD"
},
"uri": "http://192.168.0.102:8080",
"scheme": null,
"instanceId": null
}]
四、服务发现的领域模型
- namespace:可建开发环境、生产环境、测试环境,三个环境之间是隔离的
- group:不同服务可以划分到一个组,默认为default_group(现有版本暂未使用)
- service:微服务
- cluster1:集群,如内容中心、用户中心可放在北京的机房和南京的机房,配置的时候,设置让北京机房的内容中心优先访问北京机房的用户中心
- instance:微服务实例
PS:namespace需在nacos控制台配置好
五、服务发现原数据
1、定义:配置和服务的描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。
PS:spring cloud Alibaba 0.9.0版本服务级别、集群级别元数据暂未使用
2、作用:
- 提供描述信息
- 让微服务调用更加灵活,如提供微服务版本控制(V1只能访问V1;V2只能访问V2)
3、配置: - 通过控制台
- 配置文件指定
- 版本控制:xxx
还没有评论,来说两句吧...