一、負載均衡解決方案分類及特征
業界主流的負載均衡解決方案有:
1.1 集中式負載均衡
即在客戶端和服務端之間使用獨立的負載均衡設施(可以是硬件,如F5, 也可以是軟件,如nginx), 由該設施負責把訪問請求通過某種策略轉發至服務端。

1.2 進程內負載均衡
將負載均衡邏輯集成到客戶端組件中,客戶端組件從服務注冊中心獲知有哪些地址可用,然后自己再從這些地址中選擇出一個合適的服務端發起請求。Ribbon就是一個進程內的負載均衡實現。

二、Ribbon常用負載均衡策略
Ribbon就屬於進程內負載均衡,它只是一個類庫,集成於Eureka Client進程,Eureka Client進程通過訪問注冊中心Eureka Server發現服務列表,發現的服務列表信息是由ribbon來管理的。當訪問Application Service的時候,Application Client會通過ribbon來找到合適的Application Service地址信息,並發起遠程調用請求。
Ribbon的負載均衡策略是通過不同的類型來實現的,下表詳細介紹一些常用負載均衡策略及對應的Ribbon策略類。

三、指定負載均衡策略
可以通過全局配置文件來改變當前環境中使用的Ribbon負載均衡策略。在Ribbon中沒有通用的負載均衡策略配置方案。
#設置負載均衡策略 eureka-application-service為調用的服務的名稱 eureka-application-service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
四、 點對點直連測試
在商業開發中,經常會更新或升級部分服務。當系統某服務出現bug后,需要修改並再次測試。如果還是通過生產環境中的注冊中心來注冊發現服務,那么影響面太大。這個時候可以考慮將Application Service注冊到一個測試Eureka Server上,使用點對點直連的方式讓Application Client直接訪問Application Service,打到測試的目的。
使用點對點直連測試很容器。只要在啟動的時候避免注冊和發現服務(刪除啟動類上的@EnableEurekaClient注解),並在全局配置文件中配置下述內容即可。(全局配置文件中關於Eureka Server的配置可刪除)。
spring.application.name=eureka-application-client
server.port=8080 # 點對點直連是不發現服務,不是不注冊服務。 # 任何Eureka Client都必須注冊。如果沒有配置Eureka Server節點列表,則注冊失敗。Eureka client無法正常啟動。 eureka.client.serviceUrl.defaultZone=http://eurekaserver1:111111@eurekaserver1:8761/eureka/,http://eurekaserver2:222222@eurekaserver2:8761/eureka/ #點對點直連測試配置 # 關閉ribbon訪問注冊中心Eureka Server發現服務,但是服務依舊會注冊。 ribbon.eureka.enabled=false # 配置服務列表,其中eureka-application-service代表要訪問的服務的應用名,如果有多個服務結點組成集群,多個節點的配置信息使用逗號','分隔。 # 配置服務列表,需要配置要調用的服務的名字和服務所在的位置。 # 服務的名字,就是Application Service中配置的spring.application.name。 # 服務的位置,就是服務的所在ip和端口。 # 如果服務位置有多個,也就是服務集群,那么使用逗號','分割多個服務列表信息。 eureka-application-service.ribbon.listOfServers=localhost:8083
