SpringCloud無介紹快使用拇舀,nacos注冊中心的基本使用(十八)

@TOC

問題背景

從零開始學springcloud微服務項目
注意事項:

  • 約定 > 配置 > 編碼
  • IDEA版本2021.1
  • 這個項目,我分了很多篇章牌借,每篇文章一個操作步驟碍庵,目的是顯得更簡單明了
  • controller調service映企,service調dao
  • 項目源碼以及sentinel安裝包

nacos注冊中心

1 可以直接參考官網的安裝手冊進行安裝nacos
2 新建子模塊


3 選擇jdk1.8

4 輸入服務名:cloudalibaba-provider-payment9001和cloudalibaba-provider-payment9002

5 引入pom依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud2022</artifactId>
        <groupId>com.yg</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-provider-payment9001</artifactId>

    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringBoot整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

6 新建application.yml文件

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

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

7 整體目錄結構


新增cloudalibaba-consumer-nacos-order83訂單微服務

1 新建服務名:cloudalibaba-consumer-nacos-order83,導入pom依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud2022</artifactId>
        <groupId>com.yg</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-consumer-nacos-order83</artifactId>

    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引入自己定義的api通用包静浴,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.yg</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- SpringBoot整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

2 創(chuàng)建application.yml文件

server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址


#消費者將要去訪問的微服務名稱(注冊成功進nacos的微服務提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3 創(chuàng)建啟動類

package com.yg.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Author suolong
 * @Date 2022/6/20 18:29
 * @Version 2.0
 */
@SpringBootApplication
@EnableDiscoveryClient
public class OrderNacosMain83 {

    public static void main(String[] args) {
        SpringApplication.run(OrderNacosMain83.class, args);
    }

}

4 新增負載均衡http調用配置類

package com.yg.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @Author suolong
 * @Date 2022/6/15 20:53
 * @Version 2.0
 */
@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced // 使用@LoadBalanced注解賦予RestTemplate負載均衡的能力
    public RestTemplate restTemplate()
    {
        return new RestTemplate();
    }

}

5 新增controller類

package com.yg.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @Author suolong
 * @Date 2022/6/20 18:33
 * @Version 2.0
 */
@RestController
public class OrderNacosController {

    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }


}

6 整體目錄結構


7 啟動nacos堰氓,賬號:nacos 密碼:nacos 啟動各個微服務,登錄nacos:http://localhost:8848/nacos

8 使用postman調用服務實現負載均衡:http://localhost:83/consumer/payment/nacos/1


nacos注冊中心對比

1 nacos全景圖



2 nacos與CAP




3 nacos的CP與AP切換
  • C是所有節(jié)點在同一時間看到的數據是一致的苹享;而A的定義是所有的請求都會收到響應双絮。
  • 何時選擇使用何種模式
  1. 如果不需要存儲服務級別的信息且服務實例是通過nacos-client注冊,并能夠保持心跳上報得问,那么就可以選擇AP模式囤攀。當前主流的服務如 Spring cloud 和 Dubbo 服務,都適用于AP模式宫纬,AP模式為了服務的可能性而減弱了一致性焚挠,因此AP模式下只支持注冊臨時實例
  2. 如果需要在服務級別編輯或者存儲配置信息,那么 CP 是必須哪怔,K8S服務和DNS服務則適用于CP模式宣蔚。
    CP模式下則支持注冊持久化實例向抢,此時則是以 Raft 協(xié)議為集群運行模式,該模式下注冊實例之前必須先注冊服務胚委,如果服務不存在挟鸠,則會返回錯誤
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

SpringCloud無介紹快使用,Seata處理分布式事務(二十五)
SpringCloud無介紹快使用亩冬,sentinel服務熔斷功能(二十四)
SpringCloud無介紹快使用艘希,sentinel注解@SentinelResource的基本使用(二十三)
SpringCloud無介紹快使用,sentinel熱點key限流與系統(tǒng)規(guī)則的基本使用(二十二)
SpringCloud無介紹快使用硅急,sentinel熔斷降級和限流的基本使用(二十一)
SpringCloud無介紹快使用覆享,Nacos集群和Nginx代理(二十)
SpringCloud無介紹快使用,nacos配置中心的基本使用(十九)
SpringCloud無介紹快使用营袜,nacos注冊中心的基本使用(十八)
SpringCloud無介紹快使用撒顿,gateway通過微服務名實現動態(tài)路由(十七)
SpringCloud無介紹快使用,gateway的基本使用(十六)
SpringCloud無介紹快使用荚板,Ribbon負載均衡工具與OpenFeign的使用(十五)
SpringCloud無介紹快使用凤壁,使用Zookeeper替換Eureka服務注冊與發(fā)現(十四)
SpringCloud無介紹快使用,服務發(fā)現Discovery和Eureka自我保護(十三)
SpringCloud無介紹快使用跪另,集群cloud-provider-payment8002搭建(十二)
SpringCloud無介紹快使用拧抖,集群Eureka服務注冊中心cloud-eureka-server7002搭建(十一)
SpringCloud無介紹快使用,單機Eureka服務注冊中心cloud-eureka-server7001搭建(十)
SpringCloud無介紹快使用免绿,新建cloud-api-commons公共模塊module(九)
SpringCloud無介紹快使用唧席,新建子module消費者訂單模塊(八)
SpringCloud無介紹快使用,熱部署devtools配置(七)
SpringCloud無介紹快使用嘲驾,子module提供者支付微服務業(yè)務開發(fā)(六)
SpringCloud無介紹快使用淌哟,新建子module提供者支付微服務yml整合和新建啟動類(五)
SpringCloud無介紹快使用,新建子module提供者支付微服務pom整合(四)
SpringCloud無介紹快使用距淫,springcloud父工程pom文件整理(三)
SpringCloud無介紹快使用绞绒,IDEA新建springcloud父工程(二)
SpringCloud無介紹快使用,與Spingboot之間的兼容版本選擇(一)




作為程序員第 185 篇文章榕暇,每次寫一句歌詞記錄一下蓬衡,看看人生有幾首歌的時間,wahahaha ...

Lyric: 這音樂跳Waacking也可以跳Locking

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末彤枢,一起剝皮案震驚了整個濱河市狰晚,隨后出現的幾起案子,更是在濱河造成了極大的恐慌缴啡,老刑警劉巖壁晒,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異业栅,居然都是意外死亡秒咐,警方通過查閱死者的電腦和手機谬晕,發(fā)現死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來携取,“玉大人攒钳,你說我怎么就攤上這事±鬃蹋” “怎么了不撑?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晤斩。 經常有香客問我焕檬,道長,這世上最難降的妖魔是什么澳泵? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任实愚,我火速辦了婚禮,結果婚禮上烹俗,老公的妹妹穿的比我還像新娘爆侣。我一直安慰自己萍程,他們只是感情好幢妄,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茫负,像睡著了一般蕉鸳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忍法,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天潮尝,我揣著相機與錄音,去河邊找鬼饿序。 笑死勉失,一個胖子當著我的面吹牛,可吹牛的內容都是我干的原探。 我是一名探鬼主播乱凿,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咽弦!你這毒婦竟也來了徒蟆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤型型,失蹤者是張志新(化名)和其女友劉穎段审,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體闹蒜,經...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡寺枉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年抑淫,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姥闪。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈冬,死狀恐怖,靈堂內的尸體忽然破棺而出甘畅,到底是詐尸還是另有隱情埂蕊,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布疏唾,位于F島的核電站蓄氧,受9級特大地震影響,放射性物質發(fā)生泄漏槐脏。R本人自食惡果不足惜喉童,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顿天。 院中可真熱鬧堂氯,春花似錦、人聲如沸牌废。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸟缕。三九已至晶框,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懂从,已是汗流浹背授段。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留番甩,地道東北人侵贵。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像缘薛,于是被迫代替她去往敵國和親窍育。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內容