本文將使用spring cloud的eureka和config server來搭建.java
而後搭建的模式,有不少種,本文主要聊的是將註冊中心和配置中心整合成一個服務的方式.git
對於其餘方式,若是有同窗感興趣,還請自行百度,謝謝.spring
其實整合在一塊兒和分開,在使用層面上並無太大的區別,主要就是節省資源,啓動一個服務就夠了bootstrap
<!-- eureka server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- config server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- amqp rabbitmq --> <dependency> <groupId>org.itkk.udf</groupId> <artifactId>udf-starter-amqp-rabbitmq</artifactId> </dependency>
以上爲主要的依賴,引入了eureka server和config server以及amqpspringboot
amqp主要是爲了支持config server的在runtime刷新各個子服務的配置文件的這個特性app
<resources> <resource> <directory>${project.basedir}/src/main/resources/</directory> <filtering>true</filtering> </resource> </resources>
以上配置可使咱們在待會的配置文件中引用maven的上下文屬性,經過${xxx}的方式框架
<!-- package --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springboot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
添加打包插件,會將這個應用打包成一個可執行的jar包(內置容器,可直接啓動應用)maven
@SpringCloudApplication @EnableEurekaServer @EnableConfigServer public class UdfEurekaConfigServerDemoApplication extends BaseApplication { /** * 描述 : spring boot的入口 * * @param args 參數 */ public static void main(String[] args) { SpringApplication.run(UdfEurekaConfigServerDemoApplication.class, args); } }
標記@SpringCloudApplication,@EnableEurekaServer,@EnableConfigServer開啓註冊中心和配置中心spring-boot
同時這裏繼承了BaseApplication,這個類是前面博客中udf-starter-core中的一個類,此類作了一些簡單的封裝,詳情你們可查閱微服務
info.build.group=${project.groupId} info.build.artifact=${project.artifactId} info.build.version=${project.version} info.build.name=${project.name} info.build.time=${project.build.date} info.build.encoding=${project.build.sourceEncoding} info.build.java.source=${java.version} info.build.java.target=${java.version}
以上配置,主要定義了應用的一些基礎信息,而且這些基礎信息都是經過${xxx}的方式直接從maven變量中獲取的
這些信息在應用啓動了以後,能夠經過http://localhost:port/info訪問
注意,這裏的${project.build.date}是UTC時間,不是北京時間,因此查看的時候,要+8小時
spring.application.name=${project.name} server.port=${server.port} management.security.enabled=false spring.profiles.active=${profiles.activation}
以上配置主要設定了應用名稱(使用項目的名稱),應用端口(從pom中獲取),以及profiles
security.user.name=admin security.user.password=123456
設置應用的basic認證用戶名和密碼
eureka.instance.preferIpAddress=true eureka.client.enabled=true eureka.client.serviceUrl.defaultZone=http://admin:123456@127.0.0.1:${server.port}/eureka/ eureka.client.register-with-eureka=true eureka.client.fetch-registry=true
配置eureka實例和客戶端信息,注意的是,由於這裏是講config server整合到註冊中心上了,因此這裏必需要將自身也註冊到eureka上,不然,其餘應用沒法找到config server
spring.cloud.config.server.prefix=config-server spring.cloud.config.server.git.uri=https://git.oschina.net/wangkang/udf-sample.git spring.cloud.config.server.git.searchPaths=udf-config-hub/{application} spring.cloud.config.server.git.defaultLabel=master spring.cloud.config.server.git.forcePull=true
這裏配置了config server的主要信息 ,
首先prefix是爲了配置中心的上下文根和註冊中心區分開來
而後在searchPaths中,spring cloud爲咱們預留了{application(應用名)}/{profile(環境)}/{label(分支)}這三個變量
你們能夠根據這3個變量,靈活的組合遠端git倉庫中目錄的結構,以下 :
usf-server-a -> usf-server-a-dev.properties -> usf-server-a-qa.properties usf-server-b -> usf-server-b-dev.properties -> usf-server-b-qa.properties
在這裏的話,我只使用了{application}
spring.rabbitmq.host=itkk.org spring.rabbitmq.port=5672 spring.rabbitmq.username=dev_udf-sample spring.rabbitmq.password=1qazxsw2 spring.rabbitmq.virtual-host=/dev_udf-sample spring.rabbitmq.template.retry.enabled=true
以上配置了消息中間件rabbitmq的信息
本質上沒有什麼區別 , yml格式是屬性結構的 , 可能對於某些同窗來講 , 感受更易於閱讀 .
不過我不喜歡(哈哈) , 習慣用properties了 , 因此本文所有使用的是.properties文件進行配置的 , 此格式的文件等價於.yml , 若有偏好yml的同窗 , 可自行轉換
首先共同點 , 他們均可以用來配置參數 .
可是bootstrap的加載優先級高於application
在spring cloud應用中,官方也推薦使用bootstrap來存放配置
因此本文以及後續的配置項都會存放在bootstrap.properties中
在spring boot的中是經過spring.profiles.active屬性來設置環境的,默認爲dev
而後spring boot預先約定配置文件經過"-"分隔,"-"以後,".properties"以前,之間的部分就是profiles,例如 :
bootstrap.properties bootstrap-dev.properties bootstrap-qa.properties bootstrap-xxxx.properties
注意,沒有帶profiles的配置文件,稱爲默認配置,無論什麼環境下,都是必然會被加載的.
而後在啓動應用的時候,指定profiles便可,以下 :
java -server -jar demo-1.0.jar --spring.profiles.active=qa
可在任何config client或者config service上執請求以下的HTTP服務 :
POST http://localhost:port/bus/refresh
那麼,config server就會經過消息中間件rabbitmq將配置文件更新的事件通知到各個微服務中了.
今天跟你們分享了整個註冊中心和配置中心的樣例和主要的配置,相關完整的項目你們可在udf-sample中的udf-eureka-config-server-demo中查閱
歡迎你們的意見跟建議
想得到最快更新,請關注公衆號