第五節(jié) 微服務(wù)OTRS 補(bǔ)充客戶端負(fù)載均衡

客戶端客戶端負(fù)載均衡使用

spring could在客戶端負(fù)載均衡有兩種選擇一種是ribbon+restTemplate喇闸,另一種是feign碴巾。本主要講解下基于ribbon+rest著隆。當(dāng)然feign(Feign默認(rèn)集成了ribbon)也會(huì)簡(jiǎn)單介紹绍申。

  1. ribbon+restTemplate實(shí)現(xiàn)方式
    首先需要在項(xiàng)目中添加pom文件中添加依賴
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
  1. 在工程的配置文件指定服務(wù)的注冊(cè)中心地址為同上節(jié)eureka client配置相同 衙耕,例如:
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8764
spring:
  application:
    name: service-ribbon
  1. 在工程的啟動(dòng)類中,通過(guò)@EnableDiscoveryClient向服務(wù)中心注冊(cè)弄慰;并且向程序的ioc注入一個(gè)bean: restTemplate;并通過(guò)@LoadBalanced注解表明restRemplate開(kāi)啟負(fù)載均衡的功能。
    例如在api-server項(xiàng)目啟動(dòng)類如下
  @SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker
@EnableResourceServer
@Configuration
@ComponentScan({"com.packtpub.mmj.api.service", "com.packtpub.mmj.common"})
public class ApiApp {
  //................................省略
    @LoadBalanced
    @Bean
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        LOG.info("Register MDCHystrixConcurrencyStrategy");
        HystrixPlugins.getInstance().registerConcurrencyStrategy(new MDCHystrixConcurrencyStrategy());
        SpringApplication.run(ApiApp.class, args);
    }
}
  • 在使用restTemplate向其他服務(wù)發(fā)送請(qǐng)求就會(huì)通過(guò)eureka server 通過(guò)負(fù)載策略代理到相應(yīng)的服務(wù)上首尼。
  • 注意:ribbon中會(huì)根據(jù)服務(wù)名來(lái)選擇具體的服務(wù)實(shí)例挑庶,根據(jù)服務(wù)實(shí)例在請(qǐng)求的時(shí)候會(huì)用具體的url替換掉服務(wù)名。所以使用的url要用服務(wù)名稱而不是IP:port這種形式

比如下例子:

@Autowired
    RestTemplate restTemplate;

    public String hiService(String name) {
        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
    }
  1. Feign是一個(gè)聲明式的偽Http客戶端软能,使用Feign迎捺,只需要?jiǎng)?chuàng)建一個(gè)接口并注解。Feign支持可插拔的編碼器和解碼器查排。Feign默認(rèn)集成了Ribbon凳枝,并和Eureka結(jié)合,默認(rèn)實(shí)現(xiàn)了負(fù)載均衡雹嗦。
  • 使用的第一步添加依賴
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  • 第二步 工程配置application.yml范舀,和上述ribbon相同 略
  • 第三步 啟動(dòng)類加上@EnableFeignClients注解開(kāi)啟Feign的功能,例如:
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class AppService{
    public static void main(String[] args) {
        SpringApplication.run( AppService.class, args );
    }
}
  • 第四步 使用
    只需要定義一個(gè)接口合是,通過(guò)@ FeignClient(“服務(wù)名”),來(lái)指定調(diào)用哪個(gè)服務(wù)锭环。比如在代碼中調(diào)用了restaurant-service服務(wù)的“/v1/restaurants”聪全,(spring 會(huì)替我們實(shí)現(xiàn)有@ FeignClient的接口)代碼如下:
//定義

@FeignClient("restaurant-service")
interface RestaurantClient {
    @RequestMapping(method = RequestMethod.GET, value = "/v1/restaurants")
    Collection<Restaurant> getRestaurants(@RequestParam("name") String name);
}
//使用
@Autowired
    private RestaurantClient restaurantClient;
// 調(diào)用即可
  • 總結(jié): 上述兩種方式均為客戶端服務(wù)在調(diào)用,其他服務(wù)的請(qǐng)求會(huì)先通過(guò)eureka server查找已注冊(cè)的服務(wù)根據(jù)相應(yīng)的負(fù)載策略辅辩,轉(zhuǎn)到具體的服務(wù)

  • github 源碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末难礼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子玫锋,更是在濱河造成了極大的恐慌蛾茉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撩鹿,死亡現(xiàn)場(chǎng)離奇詭異谦炬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)节沦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門键思,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人甫贯,你說(shuō)我怎么就攤上這事吼鳞。” “怎么了叫搁?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赔桌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渴逻,道長(zhǎng)疾党,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任裸卫,我火速辦了婚禮仿贬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘墓贿。我一直安慰自己,他們只是感情好蜓氨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布聋袋。 她就那樣靜靜地躺著,像睡著了一般穴吹。 火紅的嫁衣襯著肌膚如雪幽勒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天港令,我揣著相機(jī)與錄音啥容,去河邊找鬼锈颗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咪惠,可吹牛的內(nèi)容都是我干的击吱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼遥昧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼覆醇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起炭臭,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤永脓,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鞋仍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體常摧,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年威创,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了排宰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡那婉,死狀恐怖板甘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情详炬,我是刑警寧澤盐类,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站呛谜,受9級(jí)特大地震影響在跳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隐岛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一猫妙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聚凹,春花似錦割坠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至湘今,卻和暖如春敢朱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工拴签, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孝常,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓蚓哩,卻偏偏與公主長(zhǎng)得像构灸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杖剪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容