服务注册和发现

在微服务中,有几个必不可少的组成成分:

  • 服务网关
  • 服务注册和发现
  • 后端通用服务
  • 前端通用服务

1、为什么分布式需要服务注册和发现

这篇主要是介绍微服务中服务注册和发现,我们知道微服务是分布式的,那么分布式为什么需要服务注册和发现?

现在有一台服务器A和一台服务器B,当A服务器需要调用B服务器的时候,应该怎么调用呢?可能很多人觉得直接将调用地址写成服务器B不就好了。

但是分布式是多节点的,当A服务器拥有多台,B服务器也拥有多台的时候,这个方法就不可取了,而且每个节点的部署方案很有可能是动态的,加之服务器也有宕机的情况,这个时候我们就需要一个服务注册中心了。

当B服务器每增加一台,都会向注册中心进行上报,当A服务器需要调用的时候,直接找注册中心就可以了,而注册中心就是分布式最重要的基础部分。

2、客户端发现

上面说到,当A服务器需要向B服务器进行调用的时候,需要找注册中心要B服务器的地址,那注册中心会怎么做呢?

注册中心会把一堆的服务器B的信息都给A服务器,A服务器会通过某种机制挑选出一个地址进行调用,这种机制可能是轮询、随机、哈希等等,也就是我们所说的负载均衡策略,而这种方式被称为客户端发现。

3、服务端发现

除了客户端发现,还有没有其他的方式呢?当然有,就是服务端发现,服务端发现会出现一个代理,这个代理会从众多的服务器B中挑选一台提供给服务器A,而不用服务器A自己做选择。

4、服务发现的两种方式

不管是客户端发现,还是服务端发现,他们要做的都是提供一个调用地址,那么应该选择哪种呢?二者的利弊是什么呢?

客户端发现优点:

  • 简单直接,不需要代理的出现
  • 知道所有可用的实际地址

客户端发现缺点:

  • 需要自己实现逻辑挑出一个地址

服务端发现优点:

  • 由于代理的介入,服务器A对服务器B是透明而不可见的

5、二者的实现方式:

客户端发现:

  • Eureka
  • ···

服务端发现:

  • Nginx
  • Zookeeper
  • Kubernetes
  • ···

最后还要知道一个微服务的特点:异构,不同的节点可以是不同的语言或者使用不同的数据库,SpringCloud是纯JAVA的,他提供Rest接口给其他的语言进行调用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值