上一篇:微服务架构演变过程(下) | 带你读《Spring Cloud Alibaba(2019)》之二
下一篇:Nacos如何整合SpringCloud ?| 带你读《Spring Cloud Alibaba(2019)》之四
本文来自于《精通Spring Cloud Alibaba》课程的整理,讲师为余胜军,点击查看视频内容。
本文系志愿者整理,供配合学习中心课程使用,不做商业用途。
服务注册与发现nacos
Nacos产生的背景
Nacos分布式注册与发现功能 | 分布式配置中心
产生背景rpc远程调用中,服务的url的治理
Rpc的远程调用框架 HttpClient、gprc、dubbo、rest、openfeign等。
传统的rpc远程调用中存在哪些问题
1、超时的问题
2、安全的问题
3、服务与服务之间URL地址管理
在我们微服务架构通讯,服务之间依赖关系非常大,如果通过传统的方式管理我们服务的url地址的情况下,一旦地址发生变化的情况下,还需要人工修改rpc远程调用地址。
服务治理基本的概念
每个服务的url管理地址非常复杂,所以这时我们采用服务url治理技术,可以整个实现动态服务注册与发现、本地负载均衡、容错等。
rpc远程调用中,地址中 域名和端口号/调用的方法名称:
域名和端口号/调用的方法名称
192.168.212.110:8080/getUser
方法名称不会改变,但是域名和端口号有可能会改变。
之前的处理方式是把每个服务器地址信息和端口人工存放到数据库表中
Id serviced ip 端口号
Mayikt-member 192.168... 8082
Mayikt-member 192.168... 8081
基于数据库形式实现服务url治理:
缺点:维护成本非常高、没有完全绝对实现动态智能
那么思考是否有更好的方案?
微服务中的注册中心。
整个微服务架构中最为核心的肯定是 注册中心。
注册中心:实际就是存放我们整个微服务中的服务的地址信息,能够实现动态感知。
注册中心:Dubbo依赖Zookeeper、Eureka、Consul、Nacos、Redis、数据库
服务注册中心的概念
每次调用该服务如果地址直接写死的话,一旦接口发生变化的情况下,这时候需要重新发布版本才可以该接口调用地址,所以需要一个注册中心统一管理我们的服务注册与发现。
注册中心:我们的服务注册到我们注册中心,key为服务名称、value为该服务调用地址,该类型为集合类型。Eureka、consul、zookeeper、nacos等。
服务注册:我们生产者项目启动的时候,会将当前服务自己的信息地址注册到注册中心。
服务发现: 消费者从我们的注册中心上获取生产者调用的地址(集合),在使用负载均衡的策略获取集群中某个地址实现本地rpc远程调用。
微服务调用接口常用名词
整个微服务的注册中心实现原理
生产者:提供接口被其他服务调用
消费者:调用生产者接口实现消费
服务注册:提供服务接口地址信息存放
服务发现:
服务注册原理实现:
1、生产者启动的时候,key=服务的名称 value= ip 和端口号,注册到我们的微服务注册中心上。
Mayikt-member 192.168.212.110:8080
Mayikt-member 192.168.212.110:8081
2、注册存放服务地址列表类型:key唯一,列表是list集合。
May<Key,List(String)>
{
Mayikt-member:["192.168.212.110.8080" "192.168.212.110.8081"]
}
3、我们的消费者从我们注册中心上根据服务名称查询服务地址列表(集合)
Mayikt-member===["192.168.212.110.8080" "192.168.212.110.8081"]
4、消费者获取到集群列表之后,采用负载均衡器选择一个地址实现rpc远程调用
Nacos的基本的介绍
Nacos可以实现分布式服务注册与发现/分布式配置中心框架。
默认的端口号是8848。
官网的介绍: https://nacos.io/zh-cn/docs/what-is-nacos.html
Nacos的环境的准备
Nacos可以在linux/windows/Mac版本上都可以安装
具体安装教程地址:https://nacos.io/zh-cn/docs/quick-start.html
登录默认的账号和密码是 nacos nacos ,登录之后显示如下的界面:
手动实现服务注册与发现
1.实现服务注册
发送post请求:
'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
2.实现服务发现
http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName
详细步骤操作:https://nacos.io/zh-cn/docs/quick-start.html