後臺服務依賴第三方服務,第三方服務是服務器集羣的形式對外提供服務。致使Http客戶端須要配置多個ip地址來訪問第三方服務的問題。這個問題,這裏是使用大Spring中內置的Ribbon客戶端。java
ext { springCloudVersion = "Finchley.SR2" } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } dependencies { implementation "org.springframework.cloud:spring-cloud-starter-netflix-ribbon" }
src/main/resources/application.yml
web
say-hello: ribbon: eureka: enabled: false listOfServers: 10.158.17.60:80,10.158.17.61:80 ServerListRefreshInterval: 15000
這裏主要作了三件事情:spring
@SpringBootApplication @RibbonClient(name = "say-hello") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @LoadBalanced @Bean RestTemplate restTemplate(){ return new RestTemplate(); } }
這裏主要注意@RibbonClien
和 @LoadBalanced
的配置:服務器
@RibbonClien
主要配置第三方的調用的服務使用ribbon來請求 @LoadBalanced
告訴RestTemplate須要啓動負載均衡@RequestMapping("/hi") public String hi(@RequestParam(value="name", defaultValue="Artaban") String name) { String greeting = this.restTemplate.getForObject("http://say-hello/greeting", String.class); return String.format("%s, %s!", greeting, name); }