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

Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案

 更新時(shí)間:2024年05月16日 14:37:20   作者:korgs  
Spring?Cloud?Alibaba?致力于提供微服務(wù)開發(fā)的一站式解決方案,此項(xiàng)目包含開發(fā)分布式應(yīng)用微服務(wù)的必需組件,這篇文章主要介紹了Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡,需要的朋友可以參考下

Spring cloud alibaba

Spring Cloud Alibaba 致力于提供微服務(wù)開發(fā)的一站式解決方案。此項(xiàng)目包含開發(fā)分布式應(yīng)用微服務(wù)的必需組件,方便開發(fā)者通過 Spring Cloud 編程模型輕松使用這些組件來開發(fā)分布式應(yīng)用服務(wù)。

主要功能

  • 服務(wù)限流降級(jí):默認(rèn)支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降級(jí)功能的接入,可以在運(yùn)行時(shí)通過控制臺(tái)實(shí)時(shí)修改限流降級(jí)規(guī)則,還支持查看限流降級(jí) Metrics 監(jiān)控。
  • 服務(wù)注冊(cè)與發(fā)現(xiàn):適配 Spring Cloud 服務(wù)注冊(cè)與發(fā)現(xiàn)標(biāo)準(zhǔn),默認(rèn)集成對(duì)應(yīng) Spring Cloud 版本所支持的負(fù)載均衡組件的適配。
  • 分布式配置管理:支持分布式系統(tǒng)中的外部化配置,配置更改時(shí)自動(dòng)刷新。
  • 消息驅(qū)動(dòng)能力:基于 Spring Cloud Stream 為微服務(wù)應(yīng)用構(gòu)建消息驅(qū)動(dòng)能力。
  • 分布式事務(wù):使用 @GlobalTransactional 注解, 高效并且對(duì)業(yè)務(wù)零侵入地解決分布式事務(wù)問題。
  • 阿里云對(duì)象存儲(chǔ):阿里云提供的海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù)。支持在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問任意類型的數(shù)據(jù)。
  • 分布式任務(wù)調(diào)度:提供秒級(jí)、精準(zhǔn)、高可靠、高可用的定時(shí)(基于 Cron 表達(dá)式)任務(wù)調(diào)度服務(wù)。同時(shí)提供分布式的任務(wù)執(zhí)行模型,如網(wǎng)格任務(wù)。網(wǎng)格任務(wù)支持海量子任務(wù)均勻分配到所有 Worker(schedulerx-client)上執(zhí)行。
  • 阿里云短信服務(wù):覆蓋全球的短信服務(wù),友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達(dá)通道。

功能組件

  • Sentinel:把流量作為切入點(diǎn),從流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度保護(hù)服務(wù)的穩(wěn)定性。
  • Nacos:一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。
  • RocketMQ:一款開源的分布式消息系統(tǒng),基于高可用分布式集群技術(shù),提供低延時(shí)的、高可靠的消息發(fā)布與訂閱服務(wù)。
  • Seata:阿里巴巴開源產(chǎn)品,一個(gè)易于使用的高性能微服務(wù)分布式事務(wù)解決方案。
  • Alibaba Cloud OSS: 阿里云對(duì)象存儲(chǔ)服務(wù)(Object Storage Service,簡(jiǎn)稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù)。您可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問任意類型的數(shù)據(jù)。
  • Alibaba Cloud SchedulerX: 阿里中間件團(tuán)隊(duì)開發(fā)的一款分布式任務(wù)調(diào)度產(chǎn)品,提供秒級(jí)、精準(zhǔn)、高可靠、高可用的定時(shí)(基于 Cron 表達(dá)式)任務(wù)調(diào)度服務(wù)。
  • Alibaba Cloud SMS: 覆蓋全球的短信服務(wù),友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達(dá)通道。

springboot集成

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2023.0.0.1-RC2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

OpenFeign

OpenFeign(簡(jiǎn)稱Feign)是一個(gè)聲明式的Web服務(wù)客戶端,用于簡(jiǎn)化服務(wù)之間的HTTP通信。它是Spring Cloud組件中的一個(gè)輕量級(jí)RESTful的HTTP服務(wù)客戶端,內(nèi)置了Ribbon來做客戶端負(fù)載均衡,以調(diào)用服務(wù)注冊(cè)中心的服務(wù)。

主要特性

  • 聲明式API定義:使用注解方式定義和配置HTTP請(qǐng)求,使得代碼更加簡(jiǎn)潔、易讀和易于維護(hù)。
  • 與Spring Cloud集成:OpenFeign與Spring Cloud無縫集成,可以通過@EnableFeignClients注解開啟Feign的功能,并利用Eureka等服務(wù)注冊(cè)發(fā)現(xiàn)機(jī)制進(jìn)行服務(wù)間的調(diào)用。
  • 負(fù)載均衡和容錯(cuò)支持:OpenFeign內(nèi)置了Ribbon負(fù)載均衡器的支持,可以根據(jù)配置的策略自動(dòng)選擇可用的服務(wù)實(shí)例。此外,結(jié)合Hystrix等熔斷器框架,還能提供容錯(cuò)保護(hù)和自動(dòng)降級(jí)的能力。
  • 支持多種編解碼器:OpenFeign提供了多種默認(rèn)的編碼器和解碼器,使得開發(fā)者無需過多關(guān)注底層實(shí)現(xiàn)細(xì)節(jié),更加專注于業(yè)務(wù)邏輯的開發(fā)。
  • 可擴(kuò)展性和定制化:OpenFeign支持自定義的編碼器、解碼器和攔截器,可以根據(jù)實(shí)際需求進(jìn)行擴(kuò)展和定制。

OpenFeign的工作方式是聲明式接口編程,開發(fā)者可以定義一個(gè)接口,并對(duì)其進(jìn)行注解,以標(biāo)識(shí)需要調(diào)用的遠(yuǎn)程服務(wù)的HTTP端點(diǎn)。借助Spring MVC的注解,如@RequestMapping和@PathVariable等,這個(gè)接口直觀地映射了遠(yuǎn)程服務(wù)的API。OpenFeign自動(dòng)處理請(qǐng)求的發(fā)送和響應(yīng)的接收,封裝了編碼請(qǐng)求和解碼響應(yīng)的過程,極大地減少了樣板代碼。

總之,OpenFeign是一個(gè)功能強(qiáng)大的Web服務(wù)客戶端,可以方便地實(shí)現(xiàn)服務(wù)間的HTTP通信,并且與Spring Cloud無縫集成,為微服務(wù)架構(gòu)提供了良好的支持。

Nacos安裝

因?yàn)楹竺鏁?huì)經(jīng)常用到nacos,所以最好先安裝好了。

安裝

  • 下載:https://github.com/alibaba/nacos/releases
  • 修改JDK版本,因?yàn)橄螺d的是V2.3.2版本,需要JDK17支持。 在在startup.sh中約66行配置
export JAVA_HOME = /Users/liudong/Library/Java/JavaVirtualMachines/openjdk-21.0.1/Contents/Home

開啟授權(quán)

防止出現(xiàn)登陸失敗,修改nacos配置,如下:

nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
###設(shè)置服務(wù)端驗(yàn)證 key
nacos.core.auth.server.identity.key=test
nacos.core.auth.server.identity.value=test
### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

啟動(dòng)

sh startup.sh -m standalone ,然后可以通過 http://127.0.0.1:8848/nacos 地址訪問。

授權(quán)驗(yàn)證

### 獲取 accessToken:使用用戶名和密碼登陸 nacos server:
curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'
### 使用 accessToken 請(qǐng)求 nacos api 接口:
curl -X GET '127.0.0.1:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyMzkyM30.O-s2yWfDSUZ7Svd3Vs7jy9tsfDNHs1SuebJB4KlNY8Q&dataId=nacos.example.1&group=nacos_group'

配置mysql數(shù)據(jù)庫

這是可選的,默認(rèn)采用了內(nèi)置的Derby數(shù)據(jù)庫,配置了mysql更有利于數(shù)據(jù)共享和操作。

  • 創(chuàng)建一個(gè)名為nacos的數(shù)據(jù)庫;
  • 初始化名為mysql-schema.sql的腳本文件;
  • 修改nacos配置,如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

alibaba-nacos-server provider模塊

在這里插入圖片描述

pom.xml

依賴版本可參考 springbootSeries 模塊中pom.xml文件中的版本定義

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

application.properties配置

spring.profiles.active = dev
spring.application.name=AlibabaSpringbootNacosServer
server.port=19501
management.endpoints.web.exposure.include=*
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.fail-fast=true
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos

application-server2.properties配置

spring.application.name=AlibabaSpringbootNacosServer
server.port=19502
management.endpoints.web.exposure.include=*
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.fail-fast=true
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
#springboot Server
spring.aop.auto=true
spring.aop.proxy-target-class=true
# log4j
logging.config=classpath:log4j2.xml
logging.level.root=INFO
logging.level.org.springframework.web=ERROR
#restful Server
server.compression.enabled=true
server.compression.mime-types=application/json,application/octet-stream
#swagger
springdoc.api-docs.enabled=true
springdoc.api-docs.path=/api-schema
swagger-config.group = default-group
swagger-config.description= The following is a restful-api list of {} application, and you can browse or test them to determine if they are working as you expect.
swagger-config.version=V1.0
swagger-config.urlPattern=/**
swagger-config.base-package=com.korgs
swagger-config.authorization-key-name=token
swagger-config.wiki = https://korgs.blog.csdn.net/

SpringbootApplication啟動(dòng)類

@Slf4j
@SpringBootApplication(scanBasePackages = {"com.korgs",  "cn.hutool.extra.spring"})
@Configuration
@EnableConfigurationProperties
@ServletComponentScan
@RestController
@EnableDiscoveryClient
public class AlibabaSpringbootNacosServerApplication {
	@Value("${server.port}")
	private String serverPort;
	public static void main(String[] args) {
		SpringApplication.run(AlibabaSpringbootNacosServerApplication.class, args);
	}
	@GetMapping("/helloworld/{uuid}")
	public BaseResponse<String> helloWorld(@PathVariable String uuid){
		String str = LogGenerator.trackLog()
				+ " uuid=" + uuid + " I am busy to handle this request."
				+ " serverPort=" + serverPort;
		log.info( str );
		return BaseResponse.success(str);
	}
}

springboot-openFeign-client consumer模塊

在這里插入圖片描述

pom.xml

依賴版本可參考 springbootSeries 模塊中pom.xml文件中的版本定義

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

application.properties配置

spring.profiles.active = dev
spring.application.name=SpringbootOpenFeignClient
server.port=19506
management.endpoints.web.exposure.include=*
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.fail-fast=true
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
logging.level.com.korgs.biz.service = debug

OpenFeign Bean 實(shí)現(xiàn)

@Configuration
public class OpenFeignConfig {
    @Bean
    Logger.Level level() {
        return Logger.Level.FULL;
    }
}

Service服務(wù)類實(shí)現(xiàn)

這個(gè)類用于調(diào)用Provider的Restful接口,相比ribbon省云了定義RestTemplate這一步。但從結(jié)構(gòu)上更合理了,注意添加@FeignClient注解,值為provide的注冊(cè)名稱。

@FeignClient(value = "AlibabaSpringbootNacosServer")
public interface LoadService {
    @GetMapping("/helloworld/{uuid}")
    BaseResponse<String> loadHelloContent(@PathVariable String uuid);
}

Controller測(cè)試類實(shí)現(xiàn)

@RestController
@RequestMapping("/api/load")
@RestController
@RequestMapping("/api/load")
public class LoadBalanceController {
    @Autowired
    private LoadService loadService;
    @GetMapping("/v1/hello-content")
    public BaseResponse<String> loadHelloContent(String uuid){
        return  loadService.loadHelloContent(uuid);
    }
}

SpringbootApplication啟動(dòng)類

@Slf4j
@SpringBootApplication(scanBasePackages = {"com.korgs",  "cn.hutool.extra.spring"})
@Configuration
@EnableConfigurationProperties
@ServletComponentScan
@RestController
@EnableDiscoveryClient
@EnableFeignClients
public class SpringbootOpenFeignClientApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringbootOpenFeignClientApplication.class, args);
	}
	@GetMapping("/helloworld")
	public BaseResponse helloWorld(){
		log.info( LogGenerator.trackLog()
				+ "msg=" + "I am busy to handle this request.");
		return BaseResponse.success("hello world");
	}
}

源碼下載

涉及模塊:

  • alibaba-nacos-server:19501,19502 provide服務(wù)端
  • springboot-openFeign-client : 19506, consumer客戶端

源碼下載:

基礎(chǔ)框架源碼下載:

百度網(wǎng)盤下載:

鏈接: https://pan.baidu.com/s/1XUQyKdR6yDM__aJqCF-b5g?pwd=58pd

提取碼: 58pd 

Alibaba SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡

百度網(wǎng)盤下載:

鏈接: https://pan.baidu.com/s/1T-YRtfuuJq0xA4jqlWxvkQ?pwd=1gcj 
提取碼: 1gcj 

參考資料:

源碼運(yùn)行方法:

模塊詳細(xì)功能說明和運(yùn)行測(cè)試方法

依次啟動(dòng)nacos、server(兩個(gè))、client,在瀏覽器中輸入:http://localhost:19503/swagger-ui/index.html#/open-feign-controller/loadHelloContent,觀察返回字符串中端口的變化。

在這里插入圖片描述

到此這篇關(guān)于Alibaba SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的文章就介紹到這了,更多相關(guān)SpringCloud負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中日期時(shí)間比較的多種方法及實(shí)用代碼

    Java中日期時(shí)間比較的多種方法及實(shí)用代碼

    本文介紹了Java中不同日期時(shí)間類的比較方法,包括java.util.Date、java.util.Calendar、java.time?API和java.sql.Timestamp,提供了使用before、after和compareTo等方法進(jìn)行日期比較的示例代碼,展示了各自的特點(diǎn)和使用場(chǎng)景,需要的朋友可以參考下
    2024-09-09
  • SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實(shí)現(xiàn)

    SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot中的main方法注入service

    SpringBoot中的main方法注入service

    這篇文章主要介紹了SpringBoot中的main方法注入service操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo)的操作代碼

    JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo)的操作代碼

    這篇文章主要介紹了JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 一文盤點(diǎn)Spring MVC中用于處理HTTP請(qǐng)求的常用注解

    一文盤點(diǎn)Spring MVC中用于處理HTTP請(qǐng)求的常用注解

    這篇文章主要為大家詳細(xì)介紹了Spring MVC中用于處理HTTP請(qǐng)求的常用注解,包括@RequestMapping,@RequestController,@RequestParam等,希望對(duì)大家有所幫助
    2026-03-03
  • 解決mybatis無法給帶有下劃線屬性賦值問題

    解決mybatis無法給帶有下劃線屬性賦值問題

    這篇文章主要介紹了解決mybatis無法給帶有下劃線屬性賦值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    Spring Boot 底層都是采用 SpringData 的方式進(jìn)行統(tǒng)一處理各種數(shù)據(jù)庫,SpringData也是Spring中與SpringBoot、SpringCloud 等齊名的知名項(xiàng)目,下面看下SpringBoot Mybatis Druid數(shù)據(jù)訪問的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-11-11
  • java對(duì)象序列化操作實(shí)例分析

    java對(duì)象序列化操作實(shí)例分析

    這篇文章主要介紹了java對(duì)象序列化操作,結(jié)合實(shí)例形式分析了java對(duì)象序列化操作相關(guān)實(shí)現(xiàn)步驟與操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 淺析Java如何防范SQL注入攻擊

    淺析Java如何防范SQL注入攻擊

    這篇文章主要為大家詳細(xì)介紹了SQL注入漏洞的原理,表現(xiàn)形式以及如何防范這種攻擊,文中的示例代碼講解詳細(xì),希望可以幫助開發(fā)者構(gòu)建更安全的Java應(yīng)用
    2025-05-05
  • js實(shí)現(xiàn)拖拽拼圖游戲

    js實(shí)現(xiàn)拖拽拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

富平县| 彰化市| 大足县| 舒城县| 宁远县| 徐州市| 柳州市| 信丰县| 灌云县| 哈尔滨市| 五原县| 屏东市| 兰州市| 志丹县| 克什克腾旗| 蓬安县| 襄汾县| 荆州市| 河西区| 巫溪县| 陕西省| 子长县| 堆龙德庆县| 济南市| 施甸县| 尼勒克县| 襄垣县| 碌曲县| 克什克腾旗| 浦北县| 开阳县| 湾仔区| 桃园县| 津南区| 绿春县| 凌源市| 湟中县| 云安县| 北流市| 大同市| 灯塔市|