微服务之注册中心对比

前言

        微服务化是当前一大趋势,注册中心则是微服务最基础的组件,是之前组内安排的任务,于是把结果分享出来,本文对当前业界比较流行的微服务组件进行了调研,并作出了总结。

正文

        当前对微服务组件的调研维度如下:社区生态热度、易用性、性能、cap分布式特性、当前组件维护状态、重点功能等。

组件介绍

  1. eureka:netflix公司产品,springcloud1.X版本集成,后续版本宣布不再开源;
  2. nacos:阿里产品,springcloud-alibaba集成,近期开源,版本0.9.0,基于springboot2.X,服务注册中心与配置中心可以集成配置。
  3. consul:HashiCorp 公司推出的开源工具。

组件使用

1. eureka

        server配置

pom引用

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

yml配置

eureka:
  instance:
    hostname: localhost
    instance-id: localhost:${server.port}
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
  server:
    renewalPercentThreshold: 0.49
    renewalThresholdUpdateIntervalMs: 180000 # 3mins
    #peerEurekaNodesUpdateIntervalMs: 500

springbootapplication启动类加入@EnableEurekaServer

        client配置

pom引用
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
 
yml配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10001/eureka

springbootapplication启动类加入@EnableEurekaServer,直接启动server即可。

2. nacos

server配置:

        server下载安装,并启动, unzip nacos-server- v e r s i o n . z i p 或 者 t a r − x v f n a c o s − s e r v e r − version.zip 或者 tar -xvf nacos-server- version.ziptarxvfnacosserverversion.tar.gz

cd nacos/bin

sh startup.sh -m standalone

client配置:

pom引用

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 <version>0.9.0.RELEASE</version>
</dependency>

yml配置
spring:
  application:
    name: nacos-demo
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

management:
  endpoints:
    web:
      exposure:
        include: '*'

springbootapplication启动类加入@EnableEurekaClient。

3. consul

server配置:

官方地址下载,并且启动

以单节点启动
consul agent -advertise 127.0.0.1 -data-dir=/tmp/consul -server -bootstrap

client配置

pom引用
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-consul-discovery</artifactId>
 <version>2.1.1.RELEASE</version>
</dependency>

yml配置
spring:
  application:
    name: consul-provider
  cloud:
    consul:
      host: 127.0.0.1
      port: 8500
      discovery:
        register: true
        service-name: consul-provider

springbootapplication启动类加入@EnableEurekaClient。

使用对比

维度eurekanacosconsul
社区生态社区热度高社区热度较低、中文文档多社区热度较高
性能8核16G服务端定时轮询查询更新,当服务数量过多(8000-10000)时,压力过大8核16G单个节点9000以上的连接时会出现硬件负载过高场景暂无
cap分布式特性AP可用性以及分区容错性;可用性:无主从节点,一个节点挂了自动切换其他节点,但可能会导致不同的注册中心节点的服务列表不一致,可以接受AP或CPCP:作为分布式集群来说,是CP
维护状态1.X停止维护;2.0版本闭源近期才开源;只到0.9.0.release;一直在跟着spring cloud维护,目前到2.1.1
重点功能,特点1.springcloud-starter服务,开箱即用2.有控制台1、支持springcloud 服务发现、配置管理2、有web ui控制台3、通过了大规模的性能测试4、注册中心与配置中心有控制台;缺点:暂时没有对consul集群的配置方式,即服务无法注册多个consul节点
注册使用service 注册时向eureka server发送自身服务信息;service每30秒向eureka server续约服务;service 每30秒拉取服务列表至本地缓存。同样是使用服务不断上报心跳的方式保持在注册中心的活跃性;服务发现。一、不断从服务端查询可用服务实例。二、从已变服务队列中通知服务持有者的查询任务,服务发生变更时更新本地服务列表。既支持consul主动检查服务的情况,也支持服务主动向consul发送心跳报告自己的健康状况。
其他k8s集成,dubbo集成均支持

小结

        eureka、nacos、consul均能支持微服务注册及web ui控制台的最基础的需求,但eureka当前停止开源、consul暂时不支持client配置注册中心集群,按需选择。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值