一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring-cloud 服務發現與消費(以ribbon為例)

Spring-cloud 服務發現與消費(以ribbon為例)

2021-04-22 12:25東北小狐貍 Java教程

這篇文章主要介紹了Spring-cloud 服務發現與消費(以ribbon為例),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

說明:

ribbon是spring-cloud中作為服務消費者的一種角色,客戶端可以通過它來對服務提供者的服務進行消費,

比如本例中是服務提供者注冊到注冊中心,服務提供者提供了一個服務接口,返回一個hello字符串,我們通過ribbon將這個接口調用,再不暴露真實服務提供者的地址的同時,獲取服務提供者的服務

前提:

按照之前幾個教程,搭建出注冊中心、服務提供者。這里可以使用分片的注冊中心,也可以不使用,這里暫時定為使用之前搭好的分片注冊中心,服務提供者僅提供一個即可。

準備工作:

1、啟動注冊中心

按照之前的教程,分別使用peer1和peer2進行啟動兩個分片的注冊中心,如果是單節點直接啟動項目即可

Spring-cloud 服務發現與消費(以ribbon為例)

啟動后可以查看下localhost:1111或localhost:1112,如圖

Spring-cloud 服務發現與消費(以ribbon為例)Spring-cloud 服務發現與消費(以ribbon為例)

2、啟動服務提供者

這里為了查看負載均衡的情況,所以需要啟動兩個服務提供者

按照之前教程中,分別開啟兩個terminal進行指定端口啟動(兩個相同的服務也可以在各自的配置文件中配置不同的端口),兩個終端指令分別如下:

?
1
2
cd target
java -jar springclouddemo-0.0.1-snapshot.jar --server.port=8080
?
1
2
cd target
java -jar springclouddemo-0.0.1-snapshot.jar --server.port=8081

啟動結果:

Spring-cloud 服務發現與消費(以ribbon為例)

至此,準備工作已經完成

正文:

1、ribbon服務搭建

新建一個maven項目,不使用模板即可。項目名為robbin-customer,導入依賴參考如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
     xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelversion>4.0.0</modelversion>
 
  <groupid>com.hellxz</groupid>
  <artifactid>ribbon-customer</artifactid>
  <version>1.0-snapshot</version>
 
  <parent>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-parent</artifactid>
    <version>1.5.9.release</version>
    <relativepath/>
  </parent>
  
  <dependencies>
    <dependency>
      <groupid>org.springframework.boot</groupid>
      <artifactid>spring-boot-starter-web</artifactid>
    </dependency>
    <dependency>
      <groupid>org.springframework.cloud</groupid>
      <artifactid>spring-cloud-starter-eureka</artifactid>
      <version>release</version>
    </dependency>
    <dependency>
      <groupid>org.springframework.cloud</groupid>
      <artifactid>spring-cloud-starter-ribbon</artifactid>
      <version>release</version>
    </dependency>
  </dependencies>
 
  <dependencymanagement>
    <dependencies>
      <dependency>
        <groupid>org.springframework.cloud</groupid>
        <artifactid>spring-cloud-dependencies</artifactid>
        <version>release</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencymanagement>
</project>

新建springboot啟動類,將resttemplate交給spring容器進行管理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.cnblogs.hellxz;
 
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;
 
/**
 * @author : hellxz
 * @description: 消費應用
 * @date : 2018/4/16 15:45
 */
@enablediscoveryclient
@springbootapplication
public class customerapplication {
 
  @bean //將此bean交給spring容器
  @loadbalanced //通過此注解開啟負載均衡
  resttemplate resttemplate(){
    return new resttemplate();
  }
 
  public static void main(string[] args) {
    springapplication.run(customerapplication.class, args);
  }
}

在src/resources目錄下創建一個application.yml進行配置注冊信息相關,本文使用了分片的注冊中心,單節點請配置一個defaltzone即可

?
1
2
3
4
5
6
7
8
9
10
11
12
server:
 port: 9000  #為ribbon-customer指定服務端口
 
spring:
 application:
  name: ribbon-customer #指定應用名
 
#指定eureka注冊中心地址
eureka:
 client:
  serviceurl:
   defaultzone: http://peer1:1111/eureka/,http://peer2:1112/eureka/

在啟動類同級目錄創建customercontroller,注入resttemplate進行調用服務接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.cnblogs.hellxz;
import org.springframework.beans.factory.annotation.autowired;
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;
/**
 * @author : hellxz
 * @description: 消費者應用
 * @date : 2018/4/16 15:54
 */
@restcontroller
public class customercontroller {
 
  @autowired
  //注入resttemplate
  private resttemplate resttemplate;
 
  @requestmapping(value="/ribbon-customer", method=requestmethod.get)
  public string hellocustomer(){
    //這里注釋掉,因為之前想當然使用了直鏈訪問服務提供者的接口,這樣是不會返回結果的,而且會報錯
    //return resttemplate.getforentity("http://localhost:8080/hello",string.class).getbody();
    //使用resttemplate調用微服務接口
    return resttemplate.getforentity("http://hello-service/hello", string.class).getbody();
 
  }
}

注意:上述代碼第24行給出了一個錯誤的演示,如果出現訪問ribbon接口報錯,出現白色報錯頁面,請檢查這里

至此ribbon消費者應用搭建完成,啟動測試

測試:

訪問http://localhost:1111/ 我們發現這個ribbon消費者應用已經注冊到注冊中心中了

Spring-cloud 服務發現與消費(以ribbon為例)

訪問http://localhost:9000/ribbon-customer

Spring-cloud 服務發現與消費(以ribbon為例)

還記得服務提供者項目中的如圖方法中如果有訪問則會打印信息,因為啟動了兩個服務提供者,這里可以測試ribbon的負載均衡

Spring-cloud 服務發現與消費(以ribbon為例)

查看服務提供者輸出

Spring-cloud 服務發現與消費(以ribbon為例)

而第二個終端沒有,依舊顯示到resolving eureka endpoints via configuration這行

刷新頁面查看終端,由于ribbon的默認負載均衡的實現是輪詢的,所以可能出現多次訪問同一服務,多刷新幾次頁面,一定會在另一個termical中顯示的!

Spring-cloud 服務發現與消費(以ribbon為例)

結語:

ribbon作為服務消費者,可以在用戶獲取到服務提供者提供的服務的同時,不向用戶暴露接口地址。可以看到,這里調用服務接口的時候使用的是服務提供者的服務名代替主機名,這在服務治理框架中,這種特性很重要。

由于本人之前是先學的jhipster生成器,所以,提前預報一下,之后還會有一種名為feign的技術可以替代ribbon,本系列博客均為學習筆記,實際操作中,可能會存在一個應用既是服務提供者又是服務消費者的情況。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/hellxz/p/8862209.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本美女动态图片 | 2019中文字幕| 国内精品麻豆 | 欧美日韩国产一区二区三区不卡 | 四虎国产精品免费久久久 | 国自产在线精品免费 | 日本一区二区免费在线 | 白白国产永久免费视频 | 国产高清在线播放刘婷91 | 国产3344视频在线观看免费 | 99久久er这里只有精品17 | 日本无遮挡拍拍拍凤凰 | 红杏网 | 欧美成年黄网站色高清视频 | 波多野结衣教师未删减版 | 全日爱韩国视频在线观看 | 深夜在线影院 | 国产成人一区二区三区视频免费蜜 | 嫩草视频在线观看视频播放 | 欧美久久久久久久一区二区三区 | 91热爆| 国产成人一级 | 日韩黄色影视 | 久久成人a毛片免费观看网站 | 丰满肥臀风间由美357在线 | 亚洲骚图| 女教师的一级毛片 | 狠狠色成人综合网图片区 | 激情视频激情小说 | 明星ai人脸替换脸忘忧草 | 性关系视频免费网站在线观看 | 波多野结衣中文字幕乱七八糟 | 日韩激情视频在线观看 | 91精品国产91久久久久久 | 99成人国产精品视频 | 国产xx肥老妇视频奂费 | 美国复古性经典xxxxx | 日本精品vide·ssex日本 | 高清国语自产拍免费视频国产 | 思思91精品国产综合在线 | 精品国产免费第一区二区三区日韩 |