1、前言java
前面的文章咱們已經講了如何搭建服務註冊中心,如何搭建客戶端去註冊。接下來咱們講一下服務的發現與消費git
2、服務註冊github
1.首先下載服務註冊中心源碼web
2.項目源碼請到 : https://github.com/mrg1511104848/my-eureka-server.git下載spring
3.導入到idea瀏覽器
4.運行服務註冊中心springboot
------------------------------------------------------------------------------------------app
1.首先下載客戶端源碼負載均衡
2.項目源碼請到 : https://github.com/mrg1511104848/springboot-study下載maven
3.導入到 idea
4.經過idea 的 maven package 功能,將源碼打包成 jar
5.經過命令行啓動兩個客戶端
java -jar xxx.jar --server.port=9998
java -jar xxx.jar --server.port=9999
------------------------------------------------------------------------------------------
3、服務消費
這裏的消費咱們用Ribbon
1.概念:
Ribbon : 首先咱們看如下spring官方怎麼解釋的
Ribbon is a client-side load balancer that gives you a lot of control over the behavior of HTTP and TCP clients 功能區是一個客戶端負載均衡器,能夠讓您對HTTP和TCP客戶端的行爲有不少控制權。
2.如何引用Ribbon
a.建立項目
首先複製一下本地的spring-boot項目,將其中的git信息刪除。改一下名 叫作ribbon-customer。
b.添加依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
c.使用
建立主類
package com.myspringboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @EnableDiscoveryClient @SpringBootApplication public class StudyApplication { @Bean @LoadBalanced RestTemplate restTemplate(){ return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(StudyApplication.class, args); } }
加入 @EnableDiscoveryClient
加入 restTemplate 用於獲取負載均衡的一個管理對象
d.建立Controller,消費其餘服務。
package com.myspringboot.web; import com.netflix.discovery.converters.Auto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.hypermedia.DiscoveredResource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import java.util.List; @RestController public class CustomerController { @Autowired private RestTemplate restTemplate; @RequestMapping(value="/ribbon-consumer",method=RequestMethod.GET) public String helloConsumer(){ return restTemplate.getForEntity("http://HELLO-SERVICE/hello",String.class).getBody(); } }
這裏經過調用restTemplate獲取須要消費的服務。並消費。
e.修改配置
src\main\resources 下的application.yml 修改 server.port = 9898
、 spring.application.name=ribbon-consumer
f.訪問剛建立的Controller,看看結果和咱們預想是否一致
http://localhost:9898/ribbon-consumer。
瀏覽器輸出
證實服務消費成功,成功調用了其餘的幾個服務。
4、總結
本章主要講了如何Ribbon的概念,以及如何經過Ribbon進行服務的消費。
若是對本章有疑問,歡迎留言。
關於本章的源碼已經更新至github,歡迎下載和star