服务注册与发现

简介: 每次都去请求一次服务地址,大大的降低的效率,所以需要一个机制去更新这些地址。

服务注册与发现


传统单体架构与分布式架构




单体架构的不足:


所有的服务都集中在一个应用中,一个服务出错,可能导致整个系统宕机

随着用户越来越多,程序承受的并发越来越高,单体应用的并发能力有限。

数据库瓶颈,大量读写操作会直接干死数据库。

分布式架构服务之间调用问题

采用restTemplate或者httpClient等远程调用工具,直接写死服务地址。

直接写死地址,请求永远都只会打到一台服务器,如果提供服务是集群模式,提供服务的只有一台机器

这是可以在集群的机器上加上负载地址来解决直接写死地址的问题。

当集群增加一台机器时,则需要对负载配置更改。

当服务越来越多的时候,服务之间的调用越来约复杂,此时,则需要一个东西用来解决服务的注册问题,将所有服务集中管理。


服务注册与发现理论

如A服务有多台机器,则通过注册中心,将所有的服务注册到注册中心,注册中心维护一张注册表。


当B服务想要调用A服务时,通过注册中心拉取注册表信息,通过负载算法获取一台存活的A服务机器,调用A服务。


当A服务有变动时,


当新增A服务时,通过给注册中心注册服务,注册中心实时更新注册表信息


当减少A服务时,注册中心通过一个健康检查机制更改注册中心注册表信息。


可实时更改A服务可提供服务的数量,地址等信息


关于健康检测机制:

每个服务都会开启一个定时任务,定期向服务注册中心发送一个心跳请求。如果超过指定时间没有发送到服务注册中心,则注册中心会认为这个服务暂时不可用。


二次确认,当服务暂时不可用之后,设定一个时间,如果这个时间内,这个服务还未有心跳请求,则注册中心会认为该服务挂掉了。则从注册表中删除该服务。


服务每次调用之前是否都需要向注册中心拉取可用服务

每次都去请求一次服务地址,大大的降低的效率,所以需要一个机制去更新这些地址。


每个服务都应该有一个调用服务的缓存列表,将所有的服务都缓存起来。每次调用之前从本地缓存中通过负载均衡获取一个服务调用。


常见注册中心


image.png

目录
相关文章
|
11月前
|
小程序
为什么想好的商标名都注册不了
小云经常听到用户抱怨,想破脑袋想出了一个好听的商标名,但是注册时候总是被告知跟其他在先商标近似了,注册成功率不高,知道创业维艰,没想到从树招牌就开始了。
429 0
为什么想好的商标名都注册不了
|
4月前
|
存储 安全 网络安全
如何注册UGREENLink服务?
【7月更文挑战第1天】如何注册UGREENLink服务?
321 3
|
6月前
|
数据安全/隐私保护 开发者
注册实现流程
注册实现流程
33 0
|
弹性计算 数据安全/隐私保护
阿里云注册流程详解
很多小白用户不知道怎么注册阿里云,下面小编就和大家系统讲解一下
|
SQL 前端开发 JavaScript
登录和注册的基本实现,超简单!
登录和注册的基本实现,超简单!
69 0
|
JavaScript Java Nacos
Nacos 关于注册中心注册不上的问题
原因是nacos的版本和spring boot的版本不兼容导致的,当时我们用的nacos的版本是0.2.1,spring boot 的版本是2.1.9,2.1.9的spring boot不兼容nacos0.2.1
184 0
2022阿里云国际注册教程-不用绑定paypal注册
2022阿里云国际注册教程-不用绑定paypal注册,飞机@luotuoemo
2022阿里云国际注册教程-不用绑定paypal注册
|
Java 开发者 微服务
服务注册|学习笔记
快速学习服务注册
|
SQL Dubbo Java
4、服务注册&服务提供者
服务提供者(Service Provider):是指服务的被调用方(即:为其它服务提供服务的服务);服务提供者,作为一个Eureka Client,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等。
196 0
4、服务注册&服务提供者
|
存储 消息中间件 负载均衡
当我们谈注册中心时谈什么?
最近工作重心转向了注册中心,于是想来写一篇关于注册中心的文章
413 0