搭建配置中心
导入依赖
<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">
<parent>
<artifactId>sakura</artifactId>
<groupId>com.warm-sun</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>service-config</artifactId>
<name>service-config</name>
<packaging>jar</packaging>
<description> 配置中心</description>
<dependencies>
<!--配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--web 模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--排除tomcat依赖-->
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!--undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<finalName>${project.name}</finalName>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<imageName>${registry.url}/${project.name}:0.0.1</imageName>
<dockerHost>${docker.url}</dockerHost>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>docker-hub</serverId>
<registryUrl>https://index.docker.io/v1/</registryUrl>
</configuration>
</plugin>
</plugins>
</build>
</project>
编写启动类
package com.warmsun.config;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
/**
* 配置中心
*/
@EnableConfigServer
@SpringCloudApplication
public class SakuraConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SakuraConfigApplication.class,args);
}
}
我们来对比之前的eureka搭建的主类,发现这里我们用的是@SpringCloudApplication注解,而eureka的主类上用的是@SpringBootApplication 注解,那我们来看一下SpringCloudApplication注解干了什么事情:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public @interface SpringCloudApplication {
}
导入了@SpringBootApplication注解,导入@EnableDiscoveryClient注解,改注解能导入config配置,不管你是Spring-cloud-config还是其他的例如:Apollo等,@EnableCircuitBreake 导入一个断路器实现。@EnableDiscoveryClient和@EnableCircuitBreake 我们可能还不是很了解,先不急,后面我们会一一解析
编写配置
server:
port: 2001
spring:
application:
name: service-config
#配置环境
profiles: dev
cloud:
config:
server:
git:
uri: https://github.com/JamariRay/athena-config.git
#如过你的项目是私有,那么在下面配置你的git信息,如果是公开的,删除下面的2配置
username: ××××
password: ××××××
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://sakura:Sakura*&^999@${eureka.instance.hostname}:${server.port}/eureka/
编写其他的微服务配置
在github上 创建一个athena-config项目,然后克隆到本地,编写好后,push到github,这样我们的config项目就能读取到相应微服务的信息了。
application-dev:
# redis 相关
spring:
redis:
password:
host: localhost
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: '*'
# feign 配置
feign:
hystrix:
enabled: true
okhttp:
enabled: true
httpclient:
enabled: false
client:
config:
feignName:
connectTimeout: 10000
readTimeout: 10000
compression:
request:
enabled: true
response:
enabled: true
# hystrix If you need to use ThreadLocal bound variables in your RequestInterceptor`s
# you will need to either set the thread isolation strategy for Hystrix to `SEMAPHORE or disable Hystrix in Feign.
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 60000
shareSecurityContext: true
#请求处理的超时时间
ribbon:
ReadTimeout: 10000
ConnectTimeout: 10000
加-dev是因为当前坏境为开发环境,在service-config项目下已经配置了profiles:dev所以这里也要对应,其他的微服务配置
# 数据源
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/sakura?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
好了微服务注册中心就搭好了,更多搭建信息参见spring的官方文档.
好了搭建微服务配置中心 就到这里了,源码解析我会在后面分享!
网友评论