微服務之註冊中心對比

前言

        微服務化是當前一大趨勢,註冊中心則是微服務最基礎的組件,是以前組內安排的任務,因而把結果分享出來,本文對當前業界比較流行的微服務組件進行了調研,並做出了總結。web

正文

        當前對微服務組件的調研維度以下:社區生態熱度、易用性、性能、cap分佈式特性、當前組件維護狀態、重點功能等。spring

組件介紹

  1. eureka:netflix公司產品,springcloud1.X版本集成,後續版本宣佈再也不開源;
  2. nacos:阿里產品,springcloud-alibaba集成,近期開源,版本0.9.0,基於springboot2.X,服務註冊中心與配置中心能夠集成配置。
  3. consul:HashiCorp 公司推出的開源工具。

組件使用

1. eureka

        server配置bootstrap

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配置springboot

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便可。bash

2. nacos

server配置:app

        server下載安裝,並啓動, unzip nacos-server-version.zip 或者 tar -xvf nacos-server-version.tar.gz分佈式

cd nacos/binide

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。

使用對比

維度 eureka nacos consul
社區生態 社區熱度高 社區熱度較低、中文文檔多 社區熱度較高
性能 8核16G服務端定時輪詢查詢更新,當服務數量過多(8000-10000)時,壓力過大 8核16G單個節點9000以上的鏈接時會出現硬件負載太高場景 暫無
cap分佈式特性 AP可用性以及分區容錯性;可用性:無主從節點,一個節點掛了自動切換其餘節點,但可能會致使不一樣的註冊中心節點的服務列表不一致,能夠接受 AP或CP CP:做爲分佈式集羣來講,是CP
維護狀態 1.X中止維護;2.0版本閉源 近期纔開源;只到0.9.0.release; 一直在跟着spring cloud維護,目前到2.1.1
重點功能,特色 1.springcloud-starter服務,開箱即用2.有控制檯 一、支持springcloud 服務發現、配置管理二、有web ui控制檯三、經過了大規模的性能測試四、註冊中心與配置中心 有控制檯;缺點:暫時沒有對consul集羣的配置方式,即服務沒法註冊多個consul節點
註冊使用 service 註冊時向eureka server發送自身服務信息;service每30秒向eureka server續約服務;service 每30秒拉取服務列表至本地緩存。 一樣是使用服務不斷上報心跳的方式保持在註冊中心的活躍性;服務發現。1、不斷從服務端查詢可用服務實例。2、從已變服務隊列中通知服務持有者的查詢任務,服務發生變動時更新本地服務列表。 既支持consul主動檢查服務的狀況,也支持服務主動向consul發送心跳報告本身的健康情況。
其餘 k8s集成,dubbo集成均支持

小結

        eureka、nacos、consul均能支持微服務註冊及web ui控制檯的最基礎的需求,但eureka當前中止開源、consul暫時不支持client配置註冊中心集羣,按需選擇。

相關文章
相關標籤/搜索