這篇文章,看下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: #服務註冊中心的配置內容,指定服務註冊中心位置
服務提供者,我們提供兩個訪問例項
服務提供者這塊,feign與ribbon方式沒有區別,這兩者做負載均衡的區別主要在於客戶端,即服務呼叫端。@enableeurekaclient
@restcontroller
public class hicontroller ")
private string port;
public string hello()
}
配置檔案
與之前無異,僅修改服務註冊中心位址和埠號即可
同樣複製該服務提供者工程,修改配置檔案埠號,則多乙個服務提供例項
服務消費者
這裡與之前有區別,需要先將要呼叫的外部介面定義
定義helloservice介面,使用@feignclient註解,標註要呼叫的外部服務。服務裡面定義需要訪問的外部介面,並標註介面的請求url,請求的url應該與服務提供者的url相同,否則會拋404異常。@feignclient("eureka-server")
public inte***ce helloservice
定義controller層
這裡需要使用@enablefeignclients來標註遠端介面路徑,程式啟動時,會檢查是否有@enablefeignclients註解,如果有,則開啟包掃瞄,掃瞄被@feignclient註解修飾的介面連同介面名和註解的資訊一起取出,賦給beandefinitionbuilder,然後根據beandefinitionbuilder得到beandefiniton,最後將beandefiniton注入到ioc容器中。這裡如果enablefeignclients後面的包路徑丟失,則無法掃瞄到要注入的bean,會啟動失敗。@enableeurekaclient
@enablefeignclients("com.example.consumer.service")
@restcontroller
public class hellocontroller
}
依次啟動各服務後,可以在註冊中心觀察到,乙個客戶端和兩個服務端均已成功註冊到服務中心
在位址列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...