分布式注册的中心的实现原理|学习笔记

简介: 快速学习分布式注册的中心的实现原理

开发者学堂课程【精通 Spring Cloud Alibaba分布式注册的中心的实现原理】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/634/detail/10065


分布式注册的中心的实现原理


内容介绍

一、引例

二、注册中心

三、整个微服务的注册中心实现原理

四、服务注册原理实现

 

一、引例

问:

上章中基于数据库形式实现微服务url治理的缺点:维护成本非常高、没有完全绝对实现动态智能,思考是否有更好的方案?

答:

使用微服务中的注册中心

 

二、注册中心

整个微服务架构中最为核心的肯定是注册中心。

1. 概念

注册中心实际就是存放我们整个微服务中的服务的地址信息,能够实现动态感知。(核心思想) 

2. 有哪些?

相当于一个容器,用于存放服务器地址,数据库同理。

注册中心:Dubbo 依赖 Zookeeper、Eureka 、 Consul、Nacos、Redis、数据库

3.面试

面试官常问Nacos与Eureka区别、Eureka和Zookeeper

(其中Nacos结合了Eureka和Zookeeper两者的信息)

 

三、整个微服务的注册中心实现原理

1.步骤

  • 第一步:就是将我们的服务地址信息注册到注册中心中

讲解:

首先选取一个注册中心 Eureka、Nacos 或 Consul,注册中心存放了每个服务器的地址信息,但它并不会存放地址名称和接口,注册中心并不会储存整个完整的服务器,它只会存放 IP 地址和端口号,因为只有这些才会发生改变。

而注册中心的实现是通过会员服务启动时将IP地址和端口号加上服务名称。假设 key为 mayikt-member,而此时的 key 就是会员服务名称,指向的就是有关于会员服务相关的。会员服务就会把IP地址和端口号添加到注册中心中,将其存放起来。

  • 第二步:订单服务使用会员服务名称从注册中心上获得注册信息列表

讲解:

订单服务因为未存放会员服务地址,就需要拿到会员服务名称,再去使用会员服务名称从注册中心上获得注册信息列表。

即通过会员服务中的会员服务名称 mayikt-member 在注册中心获得 IP 地址和端口号(182.168.212.110:8080)。

  • 第三步:获取到地址并且在本地实现 rpc 远程调用其中有很多基础,比如:

HttpClient、rest、openfeign 等

讲解:

订单服务获取到地址后,就会在本地实现 rpc 远程调用,同时 rpc 远程调用会使用许多原客户端 HttpClient、rest、openfeign。

图片1.png

2.会员服务的名词拓展

会员服务在微服务注册中心还有以下的名词:

服务注册:提供服务接口地址信息存放

生产者:提供我们接口被其他的服务调用

消费者:调用接口实现消费

如图图中为订单服务调用会员服务去实现消费,会即员服务为生产者、订单为消费者。

图片2.png

3. 总结

会员服务作为生产者会把当前的 ip 地址和服务端口号,注册到注册中心中,而订单服务作为消费者如果想要通过服务名称在注册中心上去获取调用地址,再在本地实现 rpc 的远程调用。


四、服务注册原理实现

1.生产者启动的时候 key=服务的名称 value ip_和端口号注册到我们的微服务注册中心上

Mayikt-member 192.168.212.110:8080

Mayikt-member 192.168.212.110:8081

(服务地址可能做集群,有多个,因此注册存放服务取地址列表类型是key唯一,列表是list集合类型)

2.注册存放服务取地址列表类型:key唯一,列表是list集合。

Map

{

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”]

(根据 Mayikt-member 去获取数组,而消费者获取列表后再采用负载均衡器选择一个地址进行调用)

4. 消费者获取到集群列表之后,采用负载均衡器选择一个地址实现 rpc 远程调用。

(同时要注意是客户端本地做负载均衡,因为本地效率更高)

相关文章
|
7月前
|
存储 分布式计算 Hadoop
Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
251 3
|
1月前
|
存储 Dubbo Java
分布式 RPC 底层原理详解,看这篇就够了!
本文详解分布式RPC的底层原理与系统设计,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 RPC 底层原理详解,看这篇就够了!
|
20天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
54 4
|
1月前
|
NoSQL Java API
分布式锁的实现原理与应用场景,5 分钟彻底搞懂!
本文详细解析了分布式锁的实现原理与应用场景,包括线程锁、进程锁和分布式锁的区别,以及分布式锁的四种要求和三种实现方式(数据库乐观锁、ZooKeeper、Redis)。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式锁的实现原理与应用场景,5 分钟彻底搞懂!
|
5月前
|
监控 NoSQL Java
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
|
5月前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
100 0
|
2月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
41 1
|
2月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
55 1
|
2月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
147 0
|
7月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
331 2