微服務化是當前一大趨勢,註冊中心則是微服務最基礎的組件,是以前組內安排的任務,因而把結果分享出來,本文對當前業界比較流行的微服務組件進行了調研,並做出了總結。web
當前對微服務組件的調研維度以下:社區生態熱度、易用性、性能、cap分佈式特性、當前組件維護狀態、重點功能等。spring
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
server配置:app
server下載安裝,並啓動, unzip 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。
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配置註冊中心集羣,按需選擇。