欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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://www.dbjr.com.cn/article/141790.htm

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述
訂單服務(wù)日志:(這里的第二次輸出是因為被用戶服務(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 WebFlux的使用指南

    Spring WebFlux的使用指南

    這篇文章主要介紹了Spring WebFlux的使用指南,幫助大家更好的理解和學(xué)習(xí)使用Spring框架,感興趣的朋友可以了解下
    2021-05-05
  • Java之判斷2000~2023年有哪些年份是閏年并打印輸出

    Java之判斷2000~2023年有哪些年份是閏年并打印輸出

    這篇文章主要介紹了Java之判斷2000~2023年有哪些年份是閏年并打印輸出,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 23種設(shè)計模式(2) java工廠模式

    23種設(shè)計模式(2) java工廠模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計模式之java工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 教你使用eclipse?搭建Swt?環(huán)境的全過程

    教你使用eclipse?搭建Swt?環(huán)境的全過程

    本文給大家分享使用eclipse?搭建Swt?環(huán)境的全過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 學(xué)生視角手把手帶你寫Java?線程池改良版

    學(xué)生視角手把手帶你寫Java?線程池改良版

    作者是一個來自河源的大三在校生,以下筆記都是作者自學(xué)之路的一些淺薄經(jīng)驗,如有錯誤請指正,將來會不斷的完善筆記,幫助更多的Java愛好者入門
    2022-03-03
  • 分享Spring?Cloud?OpenFeign?的五個優(yōu)化技巧

    分享Spring?Cloud?OpenFeign?的五個優(yōu)化技巧

    這篇文章主要分享的是Spring?Cloud?OpenFeign?的五個優(yōu)化技巧,OpenFeign?是?Spring?官方推出的一種聲明式服務(wù)調(diào)用和負(fù)載均衡組件,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • Json在Struts中的轉(zhuǎn)換與傳遞方法

    Json在Struts中的轉(zhuǎn)換與傳遞方法

    下面小編就為大家?guī)硪黄狫son在Struts中的轉(zhuǎn)換與傳遞方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Maven的配置文件pom.xml詳解(含常用plugin)

    Maven的配置文件pom.xml詳解(含常用plugin)

    pom.xml是Maven項目的核心配置文件,它是 項目對象模型 - Project Object Model(POM)的縮寫,本文我們將全面解析pom.xml,了解其結(jié)構(gòu)和屬性,以及如何使用它來管理項目,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Redis緩存實(shí)例分步詳解

    Redis緩存實(shí)例分步詳解

    實(shí)際開發(fā)中緩存處理是必須的,不可能我們每次客戶端去請求一次服務(wù)器,服務(wù)器每次都要去數(shù)據(jù)庫中進(jìn)行查找,為什么要使用緩存?說到底是為了提高系統(tǒng)的運(yùn)行速度
    2023-04-04
  • Java中繼承和組合的區(qū)別

    Java中繼承和組合的區(qū)別

    這篇文章主要介紹了Java中繼承和組合的區(qū)別,  繼承是面向?qū)ο笕蠡咎卣髦?繼承,封裝,多態(tài)),繼承就是子類繼承父類的特征和行為,使得子類對象(實(shí)例)具有父類的實(shí)例域和方法,需要的朋友可以參考下
    2023-07-07

最新評論