Spring Cloud 學習筆記(三) 之服務治理模塊Spring Cloud 服務發現與消費

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

    https://github.com/mrg1511104848/ribbon-consumer            

相關文章
相關標籤/搜索