eureka與feign實現負載均衡

2021-08-30 13:37:53 字數 2803 閱讀 7588

這篇文章,看下feign實現的負載均衡效果

對比與ribbon的區別,可能主要在於feign這邊多了個註解 @enablefeignclients,接下來詳細看示例過程

springboot 2.1.0.release

springcloud greenwich.m1

pom依賴檔案

org.springframework.boot

spring-boot-starter-parent

2.1.0.release

utf-8

utf-8

1.8greenwich.m1

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.boot

spring-boot-starter-test

test

org.springframework.cloud

spring-cloud-dependencies

$pom

import

服務註冊部分

與之前**無異,配置檔案部分,修改下埠號即可

@enableeurekaserver

public static void main(string args)

}

配置檔案

server:

port: 5430 #服務註冊中心埠號

eureka:

instance:

hostname: localhost

client:

registerwitheureka: false #是否向服務註冊中心註冊自己

fetchregistry: false #是否檢索服務

serviceurl: #服務註冊中心的配置內容,指定服務註冊中心位置

服務提供者

服務提供者,我們提供兩個訪問例項

@enableeurekaclient

@restcontroller

public class hicontroller ")

private string port;

public string hello()

}

服務提供者這塊,feign與ribbon方式沒有區別,這兩者做負載均衡的區別主要在於客戶端,即服務呼叫端。

配置檔案

與之前無異,僅修改服務註冊中心位址和埠號即可

同樣複製該服務提供者工程,修改配置檔案埠號,則多乙個服務提供例項

服務消費者

這裡與之前有區別,需要先將要呼叫的外部介面定義

@feignclient("eureka-server")

public inte***ce helloservice

定義helloservice介面,使用@feignclient註解,標註要呼叫的外部服務。服務裡面定義需要訪問的外部介面,並標註介面的請求url,請求的url應該與服務提供者的url相同,否則會拋404異常。

定義controller層

@enableeurekaclient

@enablefeignclients("com.example.consumer.service")

@restcontroller

public class hellocontroller

}

這裡需要使用@enablefeignclients來標註遠端介面路徑,程式啟動時,會檢查是否有@enablefeignclients註解,如果有,則開啟包掃瞄,掃瞄被@feignclient註解修飾的介面連同介面名和註解的資訊一起取出,賦給beandefinitionbuilder,然後根據beandefinitionbuilder得到beandefiniton,最後將beandefiniton注入到ioc容器中。這裡如果enablefeignclients後面的包路徑丟失,則無法掃瞄到要注入的bean,會啟動失敗。

依次啟動各服務後,可以在註冊中心觀察到,乙個客戶端和兩個服務端均已成功註冊到服務中心

在位址列http://localhost:5433/hello測試

可以看到呼叫到5431和5432兩個服務例項

至此,乙個簡單的feign的負載均衡demo就完成了,這裡沒有過多的原理講解,只是介紹工程搭建過程。如果其中有不嚴謹的地方或疏漏之處,歡迎瀏覽批評指正。謝謝。

Springcloud 系列之feign負載均衡

feign是宣告性的web服務客戶端。它使編寫web服務客戶端更加容易。要使用feign,請建立乙個介面並對其進行注釋。它具有可插入的注釋支援,包括feign注釋和jax rs注釋。feign還支援可插拔編碼器和解碼器。spring cloud新增了對spring mvc注釋的支援,並支援使用spr...

Spring Cloud Ribbon實現負載均衡

之前文章 spring cloud 服務註冊和發現 spring cloud 服務端高可用 負載均衡在系統架構中是乙個非常重要的角色,在前面大型 架構學習總結中,可以看到,高可用,伸縮性,效能幾個架構要素中,負載均衡都有著很重要的地位,是系統壓力緩解,系統擴容的重要手段之一。一般來說,我們講的負載均...

nginx rsync inotify實現負載均衡

實驗環境 前端nginx ip 192.168.6.242,對後端的wordpress 做反向 實現負載均衡 後端nginx ip 192.168.6.36,192.168.6.205都部署wordpress,並使用相同的資料庫 安裝rsync和inotify 在後端的兩個wordpress上配置r...