<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      https://blog.csdn.net/June_FlyingFrost/article/details/89790656

      Spring cloud是一個基于Spring Boot實現的服務治理工具包,在微服務架構中用于管理和協調服務的
      微服務:就是把一個單體項目,拆分為多個微服務,每個微服務可以獨立技術選型,獨立開發,獨立部署,獨立運維.并且多個服務相互協調,相互配合,最終完成用戶的價值.
      Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署
      在這里插入圖片描述
      五大重要組件
      服務發現——Netflix Eureka
      客服端負載均衡——Netflix Ribbon/Feign
      服務網關——Netflix Zuul
      斷路器——Netflix Hystrix
      分布式配置——Spring Cloud Config

      Spring cloud入門-搭建環境( 以maven多模塊化的方法搭建)

      1.創建Maven普通項目

      最外層pom.xml:
      <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
          <spring-cloud.version>Finchley.SR1</spring-cloud.version>
          <springboot.version>2.0.5.RELEASE</springboot.version>
      </properties>
      
      <dependencyManagement>
          <dependencies>
      	    <dependency>
      		    <groupId>org.springframework.cloud</groupId>
      		    <artifactId>spring-cloud-dependencies</artifactId>
      		    <version>${spring-cloud.version}</version>
      		    <type>pom</type>
      		    <scope>import</scope>
      	    </dependency>
      	    <dependency>
      		    <groupId>org.springframework.boot</groupId>
      		    <artifactId>spring-boot-dependencies</artifactId>
      		    <version>${springboot.version}</version>
      		    <type>pom</type>
      		    <scope>import</scope>
      	    </dependency>
          </dependencies>
      </dependencyManagement>
      
      • 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

      2.Spring cloud-Eureka注冊中心

      Eureka是netflix的一個子模塊,也是核心模塊之一,Eureka是一個基于REST的服務,用于定位服務,以實現云端中間層服務發現和故障轉移
      服務注冊與發現對于微服務架構來說是非常重要的,有了服務發現和注冊,只需要使用服務的標識符,就可以訪問到服務,而不需要修改服務,而不需要修改服務調用的配置文件了

      1.創建Maven普通模塊User_eureka_7001
      2.導入jar包
      <!--springboot支持-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
      </dependency>
      
      <!--Eureka服務端支持-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      3.創建application.yml
      server:
        port: 7001
      eureka:
        instance:
          hostname: localhost
        client:
            registerWithEureka: false #是否要注冊到eureka
            fetchRegistry: false #表示是否從Eureka Server獲取注冊信息
      serviceUrl:
        defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #單機配置
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      4.創建啟動類
      @SpringBootApplication
      @EnableEurekaServer//標識是eureka服務端
      public class EnrekaServerApplication_7001 {
      public static void main(String[] args) {
              SpringApplication.run(EnrekaServerApplication_7001.class);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      5.啟動入庫類訪問localhost:7001

      在這里插入圖片描述

      3.Spring cloud-服務提供者

      1.創建一個模塊存放公共代碼User_interface

      例:
      在這里插入圖片描述

      2.創建服務提供者模塊User_provider_8001
      3.導入jar包和公共模塊依賴
      <dependencies>
          <!--公共代碼依賴-->
          <dependency>
      	    <groupId>cn.itsource.springcloud</groupId>
      	    <artifactId>User_interface</artifactId>
      	    <version>1.0-SNAPSHOT</version>
          </dependency>
          
          <!--springboot支持-->
          <dependency>
      	    <groupId>org.springframework.boot</groupId>
      	    <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
      	    <groupId>org.springframework.boot</groupId>
      	    <artifactId>spring-boot-starter-test</artifactId>
          </dependency>
          
          <!--eureka客戶端支持 -->
          <dependency>
      	    <groupId>org.springframework.cloud</groupId>
      	    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
          </dependency>
      </dependencies>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      4.創建application.yml
      server:
        port: 8001
      spring:
        application:
           name: USER-PROVIDER #不要使用下劃線
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:7001/eureka #告訴服務提供者要把服務注冊到哪兒
      instance:
          prefer-ip-address: true #顯示客戶端真實ip
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      5.創建啟動類
      @SpringBootApplication
      @EnableEurekaClient //表示是eureka的客戶端
      public class UserProviderApplication_8001 {
      public static void main(String[] args) {
              SpringApplication.run(UserProviderApplication_8001.class);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      6.創建controller
      @RestController
      @RequestMapping("/provider")
      public class UserController {
      
      @Autowired
      private IUserService userService;
      
      @RequestMapping("/user/{id}") //user/1
      public User getUser(@PathVariable("id") Long id) {
      
      // 正常應該調用service獲取用戶,現在模擬一下
      return new User(id, "zs");
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

      4.Spring cloud-服務消費者

      1.創建Maven模塊項目 User_consumer_9001
      2.導jar包和公共模塊依賴
      <!--公共代碼依賴-->
      <dependency>
          <groupId>cn.itsource.springcloud</groupId>
          <artifactId>User_interface</artifactId>
          <version>1.0-SNAPSHOT</version>
      </dependency>
      
      <!--springboot支持-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
      </dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      3.創建application.yml
      server:
        port: 9001
      spring:
        application:
          name: USER_CONSUMER
      
      • 1
      • 2
      • 3
      • 4
      • 5
      4.創建啟動類
      @SpringBootApplication
      public class UserConsumerAppliction_9001 {
      public static void main(String[] args) {
              SpringApplication.run(UserConsumerAppliction_9001.class);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      5.創建一個配置bean的類CfgBean
      @Configuration // <beans></beans>
      public class CfgBean {
      
          @Bean //<bean class="org.springframework.web.client.RestTemplate"></bean>
          public RestTemplate getRestTemplate(){
          return new RestTemplate();
              }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      6.創建Controller層
      @RestController
      @RequestMapping("/consumer")
      public class UserController {
      
          //多個方法調用只需改一處就ok
          public static  final String URL_PREFIX = "http://localhost:8001";
          
          @Autowired
          private RestTemplate restTemplate;
          
          @RequestMapping("/user/{id}")
          public User getUser(@PathVariable("id")Long id){
      	    //調用遠程服務 http請求
      	    String url = URL_PREFIX+"/provider/user/"+id;
      	    return restTemplate.getForObject(url,User.class );
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17

      Spring cloud入門加強-注冊中心集群

      如果只有一個注冊中心服務器,會存在單點故障所以要集群

      1.搭建集群

      1.映射hosts 模擬域名解析 C:\Windows\System32\drivers\etc
      127.0.0.1       eureka-7001.com
      127.0.0.1       eureka-7002.com
      
      • 1
      • 2
      2.創建User_eureka_7002 ,與7001一樣
      3.配置yml

      7001項目的application.yml

       server:
            port: 7001
          eureka:
            instance:
              hostname: eureka-7001.com
            client:
              registerWithEureka: false #是否要注冊到eureka
              fetchRegistry: false #表示是否從Eureka Server獲取注冊信息
              serviceUrl:
                #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #單機配置
                defaultZone: http://eureka-7002.com:7002/eureka/ #集群配置,如果有多個,有逗號分割,不要包含自己
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      7002項目的application.yml

      server:
        port: 7002
      eureka:
        instance:
          hostname: eureka-7002.com
        client:
          registerWithEureka: false #是否要注冊到eureka
          fetchRegistry: false #表示是否從Eureka Server獲取注冊信息
          serviceUrl:
            #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #單機配置
            defaultZone: http://eureka-7001.com:7001/eureka/ #集群配置,如果有多個,有逗號分割,不要包含自己
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      4.啟動測試

      在這里插入圖片描述在這里插入圖片描述

      5.服務提供者8001的yml修改
      server:
        port: 8001
      spring:
        application:
      name: user-provider #不要使用下劃線
      eureka:
        client:
          service-url:
            #defaultZone: http://localhost:7001/eureka #告訴服務提供者要把服務注冊到哪兒
            defaultZone: http://eureka-7001.com:7001/eureka,http://eureka-7002.com:7002/eureka
      instance:
        prefer-ip-address: true #顯示客戶端真實ip
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      2.Spring cloud入門加強-服務消費者(負載均衡)

      為了提供并發量,有時同一個服務提供者可以部署多個。這個客戶端在調用時要根據一定的負責均衡策略完成負載調用

      Spring cloud中常見負載均衡實現技術

      1.Ribbon負載均衡

      Ribbon是Netflix發布的云中間層服務開源項目,主要功能是提供客戶端負載均衡算法。Ribbon客戶端組件提供一系列完善的配置項,如,連接超時,重試等

      1.創建項目 User_provider_8002,并注冊到注冊中心
      2.User_consumer_9001導入ribbon的jar包
      <!--客戶端負載均衡實現 ribbon-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-ribbon</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      3.修改User_consumer_9001的yml
      server:
        port: 9001
      eureka:
        client:
          registerWithEureka: false #不注冊到Eureka,不在注冊中心顯示
          service-url:
            #defaultZone: http://localhost:7001/eureka
            defaultZone: http://eureka-7001.com:7001/eureka,http://eureka-7002.com:7002/eureka
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      4.啟動類
      @SpringBootApplication
      @EnableEurekaClient
      public class UserConsumerApplicaton_9001 {
      public static void main(String[] args) {
              SpringApplication.run(UserConsumerApplicaton_9001.class);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      5.修改User_consumer_9001的config包的CfgBean類
      @Configuration
      public class CfgBean {
      
      @Bean
       @LoadBalanced //開啟負載均衡
      public RestTemplate getRestTemplate(){
      return  new RestTemplate();
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      6.修改Controller
      @RestController
      @RequestMapping("/consumer")
      public class UserController {
      
      //多個方法調用只需改一處就ok
          //public static  final String URL_PREFIX = "http://localhost:8001";
      public static  final String URL_PREFIX ="http://USER-PROVIDER"; //通過服務名從注冊中心獲取服務列表,通過負載均衡調用
      
      @Autowired
      private RestTemplate restTemplate;
      
      @RequestMapping("/user/{id}")
      public User getUser(@PathVariable("id")Long id){
      //調用遠程服務 http請求
      String url = URL_PREFIX+"/provider/user/"+id;
      return restTemplate.getForObject(url,User.class );
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

      2.Feign負載均衡

      前面的可以發現當我們通過RestTemplate調用其它服務的API時,所需要的參數須在請求的URL中進行拼接,如果參數少的話或許我們還可以忍受,一旦有多個參數的話,這時拼接請求字符串就會效率低下,并且顯得好傻
      在這里插入圖片描述
      Feign是以接口方式進行調用,而不是通過RestTemplate來調用,feign底層還是ribbo,它進行了封裝,

      1.創建 User_consum_9002模塊
      2.到jar包
      <dependencies>
          <!--公共代碼依賴-->
          <dependency>
      	    <groupId>cn.itsource.springcloud</groupId>
      	    <artifactId>User_interface</artifactId>
      	    <version>1.0-SNAPSHOT</version>
          </dependency>
          
          <!--springboot支持-->
          <dependency>
      	    <groupId>org.springframework.boot</groupId>
      	    <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
      	    <groupId>org.springframework.boot</groupId>
      	    <artifactId>spring-boot-starter-test</artifactId>
          </dependency>
          
          <!--eureka客戶端,服務消費者也要從注冊中心獲取可用服務列表-->
          <dependency>
      	    <groupId>org.springframework.cloud</groupId>
      	    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
          </dependency>
          
          <!--feign的支持-->
          <dependency>
      	    <groupId>org.springframework.cloud</groupId>
      	    <artifactId>spring-cloud-starter-openfeign</artifactId>
          </dependency>
      </dependencies>
      
      • 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
      3.創建application.yml
      server:
        port: 9002
      eureka:
        client:
          registerWithEureka: false #不注冊到Eureka,不在注冊中心顯示
          service-url:
            #defaultZone: http://localhost:7001/eureka
            defaultZone: http://eureka-7001.com:7001/eureka,http://eureka-7002.com:7002/eureka
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      4.創建啟動類
      @SpringBootApplication
      @EnableEurekaClient
      @EnableFeignClients(basePackages = "cn.itsource.microservice") //不在當前包下面
      public class UserConsumerFeign9002Application {
      
      	public static void main(String[] args) {
      		SpringApplication.run(UserConsumerFeign9002Application.class, args);
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      5.創建一個接口來調用服務
      //調用服務名字
      @FeignClient(value = "USER-PROVIDER")
      public interface UserCilent {
          @RequestMapping("/provider/user/{id}") //user/1
          User getUser(@PathVariable("id") Long id);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      6.Controller層
      @RestController
      @RequestMapping("/consumer")
      public class UserController {
      
          @Autowired
          private UserCilent userCilent;
          
          @RequestMapping("/user/{id}")
          public User getUser(@PathVariable("id")Long id){
                  System.out.println(userCilent.getClass());
          		return userCilent.getUser(id);
          }
      }
      Posted on 2020-08-01 16:03  旅途  閱讀(500)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美极品色午夜在线视频| 毛片网站在线观看| 国产女人喷潮视频免费| 亚洲中文字幕人成影院| 国产精品高清视亚洲乱码| 草草线在成年免费视频2| 额敏县| 天天爽夜夜爽人人爽曰| 国产一区二区三区高清视频| 国产一二三区在线| 亚洲综合在线日韩av| 亚洲国产高清aⅴ视频| 久久综合狠狠综合久久激情| 国产午夜精品理论大片| 野外做受三级视频| 久久精品国产亚洲av天海翼| 狠狠色综合久久狠狠色综合| 亚洲AV天天做在线观看| 亚洲色欲色欱WWW在线| 国内熟女中文字幕第一页| 亚洲国产精品成人综合色在| XXXXXHD亚洲日本HD| 国产l精品国产亚洲区| 高中女无套中出17p| 黄色段片一区二区三区| 少妇精品无码一区二区免费视频| 色噜噜在线视频免费观看| 精品黑人一区二区三区| 无码一区二区三区视频| 亚洲欧美中文日韩V日本| 欧美日韩v| 日韩精品亚洲专在线电影| 迁安市| 中文字幕va一区二区三区| 美女又黄又免费的视频| 老熟妇欲乱一区二区三区| 熟妇人妻不卡中文字幕| 欧美野外伦姧在线观看| 一区二区三区四区自拍偷拍 | 中文字幕日韩有码av| 亚洲欧洲日韩国内高清|