1. 程式人生 > >spring cloud 01

spring cloud 01

get one temp redis -h template 安全 信息 search

1·spring cloud 提供分布式系統工具

  配置中心、服務發現、熔斷(超時錯誤處理)、路由(攔截)、微代理、控制總線、leader選舉、分布式session、集群狀態

2·已接觸子項目

  config,配置項目+配置中心(本地、git、subversion)

  netflix,開發工具包,包括eureka、hystrix、zuul、archaius等

  hystrix,容錯管理工具

  zuul,邊緣服務工具,提供動態路由,監控,彈性,安全服務

3·服務發現模塊

  1·pom文件

    spring-cloud-starter-eureka-server

  2·在APP類上添加@EnableEurekaServer註解

  3·配置文件

    server.port=1111

    #禁用它的客戶端註冊行為

    eureka.client.register-with-eureka=false

    eureka.client.fetch-registry=false

    #註冊中心地址

    eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

4·生產者

  1·pom依賴

    spring-cloud-starter-eureka

  2·在APP類上添加@EnableDiscoveryClient註解

  3·配置信息

    #服務實例名

   spring.application.name

   server.port=2222

    eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

5·消費者

  1·使用ribbon做負載均衡

    ribbon是基於http和tcp客戶端的負載均衡器,通過客戶端中配置的ribbonServerList服務端列表去輪詢訪問

    當ribbon和eureka聯合時,ribbobServerList被discoveryEnabledNIWSServerList重寫,擴展為從eureka註冊中心獲取服務端列表。同時用NIWSDiscoveryPing來去掉IPing

  2·ribbon使用

    pom依賴:spring-cloud-starter-ribbon

    APP類上@EnableDiscoveryClient註解來添加發現服務能力,@EnableFeignClients註解請求其他服務

    APP類中創建restTemplate實例,並通過@loadBalanced+@bean註解開啟負載均衡

6·斷路器(處理延時、出錯故障)

  向調用方返回一個錯誤相應,而不是長時間的等待

  spring cloud中使用hystrix

  使用

    1·pom依賴

      spring-cloud-starter-hystrix

    2·APP類上@EnableCircuitBreaker來開啟斷路器功能

    3·在使用ribbon消費服務的函數上增加@HystrixCommand註解來指定回調方法。

      feign使用Hystrix

        pom不需要引入hystrix,feign中已經依賴了

        使用@feignClient註解的fallback屬性指定回調類

        創建回調類實現這個借口,實現錯誤處理方法

7·配置中心

  原理

    git上存放配置文件

    config-server連接到git

    config-client連接到config-server

    啟動config-client時,config-client通過config-server拿到遠程git上的配置文件,通過soring加載到對象中

  使用

    1·添加pom依賴

      spring-cloud-config-server

    2·APP類上@EnableConfigServer

    3·配置文件

      spring.application.name=config-server

      server.port=7001

      spring.cloud.config.server.git.uri=http://git.oschina.net/zjb_china/SpringCloud-Learning

      spring.cloud.config.server.git.searchPaths=Chapter9-1-4/config-repo
      spring.cloud.config.server.git.username=username
      spring.cloud.config.server.git.password=password

    4·倉庫一般有四類文件

      

    •   users.properties
    •   users-dev.properties
    •   users-test.properties
    •   users-prod.properties

    5`url和配置文件的映射關系

      /{label}/{application}-{profile}.yml,{label}對應git上不同的分支,默認為master

        例:要訪問dev2分支,users應用的prod環境,可以通過:http://localhost:7001/users/prod/dec2

    6`消費者如何獲取配置信息

      1`pom依賴:spring-cloud-starter-config

      2`boostrap.yml配置config-server

        spring.application.name=users

        spring.cloud.config.profile=test

         spring.cloud.config.label=dev2

         spring.cloud.config.discovery.serviceId=config-server

          spring.cloud.config.discovery.enabled=true

        server.port=7002

      3`@Value("${from}")

        private String from;綁定配置服務中心配置的from屬性
    7·不重啟config-client情況下更新配置信息
      client中添加pom依賴:spring-boot-starter-actuator
      在需要自動更新配置的java類上@RefreshScope 修飾
      以後更新git上配置文件時候,config客戶端執行http://localhost:8080/refresh 就可以更新刷新配置變量到內存中了
      那麽問題來了,集群怎麽辦?
        使用spring cloud bus解決
          需要依賴AMQP、Redis、Kafka組件
















































spring cloud 01