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

SpringCloud如何解決服務(wù)之間的通信問題

 更新時間:2021年08月22日 16:26:06   作者:別團(tuán)等shy哥發(fā)育  
本文主要介紹了SpringCloud如何解決服務(wù)之間的通信問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、如何解決服務(wù)之間的通信問題?

[1]HTTP REST方式 使用http協(xié)議進(jìn)行數(shù)據(jù)傳遞 json格式數(shù)據(jù)
[2]RPC方式 遠(yuǎn)程過程調(diào)用 二進(jìn)制數(shù)據(jù)

OSI七層結(jié)構(gòu)來講,即物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層、會話層、表示層、應(yīng)用層。http屬于應(yīng)用層協(xié)議,而RPC屬于傳輸層,所以RPC方式的傳輸效率比http高SpringCloud使用的是HTTP協(xié)議傳遞數(shù)據(jù)。

2、如何在java代碼中發(fā)起http方式請求?

spring框架提供HttpClient對象 使用RestTemplate發(fā)起一個http請求。

3、實(shí)現(xiàn)服務(wù)間通信的小案例

 3.1 使用兩個測試服務(wù) 用戶服務(wù)users和訂單服務(wù)orders

3.2 用戶服務(wù)和訂單服務(wù)都是兩個獨(dú)立的SpringBoot應(yīng)用

在這里插入圖片描述

3.3 兩個服務(wù)都引入consul client依賴和健康檢查依賴

		 <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--consul client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

3.4 配置兩個服務(wù)的application.properties

用戶服務(wù):(默認(rèn)的服務(wù)名稱就是Spring.application.name,所以可以不用指定)

server.port=8888
spring.application.name=USERS

#consul server
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

在這里插入圖片描述

訂單服務(wù):

server.port=9999
spring.application.name=ORDERS

#consul server
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

在這里插入圖片描述

3.5 在兩個服務(wù)的入口類中加入服務(wù)注冊client注解

用戶服務(wù)

在這里插入圖片描述

訂單服務(wù)

在這里插入圖片描述

3.6 控制器開發(fā)(這里進(jìn)行服務(wù)提供者和服務(wù)消費(fèi)者開發(fā)) 3.6.1 服務(wù)提供者(訂單服務(wù))

OrderController.java

package com.baizhi.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class OrderController {

    @GetMapping("order")
    public String demo(){
       log.info("order demo...");
        return "order demo OK!!!";
    }
}

3.6.2 服務(wù)消費(fèi)者(用戶服務(wù))

UserController.java

package com.baizhi.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Slf4j
public class UserController {

    @GetMapping("user")
    public String invokeDemo(){
         log.info("user demo...");
        //1、調(diào)用訂單服務(wù) 服務(wù)地址:http://localhost:9999/order  必須是get方式 接收返回值String
        RestTemplate restTemplate = new RestTemplate();
        String orderResult = restTemplate.getForObject("http://localhost:9999/order", String.class);

        log.info("調(diào)用訂單服務(wù)成功:{}",orderResult);

        return "調(diào)用order服務(wù)成功,結(jié)果為:"+orderResult;
    }
}

3.7 測試服務(wù)調(diào)用

在服務(wù)啟動之后查看consul服務(wù)注冊中心,可以看到用戶服務(wù)和訂單服務(wù)都注冊成功了。關(guān)于consul服務(wù)注冊與發(fā)現(xiàn)請看這篇文章:http://m.fzitv.net/article/141790.htm

在這里插入圖片描述

訪問http://localhost:9999/order測試訂單服務(wù):

在這里插入圖片描述

訪問用戶服務(wù)(用戶服務(wù)中會調(diào)用訂單服務(wù))

在這里插入圖片描述
訂單服務(wù)日志:(這里的第二次輸出是因?yàn)楸挥脩舴?wù)調(diào)用)
在這里插入圖片描述

用戶服務(wù)日志:
在這里插入圖片描述

4、現(xiàn)有RestTemplate方式通信存在的問題?

  • 調(diào)用服務(wù)的路徑主機(jī)和服務(wù)端口直接寫死在url中無法實(shí)現(xiàn)服務(wù)集群時請求負(fù)載均衡
  • 調(diào)用服務(wù)的請求路徑寫死在代碼中,日后提供服務(wù)路徑發(fā)生變化時不利于后續(xù)維護(hù)工作。

5、解決RestTemplate負(fù)載均衡問題

  • 自定義負(fù)載均衡解決策略,但是這樣無法實(shí)現(xiàn)服務(wù)健康檢查切負(fù)載均衡策略過于單一
  • 使用SpringCloud提供的組件 推薦使用Ribbon來解決負(fù)載均衡的調(diào)用問題

到此這篇關(guān)于SpringCloud如何解決服務(wù)之間的通信問題的文章就介紹到這了,更多相關(guān)SpringCloud 服務(wù)間通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在 Spring Boot 3 中接入生成式 AI的操作方法

    在 Spring Boot 3 中接入生成式 AI的操作方法

    本文介紹了如何在SpringBoot3中集成生成式AI,以O(shè)penAI的GPT模型為例,通過代碼示例展示了如何實(shí)現(xiàn),SpringBoot3的優(yōu)勢和OpenAI的生成式AI技術(shù)結(jié)合,為開發(fā)者提供了高效集成生成式AI的方法,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 如何使用JWT的SpringSecurity實(shí)現(xiàn)前后端分離

    如何使用JWT的SpringSecurity實(shí)現(xiàn)前后端分離

    這篇文章主要介紹了使用JWT的SpringSecurity實(shí)現(xiàn)前后端分離,登錄成功需要返回json數(shù)據(jù)登錄失敗需要返回json數(shù)據(jù)權(quán)限不足時返回json數(shù)據(jù)未登錄訪問資源返回json數(shù)據(jù),需要的朋友可以參考下
    2024-08-08
  • spring boot mybatis枚舉映射示例代碼

    spring boot mybatis枚舉映射示例代碼

    這篇文章主要給大家介紹了關(guān)于spring boot mybatis枚舉映射的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java實(shí)現(xiàn)樹形結(jié)構(gòu)的示例代碼

    Java實(shí)現(xiàn)樹形結(jié)構(gòu)的示例代碼

    由于業(yè)務(wù)需要,后端需要返回一個樹型結(jié)構(gòu)給前端,包含父子節(jié)點(diǎn)的數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫中存儲好。本文將為大家分享Java現(xiàn)樹形結(jié)構(gòu)的示例代碼,需要的可以參考下
    2022-05-05
  • 淺談在Java中使用Callable、Future進(jìn)行并行編程

    淺談在Java中使用Callable、Future進(jìn)行并行編程

    這篇文章主要介紹了淺談在Java中使用Callable、Future進(jìn)行并行編程,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Java執(zhí)行g(shù)roovy腳本的兩種方式

    詳解Java執(zhí)行g(shù)roovy腳本的兩種方式

    這篇文章主要介紹了Java執(zhí)行g(shù)roovy腳本的兩種方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 使用Java Minio搭建自己的文件系統(tǒng)詳解

    使用Java Minio搭建自己的文件系統(tǒng)詳解

    這篇文章主要介紹了使用Java Minio搭建自己的文件系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • Java微服務(wù)開發(fā)之Swagger詳解

    Java微服務(wù)開發(fā)之Swagger詳解

    Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步
    2021-10-10
  • Idea中SpringBoot多模塊項(xiàng)目的建立實(shí)現(xiàn)

    Idea中SpringBoot多模塊項(xiàng)目的建立實(shí)現(xiàn)

    這篇文章主要介紹了Idea中SpringBoot多模塊項(xiàng)目的建立實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 實(shí)例解決Java異常之OutOfMemoryError的問題

    實(shí)例解決Java異常之OutOfMemoryError的問題

    在本篇文章中,我們給大家分享了關(guān)于解決Java異常之OutOfMemoryError的問題的方法,有此需要的朋友們學(xué)習(xí)下。
    2019-02-02

最新評論

兴国县| 苏尼特左旗| 高雄县| 台南市| 高要市| 曲沃县| 凤庆县| 社会| 荥阳市| 平昌县| 略阳县| 漳平市| 上饶市| 锡林郭勒盟| 徐州市| 武川县| 景宁| 孟州市| 民和| 子长县| 东乡县| 交城县| 永胜县| 杭州市| 陇南市| 巴彦县| 两当县| 呼和浩特市| 彩票| 乾安县| 康定县| 呼图壁县| 邻水| 洱源县| 文山县| 射阳县| 安岳县| 白水县| 阳春市| 隆林| 六盘水市|