最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nacos框架服務(wù)注冊(cè)實(shí)現(xiàn)流程

 更新時(shí)間:2022年08月01日 10:36:36   作者:kaico2018  
這篇文章主要介紹了SpringCloud服務(wù)注冊(cè)之nacos實(shí)現(xiàn)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

rpc遠(yuǎn)程調(diào)用

可能存在的問(wèn)題

  • 超時(shí)的問(wèn)題。
  • 安全的問(wèn)題。
  • 服務(wù)與服務(wù)之間URL地址管理。

在我們的微服務(wù)架構(gòu)通訊,服務(wù)之間依賴關(guān)系非常大,如果通過(guò)傳統(tǒng)的方式管理我們服務(wù)的 url 地址的情況下,-一旦地址發(fā)生變化的情況下,還需要人工修改rpc遠(yuǎn)程調(diào)用地址。

微服務(wù)服務(wù)治理

在RPC遠(yuǎn)程調(diào)用過(guò)程中,服務(wù)與服務(wù)之間依賴關(guān)系非常大,服務(wù)Url地址管理非常復(fù)雜,所以這時(shí)候需要對(duì)我們服務(wù)的url實(shí)現(xiàn)治理,通過(guò)服務(wù)治理可以實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)、負(fù)載均衡、容錯(cuò)等。

分布式注冊(cè)中心

在 rpc 遠(yuǎn)程調(diào)用中,地址中域名和端口號(hào)/調(diào)用的方法名稱,如果基于數(shù)據(jù)庫(kù)實(shí)現(xiàn)服務(wù) url 治理:

缺點(diǎn):維護(hù)成本高、沒(méi)有完全絕對(duì)實(shí)現(xiàn)動(dòng)態(tài)智能。

每次調(diào)用該服務(wù)如果地址直接寫(xiě)死的話,一旦接口發(fā)生變化的情況下,這時(shí)候需要重新發(fā)布版本才可以該接口調(diào)用地址,所以需要一個(gè)注冊(cè)中心統(tǒng)一管理我們的服務(wù)注冊(cè)與發(fā)現(xiàn)。

注冊(cè)中心概念: 我們的服務(wù)注冊(cè)到我們注冊(cè)中心,key為服務(wù)名稱、value為該服務(wù)調(diào)用地址,該類型為集合類型。Eureka、consul、zookeeper、nacos等。

注冊(cè)中心原理:

服務(wù)注冊(cè):生產(chǎn)者項(xiàng)目啟動(dòng)的時(shí)候,會(huì)將當(dāng)前服務(wù)自己的信息地址注冊(cè)到注冊(cè)中心。

服務(wù)發(fā)現(xiàn): 消費(fèi)者從我們的注冊(cè)中心上獲取生產(chǎn)者調(diào)用的地址(集合),在使用負(fù)載均衡的策略獲取集群中某個(gè)地址實(shí)現(xiàn)本地rpc遠(yuǎn)程調(diào)用。

rpc 服務(wù)注冊(cè)調(diào)用實(shí)現(xiàn)原理:

1、生產(chǎn)者啟動(dòng)的時(shí)候key= 服務(wù)的名稱value ip 和端口號(hào)注冊(cè)到我們的微服務(wù)注冊(cè)中心上。

2、注冊(cè)存放服務(wù)地址列表類型:key唯一,列表是list集合。

3、我們的消費(fèi)者從我們注冊(cè)中心.上根據(jù)服務(wù)名稱查詢服務(wù)地址列表(集合)。

4、消費(fèi)者獲取到集群列表之后,采用負(fù)載均衡器選擇一個(gè)地址實(shí)現(xiàn)rpc遠(yuǎn)程調(diào)用。

Nacos

介紹

Nacos 可以實(shí)現(xiàn)分布式服務(wù)注冊(cè)與發(fā)現(xiàn)/分布式配置中心框架。

官網(wǎng)的介紹: https://nacos.io/zh-cn/docs/what-is-nacos.html

安裝

下載直接啟動(dòng)就可以了,nacos 是springboot項(xiàng)目。默認(rèn)端口號(hào)是:8848,可以修改配置文件修改端口號(hào)、數(shù)據(jù)持久化方式等等。

注意:高一點(diǎn)版本的nacos默認(rèn)是集群?jiǎn)?dòng),如果你是學(xué)習(xí)使用單機(jī)版的,需要修改額外配置,改成單機(jī)版啟動(dòng)。

windows版本修改方式:以notepad++方式打開(kāi) startup.cmd

然后修改大概在26行的set MODE="cluster"為set MODE=“standalone”

基本使用

maven依賴

<dependencies>
    <!--  springboot 整合web組件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
</dependencies>

application.yml

spring:
  cloud:
    nacos:
      discovery:
        ###服務(wù)注冊(cè)地址
        server-addr: www.kaicostudy.com:8848
  application:
    name: kaico-member
server:
  port: 8081

Java代碼,項(xiàng)目為springboot項(xiàng)目,menber服務(wù)

@RestController
public class MenberService {
    @Value("${server.port}")
    private String serverPort;
    /**
     * 會(huì)員服務(wù)提供的接口
     *
     * @param userId
     * @return
     */
    @RequestMapping("/getUser")
    public String getUser(Integer userId) {
        return "kaico學(xué)習(xí)nacos:" + serverPort;
    }
}

啟動(dòng)項(xiàng)目之后,可以在nacos頁(yè)面看到注冊(cè)的服務(wù)信息。

使用discoveryClient 從nacos上獲取接口地址

order服務(wù)代碼,后面用作restTemplate 實(shí)現(xiàn)遠(yuǎn)程接口調(diào)用。

@RestController
public class OrderService {
    @Autowired
    private DiscoveryClient discoveryClient;
    /**
     * 訂單調(diào)用會(huì)員服務(wù)
     *
     * @return
     */
    @GetMapping("/orderToMember")
    public String orderToMember() {
        // 從注冊(cè)中心上獲取該注冊(cè)服務(wù)列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = serviceInstanceList.get(0);
        URI rpcMemberUrl = serviceInstance.getUri();
        return "訂單調(diào)用會(huì)員獲取結(jié)果:" + rpcMemberUrl;
    }
}

使用restTemplate實(shí)現(xiàn)rpc遠(yuǎn)程調(diào)用

注意spring沒(méi)有將 restTemplate 注入到IOC容器中,需要自己手動(dòng)注入。在啟動(dòng)類中添加下面注入bean的方法。

@Bean("restTemplate")
public RestTemplate restTemplate(){
     return new RestTemplate();
 }

調(diào)用方法

@GetMapping("/orderToMember")
    public String orderToMember() {
        // 從注冊(cè)中心上獲取該注冊(cè)服務(wù)列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = serviceInstanceList.get(0);
        URI rpcMemberUrl = serviceInstance.getUri();
		// 使用本地rest形式實(shí)現(xiàn)rpc調(diào)用
        String result = restTemplate.getForObject(rpcMemberUrl + "/getUser", String.class);
        return "訂單調(diào)用會(huì)員獲取結(jié)果:" + result;
    }

本地負(fù)載均衡算法

1、從注冊(cè)中心獲取服務(wù)集群的列表

2、從列表中選擇一個(gè)(根據(jù)負(fù)載均衡算法來(lái)獲?。?/p>

        1. 隨機(jī)獲取
        2. 輪訓(xùn)、權(quán)重
        3. 一致性 hash 計(jì)算

實(shí)現(xiàn)輪訓(xùn)代碼案例:

@Component
public class RotationLoadBalancer  implements LoadBalancer {
    private AtomicInteger atomicInteger = new AtomicInteger(0);
    @Override
    public ServiceInstance getSingleAddres(List<ServiceInstance> serviceInstances) {
        int index = atomicInteger.incrementAndGet() % serviceInstances.size();
        ServiceInstance serviceInstance = serviceInstances.get(index);
        return serviceInstance;
    }
}
 @RequestMapping("/orderToMember")
    public String orderToMember() {
        // 從注冊(cè)中心上獲取該注冊(cè)服務(wù)列表
        List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("kaico-member");
        ServiceInstance serviceInstance = loadBalancer.getSingleAddres(serviceInstanceList);
        URI rpcMemberUrl = serviceInstance.getUri();
        // 使用本地rest形式實(shí)現(xiàn)rpc調(diào)用
        String result = restTemplate.getForObject(rpcMemberUrl + "/getUser", String.class);
        return "訂單調(diào)用會(huì)員獲取結(jié)果:" + result;
    }

到此這篇關(guān)于Nacos框架服務(wù)注冊(cè)實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Nacos服務(wù)注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Semaphore(信號(hào)量)的使用方法

    Java中Semaphore(信號(hào)量)的使用方法

    這篇文章主要介紹了Java中Semaphore(信號(hào)量)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring延遲Bean初始化的實(shí)現(xiàn)示例

    Spring延遲Bean初始化的實(shí)現(xiàn)示例

    延遲初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用時(shí)才創(chuàng)建及初始化Bean,本文主要介紹了Spring延遲Bean初始化的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • 生成PDF全攻略之在已有PDF上添加內(nèi)容的實(shí)現(xiàn)方法

    生成PDF全攻略之在已有PDF上添加內(nèi)容的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇生成PDF全攻略之在已有PDF上添加內(nèi)容的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Java開(kāi)發(fā)之ssm三大框架整合

    Java開(kāi)發(fā)之ssm三大框架整合

    SSM框架是spring?MVC?,spring和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式,將整個(gè)系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring?MVC負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)和視圖管理,spring實(shí)現(xiàn)業(yè)務(wù)對(duì)象管理,mybatis作為數(shù)據(jù)對(duì)象的持久化引擎
    2022-05-05
  • java中處理socket通信過(guò)程中粘包的情況

    java中處理socket通信過(guò)程中粘包的情況

    本篇文章主要介紹了java中處理socket通信過(guò)程中粘包的情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Springboot上傳excel并將表格數(shù)據(jù)導(dǎo)入或更新mySql數(shù)據(jù)庫(kù)的過(guò)程

    Springboot上傳excel并將表格數(shù)據(jù)導(dǎo)入或更新mySql數(shù)據(jù)庫(kù)的過(guò)程

    這篇文章主要介紹了Springboot上傳excel并將表格數(shù)據(jù)導(dǎo)入或更新mySql數(shù)據(jù)庫(kù)的過(guò)程 ,本文以Controller開(kāi)始,從導(dǎo)入過(guò)程開(kāi)始講述,其中包括字典表的轉(zhuǎn)換,需要的朋友可以參考下
    2018-04-04
  • springboot接收http請(qǐng)求,解決參數(shù)中+號(hào)變成空格的問(wèn)題

    springboot接收http請(qǐng)求,解決參數(shù)中+號(hào)變成空格的問(wèn)題

    這篇文章主要介紹了springboot接收http請(qǐng)求,解決參數(shù)中+號(hào)變成空格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談Spring Data JPA與MyBatisPlus的比較

    淺談Spring Data JPA與MyBatisPlus的比較

    本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較
    2024-08-08
  • 淺談java線程狀態(tài)與線程安全解析

    淺談java線程狀態(tài)與線程安全解析

    本文主要介紹了淺談java線程狀態(tài)與線程安全解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解析Java圖形化編程中的文本框和文本區(qū)

    解析Java圖形化編程中的文本框和文本區(qū)

    這篇文章主要介紹了Java圖形化編程中的文本框和文本區(qū),是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10

最新評(píng)論

宣城市| 吐鲁番市| 郑州市| 宣武区| 仁化县| 乐陵市| 德令哈市| 杨浦区| 香港| 阿图什市| 潼关县| 渝北区| 麻城市| 沭阳县| 晋州市| 湘阴县| 额济纳旗| 广南县| 江门市| 沙河市| 永兴县| 凤山市| 永修县| 霍城县| 民权县| 深水埗区| 泊头市| 汉川市| 周至县| 黄浦区| 新野县| 彝良县| 鄂托克前旗| 探索| 邳州市| 璧山县| 堆龙德庆县| 页游| 敖汉旗| 孝义市| 丰台区|