nodejs微服务:服务发现与Consul

服务发现

  • 我们在做微服务开发的时候,客户端的一个接口可能需要调用N个服务,客户端必须知道所有服务的网络位置(ip+port),如下所示
  • 客户端 Client
    • 服务A (IP 1, PROT 1)
    • 服务B (IP 2, PROT 2)
    • 服务C (IP 3, PROT 3)
    • 服务N (IP N, PROT N)
  • 客户端需要知道目前所有可用的服务端的ip和端口
  • 以往的做法是把服务的地址放在配置文件或者数据库中,这样就有以下几个问题:
    • 需要配置N个服务的网络位置,加大配置的复杂性
    • 服务的网络位置变化,需要改变每个调用者的配置
    • 集群的情况下,难以做负载(反向代理的方式除外)
  • 总结起来一句话:服务多了,配置很麻烦,问题一大堆
  • 所以现在就选择服务发现来解决这些问题,具体设计如下:
    • 服务发现系统
      • 服务A (注册IP+PORT)
      • 服务B (注册IP+PORT)
      • 服务C (注册IP+PORT)
      • 服务N (注册IP+PORT)
    • 客户端 <------ 根据服务名获取IP+PORT ------ 服务发现系统
  • 与之前解决方法不同的是,加了个服务发现模块,服务端把当前自己的网络位置注册到服务发现模块(这里注册的意思就是告诉)
  • 服务发现就以K-V的方式记录下,K一般是服务名,V就是IP:PORT
  • 服务发现模块定时的轮询查看这些服务能不能访问的了(这就是健康检查)
  • 客户端在调用服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务
  • 这样的方式是不是就可以解决上面的问题了呢?
  • 客户端完全不需要记录这些服务的网络位置,客户端和服务端完全解耦!

常见的服务发现框架(微服务注册中心)

  • Etcd:k8s 内嵌的服务发现
  • Mdns:以前mdns是go-micro中默认自带的服务发现go-micro的默认服务发现也是consul
  • Consul:是一个分布式高可用的系统,是为基础设施提供服务发现和服务配置的工具,常应用于grpc、 go-micro中
  • Zookeeper:是 Apache 公司为分布式应用设计的协调服务,java中较常用
  • Eureka:Netflix 开源的一款提供服务注册和发现的产品,已闭源,提供了完整的服务注册和发现,springcloud中最核心的组件之一,需要手动配置 Eureka Server 服务器
  • Nacos:Alibaba 开源的一款专注于动态服务发现,配置和服务管理的组件

关于服务发现框架Consul

  • Consul是Go语言写的开源的服务器发现软件,用于实现分布式系统的服务发现与配置
  • 包含多个组件, 但是作为一个整体, 为你的基础设施提供服务发现和服务配置的工具
  • 它提供以下关键特性:
    • 服务发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册
    • 健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面 (心跳机制)
    • 键/值存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作
    • 多数据中心:无需复杂的配置,即可支持任意数量的区域
      • 官方建议:最好是三台或者三台以上的consul在运行,同名服务最好是三台或三台以上
      • 默认可以搭建集群
    • Web管理界面:官方提供web管理界面
    • 负载均衡:可实现负载均衡功能

Consul安装

  • Consul用Golang实现,因此具有天然可移植性 (支持 Linux、windows和macOS),安装包仅包含一个可执行文件
  • Consul安装非常简单,只需要下载对应系统的软件包并解压后就可使用

1 ) Windows安装

2 ) Mac安装

  • 方式1:

    • $ brew tap hashicorp/tap
    • $ brew install hashicorp/tap/consul
  • 方式2:

    • 下载consul,地址:https://releases.hashicorp.com/consul
    • 注意下载非ent的,选择 consul_x.xx.x_darwin_amd64.zip (按照自己机型cpu架构选择)
    • 解压consul到某一个目录,配置consul到环境变量,或者下载解压后,将文件放置在 /usr/local/bin 目录下
    • 查看安装情况:$ consul --version

3 ) Linux安装

  • 方式1:
    • 1 )Ubuntu
    • $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    • $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    • $ sudo apt update && sudo apt install consul
    • 2 )CentOS
    • $ sudo yum install -y yum-utils
    • $ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
    • $ sudo yum -y install consul
  • 方式2:
    • 下载consul,地址:https://releases.hashicorp.com/consul
    • 解压 consul到某一个目录, 配置consul到环境变量
      • [root@localhost ~]# mkdir -p usr/local/consul
      • [root@localhost ~]# unzip consul_1.11.4_linux_arm64.zip -d /usr/local/consul/
      • [root@localhost ~]# cd /usr/local/consul/
      • [root@localhost ~]# ./consul -v
    • 注意:如果要全局使用请把consul加入到环境变量,或者下载解压后,将文件放置在 /usr/local/bin 目录下
    • 安装 Consul后,通过执行 consul命令,你可以看到命令列表的输出: $ consul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值