本文來自於個人我的主頁: 初識 Nacos(上) 學習《Spring Cloud 服務發現新選擇》,轉載請保留連接 ;)
最近在從零接觸Alibaba 開源項目Nacos,學習的是小馬哥(mercyblitz)的技術週報,以前看了後忘記總結,致使也沒有什麼印象。因此如今決定學習一章,寫一篇學習感悟,而且持續更新下去。首先這一章節主要講得是服務發現(Service Discovery),做爲 Spring Cloud 最核心功能特性之一,受到業界的普遍關注。html
在現行的 Spring Cloud 服務發現技術體系中,以 Spring Cloud Eureka 爲典型表明,它做爲官方推薦解決方案,被業 界普遍運用,然而其設計缺陷也很是之明顯。還有Spring Cloud Zookeeper和Spring Cloud Consul。那麼先介紹這三種的特色吧。java
綜上所述,讓我得出了Spring Cloud服務發現方案對比結果:git
那麼這三種服務發現的基本模式是怎樣的呢?如今來談談Spring cloud 服務器發現模式。github
sping-cloud-start-*
XXApplication.java
文件中添加@EnableDiscoveryClient
,註解開啓服務註冊與發現功能。如下我以Eureka發現模式爲例:算法
resources-application.properties
中分別配置好二者的端口號,像客戶端這塊還須要寫好應用名稱、以及Eureka 服務器地址。XXApplication.java
了,像個人服務端端口是12345
,就訪問localhost:12345。頁面跳轉以下圖所示,恭喜你的Eureka服務已經起來了。Instances currently registered with Eureka
出現EUREKA-CLIENT
的狀態信息。spring-cloud-alibaba-nacos-discovery 做爲 Spring Cloud Alibaba 服務發現的核心模塊,其架構基礎與 Spring Cloud 現行方案相同,均構建在 Spring Cloud Commons 抽象。所以,它在 Spring Cloud 服務發現的使用上,開發人員將不會心存任何的違和感。spring
從功能特性而言,spring-cloud-alibaba-nacos-discovery 僅是 Nacos 在 Spring Cloud 服務發現的解決方案,Nacos 在 Spring Cloud 中還支持分佈式配置的特性。與開源產品不一樣的是,Nacos 曾經歷過中國特點的超大流量考驗,以及巨型規模的集羣實施,不管從經驗積累仍是技術沉澱,現行 Spring Cloud 解決方案 都是沒法比擬的。然而這並不是說明它天衣無縫,在內部的評估和討論中,也發現其中差距和文化差別。爲了解決這些問題,討論將從總體架構和設計思考兩個方面,介紹 Nacos 與 Spring 技術棧整合狀況,以及與其餘開源方案的適配思考,總體上,下降 Nacos 使用門檻,使遷移成本接近爲零,達到「一次開發,處處運行」的目的。
那麼接下來咱們經過Github上,Spring Cloud Alibaba項目中官方給出的指導文檔來配置啓動 Nacos吧。瀏覽器
首先須要獲取 Nacos Server,支持直接下載和源碼構建兩種方式。服務器
啓動 Server,進入解壓後文件夾或編譯打包好的文件夾,找到以下相對文件夾 nacos/bin,並對照操做系統實際狀況之下以下命令。網絡
sh startup.sh -m standalone
cmd startup.cmd
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
SpringApplication.run
)@SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @RestController class EchoController { @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET) public String echo(@PathVariable String string) { return string; } } }
spring.application.name=service-provider server.port=18082
啓動應用,支持 IDE 直接啓動和編譯打包後啓動。架構
ProviderApplication
,執行 main 方法啓動應用。mvn clean package
將工程編譯打包,而後執行 java -jar nacos-discovery-provider-example.jar
啓動應用。在瀏覽器輸入此地址http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=service-provider 並點擊跳轉,能夠看到服務節點已經成功註冊到 Nacos Server。