在使用spring cloud的時(shí)候, 我們使用Feign來(lái)進(jìn)行服務(wù)之間的相互訪問(wèn); 那如果我們?cè)摲?wù)的訪問(wèn)流量很大的時(shí)候我們肯定不能單獨(dú)使用項(xiàng)目來(lái)跑服務(wù), 這時(shí)候分布式系統(tǒng)就要搭配集群使用了~;
前面回顧:
spring cloud之Eureka--服務(wù)治理
spring cloud使用過(guò)Eureka怎么進(jìn)行服務(wù)間相互訪問(wèn)--Feign
spring cloud調(diào)用方法異常怎么辦--Hystrix使用講解
下面是我自己在github上的spring cloud的demo
spring_cloud_demo
1.spring cloud里面如何服務(wù)之間負(fù)載均衡
1.1什么是負(fù)載均衡
負(fù)載均衡(Load Balance)其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行治宣,例如WEB服務(wù)器眠蚂、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等白对,從而共同完成工作任務(wù)禀综。
簡(jiǎn)單的來(lái)說(shuō), 就是多臺(tái)服務(wù)器來(lái)執(zhí)行同一個(gè)任務(wù), 根據(jù)某種算法來(lái)實(shí)現(xiàn)均衡的訪問(wèn)服務(wù)器;
1.2spring cloud中的負(fù)載均衡
實(shí)現(xiàn)負(fù)載均衡必須需要兩個(gè)及以上服務(wù)器(跑同一個(gè)功能)才能實(shí)現(xiàn);
cloud中, 已經(jīng)給我們準(zhǔn)備好了負(fù)載均衡的組件: Ribbon
2.spring cloud 使用Ribbon
2.1添加依賴
<!--負(fù)載均衡調(diào)用生產(chǎn)者 消費(fèi)者添加該依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2.2啟動(dòng)負(fù)載均衡 Ribbon
在spring boot的啟動(dòng)類中添加注解@LoadBalanced
package cn.cooplan.order;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableHystrix //開啟熔斷器
@EnableFeignClients
@EnableEurekaClient //開啟Eureka客戶端服務(wù)
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
@Bean
@LoadBalanced //開啟負(fù)載均衡
RestTemplate restTemplate (){
return new RestTemplate();
}
}
備注:restTemplate方法返回的對(duì)象是Feign的依賴對(duì)象, @LoadBalanced注解開啟, 默認(rèn)負(fù)載均衡實(shí)現(xiàn)是使用輪詢的方法;
簡(jiǎn)簡(jiǎn)單單的一個(gè)注解我們就實(shí)現(xiàn)了負(fù)載均衡, 這里大家可以自己去測(cè)試一翻, 注意的是, 被調(diào)用的服務(wù)最少有兩臺(tái)服務(wù)在跑, 例如, 服務(wù)A要調(diào)取服務(wù)B , B 就要開啟 B1, B2;
3.總結(jié)
我們要實(shí)現(xiàn)負(fù)載均衡, 比如要有兩個(gè)以上的服務(wù)在跑同一個(gè)功能, 這個(gè)時(shí)候我們才有實(shí)現(xiàn)負(fù)載均衡的意義;在使用Eureka服務(wù)治理的時(shí)候, 例如啟動(dòng)兩個(gè)GOODS服務(wù), 都是來(lái)完成goods的功能, 這個(gè)時(shí)候我們?cè)谑褂肍eign進(jìn)行服務(wù)間通信的時(shí)候, 我們會(huì)獲得兩個(gè)GOODS服務(wù)的對(duì)象, Ribbon根據(jù)制定的規(guī)則, 來(lái)對(duì)GOODS的服務(wù)進(jìn)行訪問(wèn), 有輪詢, 加權(quán)輪詢, 隨機(jī)等形式來(lái)實(shí)現(xiàn)負(fù)載均衡;