微服務(wù)架構(gòu)之spring cloud feign

在spring cloud ribbon中我們用RestTemplate實現(xiàn)了服務(wù)調(diào)用林艘,可以看到我們還是需要配置服務(wù)名稱恃疯,調(diào)用的方法 等等识窿,其實spring cloud提供了更優(yōu)雅的服務(wù)調(diào)用方式,就是這篇文章要講解的spring cloud feign悉稠,feign內(nèi)部已經(jīng)集成了ribbon校焦,所以不用再單獨引用赊抖,只需要引用spring cloud feign即可。

(一) 版本說明

a) Spring boot 2.0.6.RELEASE

b) Spring cloud Finchley.SR2

c) Java version 1.8

(二) 項目配置

1. 服務(wù)端項目配置

a) 服務(wù)端主要是提供服務(wù)功能寨典,這里是把當(dāng)前的端口返回給調(diào)用者氛雪,同時把自己注冊到服務(wù)中心,調(diào)用者通過服務(wù)中心調(diào)用耸成。

b) POM設(shè)置

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

c) application.yml配置文件

eureka:
datacenter: ctm
environment: dev
instance:
hostname: 192.168.1.78
prefer-ip-address: true
ip-address: 192.168.1.129
lease-renewal-interval-in-seconds: 10
lease-expiration-duration-in-seconds: 30
instance-id: ${eureka.instance.ip-address}:${server.port}
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1002/eureka/,http://${eureka.instance.hostname}:1003/eureka/
fetch-registry: true
register-with-eureka: true
healthcheck:
enabled: true

d) 主要參數(shù)說明

i. eureka.instance.prefer-ip-address 使用IP顯示注冊信息

ii. eureka.instance.ip-address 實例IP地址报亩,

iii. eureka.instance.instance-id 自定義實例id,服務(wù)之間調(diào)用就是使用該配置墓猎,多個實例必須保證唯一性

iv. eureka.client.service-url.defaultZone 注冊中心地址

e) 服務(wù)提供者API

@Value("${server.port}")
private String getPort;
@GetMapping(name = "index", value = "/index")
public String Index() {
return getPort;
}
  1. feign消費端項目配置

a) POM設(shè)置

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

i. 這里把服務(wù)消費端也注冊到了服務(wù)治理中心,消費者同時也是其它服務(wù)的提供者赚楚。

b) application.yml配置文件

eureka:
datacenter: ctm
environment: dev
instance:
hostname: 192.168.1.78
prefer-ip-address: true
ip-address: 192.168.1.129
lease-renewal-interval-in-seconds: 10
lease-expiration-duration-in-seconds: 30
instance-id: ${eureka.instance.ip-address}:${server.port}
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1002/eureka/,http://${eureka.instance.hostname}:1003/eureka/
fetch-registry: true
register-with-eureka: true
healthcheck:
enabled: true

c) feign服務(wù)消費者API

@Configuration
public class FeignConfig {
@Bean
public Retryer feignRetryer(){
return new Retryer.Default(100, TimeUnit.SECONDS.toMillis(1),3);
}
}
@Component
public class FallBackService implements FeignService {
@Override
public String Index() {
return "hi,feign,error!";
}
}
@Component
@FeignClient(name = "DEMOSERVICEIMPL",configuration = FeignConfig.class,fallback = FallBackService.class)
public interface FeignService {
@GetMapping(value = "/index")
String Index();
}

i. FeignClient feign客戶端配置毙沾,這里配置了服務(wù)名稱、重試規(guī)則宠页、失敗回調(diào)左胞。

3. 重點提示

a) 為了演示負載寇仓,3個服務(wù)提供者必須設(shè)置3個不同的端口,并且其它相同烤宙,不然會被認為是不同的服務(wù)遍烦,起不到均衡的作用,這里跟ribbon一樣躺枕。

4. 項目運行

a) 運行服務(wù)提供者

i. 運行3個服務(wù)者實例后服猪,會在服務(wù)中心看到如下效果,服務(wù)提供者已經(jīng)注冊成功

b) feign運行服務(wù)消費者

i. 運行消費者拐云,如下圖所示

c) 打開PostMan罢猪,輸入消費者地址,多刷新幾次叉瘩,即可看到負載效果

clip_image008

這樣spring cloud feign就介紹完了膳帕,如果在開發(fā)中遇到問題,也可以留言共同探討共同進步薇缅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末危彩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泳桦,更是在濱河造成了極大的恐慌汤徽,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓬痒,死亡現(xiàn)場離奇詭異泻骤,居然都是意外死亡,警方通過查閱死者的電腦和手機梧奢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門狱掂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亲轨,你說我怎么就攤上這事趋惨。” “怎么了惦蚊?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵器虾,是天一觀的道長。 經(jīng)常有香客問我蹦锋,道長兆沙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任莉掂,我火速辦了婚禮葛圃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己库正,他們只是感情好曲楚,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褥符,像睡著了一般龙誊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喷楣,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天趟大,我揣著相機與錄音,去河邊找鬼抡蛙。 笑死护昧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粗截。 我是一名探鬼主播惋耙,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熊昌!你這毒婦竟也來了绽榛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤婿屹,失蹤者是張志新(化名)和其女友劉穎灭美,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昂利,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡届腐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜂奸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犁苏。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扩所,靈堂內(nèi)的尸體忽然破棺而出围详,到底是詐尸還是另有隱情,我是刑警寧澤祖屏,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布助赞,位于F島的核電站,受9級特大地震影響袁勺,放射性物質(zhì)發(fā)生泄漏雹食。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一期丰、第九天 我趴在偏房一處隱蔽的房頂上張望群叶。 院中可真熱鬧漠嵌,春花似錦、人聲如沸盖呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽几晤。三九已至,卻和暖如春植阴,著一層夾襖步出監(jiān)牢的瞬間蟹瘾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工掠手, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留憾朴,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓喷鸽,卻偏偏與公主長得像众雷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子做祝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361