1. 程式人生 > >1.【Spring Cloud Alibaba】服務發現-Nacos

1.【Spring Cloud Alibaba】服務發現-Nacos

一、服務的提供者與服務的消費者

二、服務發現原理

如果使用者中心地址發生變化怎麼辦?
服務的消費者總能找到服務的提供者的這種原理,即服務發現原理。

三、什麼是Nacos?

Nacos文件地址請檢視,引入Nacos,架構的演進

四、搭建Nacos Server

1、下載Nacos 下載地址

在spring-cloud-alibaba-dependencies下按住Ctrl+滑鼠左鍵,檢視Nacos元件相關的版本。

<nacos.client.version>1.0.0</nacos.client.version>
<nacos.config.version>0.8.0</nacos.config.version>

nacos-server-1.0.1是相容nacos-server-1.0.0的,所以我這裡選用nacos-server-1.0.1版本。

2、搭建Nacos Server

Nacos 快速開始

五、將應用註冊到Nacos

1、將user-content註冊到Nacos

pom.xml新增
<!--spring-cloud-starter-{spring cloud子專案名稱}-[{模組名稱}]-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
application.yml新增
spring:
  cloud:
    nacos:
      discovery:
        #指定nacos server的地址
        server-addr: localhost:8848
  application:
    # 服務名稱儘量用-,不用要_,更不要用特殊字元
    name: user-center
啟動服務

在此之前,你應該先啟動nacos-server

登入檢視註冊的服務

2、將content-center註冊到Nacos

按照user-center將content-center註冊到Nacos

在此重新整理頁面,我們可以看到

3、在content-center下編寫測試程式碼

在TestController下新增如下程式碼

@Autowired
private DiscoveryClient discoveryClient;
 /**
 * 測試:服務發現,證明內容中心可以查詢到使用者中心
 * @return 使用者中心所有地址的詳細資訊
 */
@GetMapping("/test2")
public List<ServiceInstance> getInstances(){
    // 查詢指定服務所有例項的資訊
    return this.discoveryClient.getInstances("user-center");
}

在瀏覽器下進行測試

開啟使用者中心多個例項進行測試

思考?如果將使用者中心斷開,再次重新整理瀏覽器觀察變化

六、為內容中心引入服務發現

修改ShareService

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ShareService {
    private final ShareMapper shareMapper;
    private final RestTemplate restTemplate;
    private final DiscoveryClient discoveryClient;

    public ShareDTO findById(Integer id){
        // 獲取分享的詳情
        Share share = this.shareMapper.selectByPrimaryKey(id);
        // 釋出人id
        Integer userId = share.getUserId();
        // 獲取使用者中心所有例項資訊
        List<ServiceInstance> instances = discoveryClient.getInstances("user-center");
        String targetURL = instances.stream()
                // 資料變換
                .map(instance-> instance.getUri().toString() +  "/users/{id}")
                .findFirst()
                .orElseThrow(()-> new IllegalArgumentException("當前沒有例項"));

        log.info("請求的目標地址:{}",targetURL);
        // 怎麼呼叫使用者微服務的users/{userId}
        UserDTO userDTO = this.restTemplate.getForObject(
                targetURL,
                UserDTO.class,
                userId
        );
        // 訊息的裝配
        ShareDTO shareDTO = new ShareDTO();
        BeanUtils.copyProperties(share,shareDTO);
        shareDTO.setWxNickname(userDTO.getWxNickname());
        return shareDTO;
    }
}
測試

七、Nacos服務發現的領域模型

  • Namespace:實現隔離,預設public
  • Group:不同服務可以分到一個組,預設DEFAULT_GROUP
  • Service:微服務
  • Cluster:對指定微服務的一個虛擬劃分,預設DEFAULT
  • Instance:微服務例項

八、Nacos元資料

官方文件說明

元資料的作用
  • 提供描述資訊
  • 讓微服務呼叫更加靈活
如何為微服務設定元資料?
  • 控制檯方式指定
  • 配置檔案指定

相關推薦

1.Spring Cloud Alibaba服務發現-Nacos

一、服務的提供者與服務的消費者 二、服務發現原理 如果使用者中心地址發生變化怎麼辦? 服務的消費者總能找到服務的提供者的這種原理,即服務發現原理。 三、什麼是Nacos? Nacos文件地址請檢視,引入Nacos,架構的演進 四、搭建Nacos Server 1、下載Nacos 下載地址 在spr

3.Spring Cloud Alibaba宣告式HTTP客戶端-Feign

使用Feign實現遠端HTTP呼叫 什麼是Feign Feign是Netflix開源的宣告式HTTP客戶端 GitHub地址:https://github.com/openfeign/feign 實現 pom.xml <dependency> <groupId>org.sp

Spring Cloud Alibaba基礎教程:Nacos服務發現與配置管理

隨著微服務概念的流行,越來越多的公司採用Spring Cloud全家桶構建微服務系統,實現業務的快速迭代。Spring Cloud提供了快速構建分散式微服務常用元件,包括Spring Cloud Eureka、Spring Cloud Ribbon、Spring Cloud Hystrix、Spring Cl

Spring Cloud Eureka 5 (服務發現與消費-簡單的robbin使用)

boot ng- clas hello enabled 中心 相同 service 服務註冊 通過上述介紹,我們已經有了服務註冊中心和服務提供者 下面我們來嘗試構建一個服務的消費者 它要完成兩個功能,發現服務和消費服務,其中發現服務由eureka客戶端完成,消費服務由rib

Spring Cloud Config基於服務發現引用公共檔案

Spring Cloud 的配置檔案是bootstrap或者application兩個,如果服務配置過多那麼檔案內容肯定較多,在普通的spring 專案中都是獨立出來一個檔案用於標註不同的需求內容,例如資料庫,redis等,然後再import匯入進來就可以使用,在Spring Cloud

Spring Cloud 系列:構建Eureka Client 專案

一. 構建 Eureka Client 端   1. 首先還是需要先看看官方文件是如何說明的,從文件中瞭解到,需要為專案引入Eureka-client 相關jar包 <dependency> <groupId>org.springframew

Spring系列學習之Spring Cloud Netflix微服務發現容錯及路由客戶端負載均衡

英文原文:https://spring.io/projects/spring-cloud-netflix 目錄 概述 特性 入門 快速開始 學習 文件 示例 概述 Spring Cloud Netflix通過自動配置和Spring環境以及其他Spring程

Spring Cloud與微服務學習總結(1)——Spring Cloud及微服務入門

一、Spring Cloud是什麼鬼? Spring Cloud為開發者提供了快速建立一些常見的模式在分散式系統的工具(如配置管理、服務發現、斷路器、智慧路由、微代理,控制匯流排,一次性令牌,全球鎖,領

七牛雲物件儲存客戶端直傳前後端實現 spring cloud + vue

兩種檔案上傳的方式 服務端傳輸 客戶端直傳 兩種傳輸方式比較 服務端傳輸,所有客戶端的上傳請求需傳送至業務伺服器,再由業務伺服器轉發至檔案伺服器,上傳結果的返回同樣需要業務伺服器的轉發,這樣的操作保證了傳輸的安全,但卻大大提升了業務

Spring Cloud與Consul服務發現

Consul服務發現 Consul是一個開源的服務註冊發現工具,採用Go語言開發,支援多資料中心分散式高可用的服務發現和配置共享,廣泛應用在大規模分散式系統中。 Spring Cloud原生支援使用Consul做服務註冊發現,類似Eureka、ZooKeep

Spring Cloud Alibaba | Sentinel: 服務限流基礎篇

目錄 Spring Cloud Alibaba | Sentinel: 服務限流基礎篇 1. 簡介 2. 定義資源 2.1 主流框架的預設適配 2.2 丟擲異常的方式定義資源

spring-cloud-kubernetes的服務發現和輪詢實戰(含熔斷)

本文是《spring-cloud-kubernetes實戰系列》的第四篇,主要內容是在kubernetes上部署兩個應用:Web-Service和Account-Service,通過spring-cloud-kubernetes提供的註冊發現能力,實現Web-Service呼叫Account-Service提

Spring Cloud Alibaba | 微服務分散式事務之Seata

Spring Cloud Alibaba | 微服務分散式事務之Seata 本篇實戰所使用Spring有關版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Greenwich.SR2 Spring CLoud Alibaba:2.1.0.RELEASE 1. 概述 在構建

Spring Cloud Alibaba服務生態的基礎實踐

[toc] ## 一、背景 - 身為Java程式設計師,微服務是必須要掌握的一種架構。Spring Cloud作為提供微服務架構的完整技術生態鏈,給我們提供了非常多的框架與元件。其中的重要成員Spring Cloud Netflix也形成了一系列的技術棧:包括服務註冊與發現(Eureka),斷路器(Hystr

Spring Cloud Alibaba基礎教程:Nacos配置的加載規則詳解

方案 用戶 per 回顧 應用名 增加 我們 pla 基礎 前情回顧: 《Spring Cloud Alibaba基礎教程:使用Nacos實現服務註冊與發現》 《Spring Cloud Alibaba基礎教程:支持的幾種服務消費方式(RestTemplate、WebCl

Spring Cloud Alibaba基礎教程:Nacos配置的多文件加載與共享配置

space info master 分享 fresh 覆蓋 aid hle 過程 前情回顧: 《Spring Cloud Alibaba基礎教程:使用Nacos實現服務註冊與發現》 《Spring Cloud Alibaba基礎教程:支持的幾種服務消費方式》 《Sprin

Spring Cloud Alibaba系列教程-01-Nacos安裝與啟停

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

Spring Cloud 一:服務註冊與發現(Eureka)Dalston版

什麽是 pom 日誌 操作 prop ng- 通過 決策 target Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局

Spring Cloud第一篇 Service Discovery | 服務發現

Eureka 提供服務的註冊,服務可以通過註冊到Eureka然後被其他應用呼叫。 看到Spring Cloud 的文件裡面是先講的是Spring Cloud Config ,為了方便,或者說參考其他大佬的教程,我也會把Config放到後面寫。 word &

Spring Cloud 八:服務容錯保護(Hystrix斷路器)Dalston版

sta 什麽 star 根據 .com 一次 href 進行 響應 斷路器 斷路器模式源於Martin Fowler的Circuit Breaker一文。“斷路器”本身是一種開關裝置,用於在電路上保護線路過載,當線路中有電器發生短路時,“斷路器”能夠及時的切斷故障電路,防止