1. 程式人生 > >SpringBoot -- 配置中心服務/webhook

SpringBoot -- 配置中心服務/webhook

配置中心伺服器


  • 配置中心伺服器,以版本的管理方式對分散式系統提供外部配置支援;
  • SpringCloud中採用Spring Cloud Config 進行整合,而想要進行實施更新則需要採用spring cloud bus的方式, 如 Rabbit、Kafka 等。
  • 版本管理採用 Git
  • 這裡採用Kafka,因為本地有開發測試環境
  • /bus/refresh 為訊息匯流排帶來的重新整理方式,可以手動呼叫
  • destination引數:用於重新整理指定的應用服務
  • e.g. /bus/refresh?destination=feignserver:8084

配置中心服務

建立配置中心服務module

build.gradle引入:cloud:spring-cloud-config-serverspring-boot-autoconfigure; 因為我們還想可以自動更新所以引入 spring-cloud-starter-bus-kafka,引入spring-boot-starter-actuator、spring-cloud-config-monitor用於監聽

build.gradle

apply plugin: 'org.springframework.boot'

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:"
+ springCloudVersion mavenBom "org.springframework.boot:spring-boot-dependencies:"+ springBootVersion mavenBom "org.springframework.boot:spring-boot-starter:"+ springBootVersion } } dependencies { compile('org.springframework.cloud:spring-cloud-config-server') compile('org.springframework.cloud:spring-cloud-starter-eureka'
) compile('org.springframework.boot:spring-boot-autoconfigure') compile('org.springframework.cloud:spring-cloud-starter-bus-kafka') compile('org.springframework.boot:spring-boot-starter-log4j2') compile('org.springframework.boot:spring-boot-starter-actuator') compile('org.springframework.cloud:spring-cloud-config-monitor') compile('org.apache.logging.log4j:log4j-1.2-api:'+ log4jAPIVersion) compile('org.xerial.snappy:snappy-java:' + snappyVersion) testCompile('org.springframework.boot:spring-boot-starter-test') testCompile group: 'junit', name: 'junit', version: '4.11' } configurations { all*.exclude module: 'spring-boot-starter-logging' all*.exclude module: 'logback-classic' all*.exclude module: 'log4j-over-slf4j' all*.exclude module: 'snappy-java' } sourceSets { main { resources.srcDirs = ['src/main/resources', 'src/main/java'] resources.includes = ['**/*.xml', '**/*.yml'] } } jar { baseName = 'configserver-bootcwenao' }

因為引入了spring-cloud-starter-bus-kafka需要排除掉這個元件自帶 logback,然後又需要相容本身的log,所以還需要引入org.apache.logging.log4j:log4j-1.2-api

排除logging

configurations {
    all*.exclude module: 'spring-boot-starter-logging'
    all*.exclude module: 'logback-classic'
    all*.exclude module: 'log4j-over-slf4j'
    all*.exclude module: 'snappy-java'
}

application.yml中配置Git

spring:
  cloud:
    config:
      server:
        git:
          uri: https://git.oschina.net/youraccount/project/
          search-paths: dir
          username: [email protected].com
          password: xxxxxx
          default-label: master

application.yml中配置Kafka

spring:
  cloud:
    stream:
      kafka:
        binder:
          brokers: localhost:9092
          zk-nodes: localhost:2181

通過 @EnableConfigServer 啟用配置服務

/**
 * @author cwenao
 * @version $Id ConfigserverBootcwenaoApplication.java, v 0.1 2017-01-12 14:21 cwenao Exp $$
 */
@EnableDiscoveryClient
@SpringBootApplication
@EnableAutoConfiguration
@EnableConfigServer
public class ConfigserverBootcwenaoApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(ConfigserverBootcwenaoApplication.class).web(true).run(args);
    }

}

建立Config-Client服務

build.gradle引入:cloud:spring-cloud-starter-config,同時引入 spring-cloud-starter-bus-kafka

apply plugin: 'org.springframework.boot'
dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:"+ springCloudVersion
        mavenBom "org.springframework.boot:spring-boot-dependencies:"+ springBootVersion
        mavenBom "org.springframework.boot:spring-boot-starter:"+ springBootVersion
    }
}
dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-config')
    compile('org.springframework.cloud:spring-cloud-starter-eureka')
    compile('org.springframework.cloud:spring-cloud-netflix-sidecar')
    compile('org.springframework.cloud:spring-cloud-starter-bus-kafka')
    compile('org.springframework.cloud:spring-cloud-stream')
    compile('org.xerial.snappy:snappy-java:' + snappyVersion)
    compile ('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-log4j2')
    compile('org.apache.logging.log4j:log4j-1.2-api:'+ log4jAPIVersion)

    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile group: 'junit', name: 'junit', version: '4.11'

}

configurations {
    all*.exclude module: 'spring-boot-starter-logging'
    all*.exclude module: 'logback-classic'
    all*.exclude module: 'log4j-over-slf4j'
    all*.exclude module: 'snappy-java'
}

sourceSets {
    main {
        resources.srcDirs = ['src/main/resources', 'src/main/java']
        resources.includes = ['**/*.xml', '**/*.yml']
    }
}
jar {
    baseName = 'apigateway-bootcwenao'
}

配置 bootstarp.ymldiscovery開啟訪問配置服務中心

server:
  port: 10002
sidecar:
  port: 20001
#configServer
spring:
  application:
    name: apigateway
  profiles:
    active: dev
  cloud:
    config:
      uri: http://localhost:8888/
    discovery:
      enabled: true
    stream:
      kafka:
        binder:
          brokers: localhost:9092
          zk-nodes: localhost:2181

註解 @EnableDiscoveryClient

@SpringCloudApplication
@EnableDiscoveryClient
@EnableSidecar
public class ApiGatewayBootcwenaoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayBootcwenaoApplication.class, args);
    }
}

Git 中檔名字 apigateway-dev.yml
內容為原先在本地的配置

啟動順序

服務註冊中心 –> 配置中心 –> 其他服務

可以看到配置中心服務於想依賴的服務都已經啟動註冊成功

註冊中心

手動呼叫重新整理

  • 修改任意的配置檔案
  • postman中呼叫 /bus/refresh ,post方式呼叫

自動更新配置/webhook

webhook配置

  • application.yml中加入encrypt.key
  • 此key與github上的Secret,gitoschina上的密碼對應

application.yml

encrypt:
    key: cwenao

git倉庫 webhook配置

Github webhook

webhook入口

url與 secret

配置完成

可能的錯誤

  • zookeeper沒有讀取到
  • kafka沒啟動
  • log4j2與其他衝突
  • git uri地址錯誤,需要最後加“/”

程式碼

如有疑問請加公眾號(K171),如果覺得對您有幫助請 github start
公眾號_k171

相關推薦

SpringBoot -- 配置中心服務/webhook

配置中心伺服器 配置中心伺服器,以版本的管理方式對分散式系統提供外部配置支援; SpringCloud中採用Spring Cloud Config 進行整合,而想要進行實施更新則需要

Spring Cloud 入門教程 - 搭建配置中心服務

Spring spring boog spring cloud 簡介 Spring Cloud 提供了一個部署微服務的平臺,包括了微服務中常見的組件:配置中心服務, API網關,斷路器,服務註冊與發現,分布式追溯,OAuth2,消費者驅動合約等。我們不必先知道每個組件有什麽作用,隨著教程的深入,我

SpringCloud 配置中心服務啟動真正完成了,再去啟動client服務

一、場景簡述 如題,筆者在啟動配置中心的服務的時候,沒等它真正的啟動完成,就去啟動client服務,導致出現如下報錯! 這樣的結果就是導致你再一次去啟動UserApplication這個client服務是可以成功啟動的。 二、解決方案 因為再一次啟動是可以成功啟動

【SpringCloud Greenwich版本】第七章:配置中心服務端(config server)

一、SpringCloud版本 本文介紹的Springboot版本為2.1.1.RELEASE,SpringCloud版本為Greenwich.RC1,JDK版本為1.8,整合環境為IntelliJ IDEA 二、config server介紹 Spring Cloud Conf

Zookeeper 配置中心服務治理實現

Zookeeper配置中心服務治理實現 背景 上一篇部落格詳細講解了為什麼我們要選擇Zookeeper作為服務發現框架而不是使用Eureka。 參考 這篇部落格將繼續講解怎麼實現的,裡面會有大量的程式碼的拷貝,具體的架構可以參考上一篇部落格的架構演進圖

服務架構:動態配置中心搭建

pre 有著 ice zed start nbsp ack pom.xml文件 之間 版權聲明:本文為博主原創文章,轉載請註明出處,歡迎交流學習! 在微服務架構中,服務之間有著錯綜復雜的依賴關系,每個服務都有自己的依賴配置,在運行期間很多配置會根據訪問流量等因

Spring Boot 入門(四)微服務之 Config Server 統一配置中心

bootstra pan pat 默認 star default client efault localhost 一、目錄結構 二、pom文件 <!-- 配置服務依賴 --> <dependency> &l

Spring Cloud構建微服務架構分布式配置中心

post ast github 構造 clas mas files cli .class 在本文中,我們將學習如何構建一個基於Git存儲的分布式配置中心,並對客戶端進行改造,並讓其能夠從配置中心獲取配置信息並綁定到代碼中的整個過程。 準備配置倉庫 準備一個git倉庫,可

這款分布式配置中心,會是微服務的降維打擊利器嗎?

一行 也有 而是 拉取 那一刻 解決 為我 服務集群 多維度 本文來自1月18日數人雲資深工程師在IT大咖說平臺的線上直播分享。 今天主要探討這幾方面: 一、配置中心的定位 二、雲化的微服務對於配置中心的要求 三、微服務配置原則 四、數人雲分布式配置中心整體架構 應DevO

構建微服務架構Spring Cloud:分布式配置中心

文件的 文件 項目 proc enc tid 部分 中心 並且 Spring Cloud Config是Spring Cloud團隊創建的一個全新項目,用來為分布式系統中的基礎設施和微服務應用提供集中化的外部配置支持,它分為服務端與客戶端兩個部分。其中服務端也稱為分布式配置

幹貨分享微服務spring-cloud(8.服務治理和配置中心Spring-cloud-zooke)

not found span zookeepe service get() eight request wire autowired 8.1. 服務治理Spring-cloud-zookeeper提供的模式包括服務發現和配置,配置動態更新不需要手動請求/refresh

幹貨分享微服務spring-cloud(7.配置中心spring-cloud-config)

啟動 style 賬號 分享圖片 地址 config 分布式 efault 沒有 Spring Cloud Config為分布式系統中的外部配置提供服務器和客戶端支持。使用Config Server,您可以在所有環境中管理應用程序的外部屬性。客戶端和服務器上的概念映射與Sp

如何借助配置中心ACM加速企業IT服務快速叠代

架構摘要: 在5月29日召開的第二屆研發效能嘉年華中,雲效邀請了阿裏雲產品團隊的伏羿和來自阿裏巴巴中間件技術部的彥林帶來了“如何借助配置中心ACM加速企業IT服務快速叠代”的主題分享。 分別對配置中心ACM和ACM技術進行了講解,並且對ACM的主要應用場景進行了介紹,並進行了Demo環節。在5月29日召開的第

Spring Cloud微服務集成配置中心

code 2.0 xsd baby dep github orm pack 1.0 1. 搭建Spring Cloud Config配置中心(見上一篇博客) 2. 創建微服務項目bounter-simon-app,pom文件如下: <?xml versio

SpringBoot Logback 配置引數遷移到配置中心 Apollo

    專案中吧所有的配置檔案都移植到配置中心了,這樣後面釋出版本不需要想著改配置檔案,直接發包即可了,但是logback.xml 中間的日誌路徑,logstash host  ,以及日誌級別線上和開發環境肯定不同,為了一勞永逸,故想辦法將logback的相

spring cloud互聯網分布式微服務雲平臺規劃分析--spring cloud服務統一配置中心

基礎 ges ide ring water mave config 開發 通過 1.介紹鴻鵠雲架構【服務統一配置中心】為分布式系統中的外部配置提供服務器和客戶端支持。使用commonservice-config,可以在所有環境中管理應用程序的外部屬性。應用程序可通過從開發人

隨行付微服務配置中心ConfigKeeper

在微服務架構中,配置中心是必不可少的基礎服務。ConfigKeeper已開源,本文將深度分析配置中心的核心內容,錯過「Spring Cloud中國社群北京沙龍-2018.10.28 」的同學將從本篇文章中收穫現場的分享內容。 背景 微服務+容器架構後,為了方便動態更新應用配置,需要把配置檔案放到應用執行包

SpringCloud微服務配置中心04(idea篇)

配置中心簡介 Spring Cloud Config為服務端和客戶端提供了分散式系統的外部化配置支援。配置伺服器為各應用的所有環境提供了一箇中心化的外部配置。它實現了對服務端和客戶端對Spring Environment和PropertySource抽象的對映,所以它除了適用於Sprin

基於Apollo實現.NET Core微服務統一配置(測試環境-單機) .NET Core微服務之基於Apollo實現統一配置中心

一、前言 注:此篇只是為測試環境下的快速入門。後續會給大家帶來生產環境下得實戰開發。 具體的大家可以去看官方推薦。非常的簡單明瞭。以下介紹引用官方內容: Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具

SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(七)高可用的分散式配置中心(Spring Cloud Config)

講述了一個服務如何從配置中心讀取檔案,配置中心如何從遠端git讀取配置檔案,當服務例項很多時,都從配置中心讀取檔案,這時可以考慮將配置中心做成一個微服務,將其叢集化,從而達到高可用,架構圖如下: 一、準備工作 繼續使用上一篇文章的工程,建立一個eureka-server工程,用作服務註冊中心。 在其