Nacos上手實踐(整合Spring Cloud)

Nacos介紹

Nacos是阿里出品的幫助發(fā)現(xiàn)床牧、配置和管理微服務的一款產(chǎn)品,而且這應該是所有服務發(fā)現(xiàn)與管理產(chǎn)品中中文文檔最為友好的遭贸,你完全直接去官網(wǎng)查看戈咳,中文手冊用起來就是爽!

本文主要會快速上手入門使用Nacos,并結合項目(Spring Cloud)來進行開發(fā)。

安裝Nacos

下載對應系統(tǒng)的包著蛙,windows下雙擊 startup.cmd 即可運行删铃,運行成功如圖,默認為8848端口


image

Nacos默認提供了控制臺管理册踩,訪問地址:http://127.0.0.1:8848/nacos 可以看到:

image

默認用戶命和密碼都為:nacos泳姐,登錄進入后可看到管理界面

image

服務發(fā)現(xiàn)

以下為 Nacoas 提供的一個服務發(fā)現(xiàn)的說明圖。


echo service

創(chuàng)建工程

創(chuàng)建provider項目:leon-provider暂吉,指定Spring Boot版本為1.5.21胖秒,然后添加Nacos的相關依賴:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${latest.version}</version>
</dependency>

這里需要注意各個版本的對應關系


image
image

我們的spring boot是屬于1.5.X的序列,所以對應的spring cloud的版本為:Spring Cloud Edgware 慕的。
本位中使用的Nacos的版本為1.0.0阎肝,所以注意,如果需要引入spring cloud alibaba的相關依賴肮街,那么就只能為特定三個版本风题。本文中使用0.1.2版本

image

在leon-provider中添加spring cloud 的相關依賴

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.SR5</spring-cloud.version>
</properties>
    
<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

如果需要使用 Spring Cloud Edgware 版本,請在 dependencyManagement 中添加如下內容

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>0.1.2.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

指定Nacos相關依賴版本為0.1.2

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.SR5</spring-cloud.version>
    <latest.version>0.1.2.RELEASE</latest.version>
</properties>

配置Nacos服務地址

在application.yml中配置Nacos服務信息:

server:
  port: 8080
spring:
  application:
    name: leon-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

給啟動類添加注解:

@EnableDiscoveryClient

啟動程序嫉父,運行成功后沛硅,可以看到Nacos中已經(jīng)有了注冊信息:


image

點擊詳情后可查看當前服務的IP、端口绕辖、健康狀態(tài)等信息摇肌。

在leon-provider工程中創(chuàng)建LoginService類,提供簡單的登錄方法:

@RestController
public class LoginService {

    @RequestMapping("/login")
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
        if (userName.equals("leon") && passWord.equals("888")) {
            return "leon-provider: login success";
        }
        return "leon-provider: login fail";
    }
}

創(chuàng)建Consumer工程

創(chuàng)建leon-consumer工程仪际,指定spring boot围小、Spring cloud版本和leon-provider一致,同時添加spring cloud feign依賴(關于Feign本文不在贅述)

添加Nacos的服務端IP和端口信息树碱,

server:
  port: 8081
spring:
  application:
    name: leon-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

在leon-consumer中創(chuàng)建Feign Client,通過name屬性定義想要調用的服務名稱

@FeignClient(name = "leon-provider")
public interface UserFeignClient {
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord);
}

創(chuàng)建Controller類并調用接口

@RestController
public class UserController {

    @Autowired
    private UserFeignClient userFeignClient;

    /**
     * 用戶賬號名和密碼登錄
     *
     * @param userName
     * @param passWord
     * @return
     */
    @RequestMapping("/login")
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
        return userFeignClient.login(userName, passWord);
    }
}

在啟動類上添加注解 @EnableFeignClients肯适,然后運行l(wèi)eon-consumer服務。刷新控制臺成榜,可以看到注冊服務有兩個:


image

訪問leon-consumer中的login接口框舔,查看是否能正常調用leon-provider服務。

image

管理服務

在控制臺中赎婚,選擇leon-provider服務雨饺,進入詳情后,可以選擇將其下線


image

下線后再次訪問接口惑淳,可以發(fā)現(xiàn)已經(jīng)找不到對應的服務了额港。通過配置的方式可以優(yōu)雅的實現(xiàn)服務上、下線歧焦。


image

注意

服務通過控制臺下線移斩,只是代表會在訂閱端過濾掉肚医,在控制臺不受影響,所以即使下線服務向瓷,在控制臺依然顯示是健康的實例肠套。如果我們停掉服務,就會發(fā)現(xiàn)變成紅色為非健康實例了


配置中心

Nacos同樣提供了線上配置服務猖任,新增配置


image

image

點擊發(fā)布完成配置你稚,然后返回可查看


image

在項目中添加依賴:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>

在Controller中添加方法

@Value("${name:}")
private String name;

@Value("${age:}")
private String age;


@RequestMapping("/config")
public String config() throws NacosException {
    return name + " | " + age;
}

運行程序訪問

image

注意

  • 其中dataId的名字需要和spring.application.name保持一致(出去后綴)
  • 添加@RefreshScope注解才能實現(xiàn)動態(tài)刷新
  • 配置服務的參數(shù)必須配置在bootstrap文件中
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朱躺,隨后出現(xiàn)的幾起案子刁赖,更是在濱河造成了極大的恐慌,老刑警劉巖长搀,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宇弛,死亡現(xiàn)場離奇詭異,居然都是意外死亡源请,警方通過查閱死者的電腦和手機枪芒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谁尸,“玉大人舅踪,你說我怎么就攤上這事×悸” “怎么了抽碌?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長背镇。 經(jīng)常有香客問我咬展,道長泽裳,這世上最難降的妖魔是什么瞒斩? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮涮总,結果婚禮上胸囱,老公的妹妹穿的比我還像新娘。我一直安慰自己瀑梗,他們只是感情好烹笔,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抛丽,像睡著了一般谤职。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亿鲜,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天允蜈,我揣著相機與錄音,去河邊找鬼。 笑死饶套,一個胖子當著我的面吹牛漩蟆,可吹牛的內容都是我干的。 我是一名探鬼主播妓蛮,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼怠李,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛤克?” 一聲冷哼從身側響起捺癞,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咖耘,沒想到半個月后翘簇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡儿倒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年版保,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夫否。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡彻犁,死狀恐怖,靈堂內的尸體忽然破棺而出凰慈,到底是詐尸還是另有隱情汞幢,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布微谓,位于F島的核電站森篷,受9級特大地震影響,放射性物質發(fā)生泄漏豺型。R本人自食惡果不足惜仲智,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姻氨。 院中可真熱鬧钓辆,春花似錦、人聲如沸肴焊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娶眷。三九已至似嗤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間届宠,已是汗流浹背烁落。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工壳咕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顽馋。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓谓厘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寸谜。 傳聞我的和親對象是個殘疾皇子竟稳,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容