目录
一、创建Eureka服务工程
创建一个Parent工程方便集中管理依赖关系和配置构建。接下里我们开始我们的工程搭建了,首先是服务注册与发现,我们这里还是采用Eureka。相信大家都很熟悉,就不过多的赘述了,详细的可以看我的注释。
1.1、第一步(创建工程)
1.2、第二步(springboot工程)
1.3、第三步(工程设置)
1.4、第四步(依赖选择)
二、配置
2.1、pom文件
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.alian.microservice</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>discovery-service</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>discovery-service</name>
<description>服务注册与发现</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
注意到这里的继承的是我们自己的父工程:(二)Alian 的 Spring Cloud Parent(父工程)
<parent>
<groupId>cn.alian.microservice</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
核心依赖就是
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
这里的版本已经在我们bom工程里设定了,不理解的可以看我前面bom工程:(一)Alian 的 Spring Cloud Bom(Bom即材料清单)
主要是下面两个:
<!--spring-cloud版本-->
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
和
<!--springCloud版本依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2.2、主类配置
主类上加上注解: @EnableEurekaServer ,此类具体路径: org.springframework.cloud.netflix.eureka.server.EnableEurekaServer
package com.alian.microservice.discoveryService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class DiscoveryServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryServiceApplication.class, args);
}
}
2.3、配置文件
application.properties
#服务名
spring.application.name=discovery-service
#端口
server.port=8761
#连接Eureka Server的超时时间,单位:秒
eureka.client.eureka-server-connect-timeout-seconds=5
#用于指示Eureka客户端已启用的标志
eureka.client.enabled=true
#客户端是否获取eureka服务器注册表上的注册信息,默认为true
eureka.client.fetch-registry=false
#指示此实例是否应将其信息注册到eureka服务器以供其他服务发现,默认为false
eureka.client.register-with-eureka=false
#启用自我保护机制,默认为true,
#为false时控制台提示(THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.)
eureka.server.enable-self-preservation=false
#清除无效服务实例的时间间隔(ms),默认1分钟
eureka.server.eviction-interval-timer-in-ms=15000
2.4、日志配置
logback.xml
<!--scan:为true时,配置文件如果发生改变,将会被重新加载,默认为true-->
<!--scanPeriod:当scan为true时,监测配置文件是否有修改的时间间隔。如果没有给出时间单位,默认单位是毫秒。默认时间间隔1分钟。英文不要写错了second minute hour-->
<!--debug:为true时,可打印出logback内部日志信息。默认为false-->
<configuration scan="true" scanPeriod="10 seconds" debug="true">
<property resource="application.properties" />
<property name="appName" value="${spring.application.name}"/>
<!--定义日志路径-->
<property name="log.path" value="logs"/>
<!--定义控制台日志输出格式-->
<property name="console.pattern" value="%d{yyyy-MM-dd HH:mm:ss SSS} [%thread] %level %method %line:%m%n"/>
<!--定义控制台日志输出格式-->
<property name="file.pattern" value="%d{yyyy-MM-dd HH:mm:ss SSS} [%thread] %level %method %line:%m%n"/>
<!--控制台日志输出-->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<!--字符串值System.out或System.err之一。默认目标是System.out-->
<Target>System.out</Target>
<!--只配置最底级别,控制台输出的日志级别大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<!--编码器-->
<encoder>
<!-- 输出日志信息格式 -->
<pattern>${console.pattern}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--文件滚动追加器(基于时间滚动策略按日滚动,最多保存90天历史记录,总文档大小不超过20GB)-->
<appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件命名-->
<File>logs/${appName}.log</File>
<!--基于时间滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--按日滚动-->
<fileNamePattern>logs/${appName}.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--按小时滚动-->
<!--fileNamePattern>logs/app.%d{yyyy-MM-dd_HH}.log</fileNamePattern>-->
<!--按分钟滚动-->
<!-- <fileNamePattern>logs/app.%d{yyyy-MM-dd_HH-mm-ss}.log</fileNamePattern>-->
<!--日志保留份数-->
<MaxHistory>10</MaxHistory>
<!--日志文件最大的大小-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<!--文件追加到末尾-->
<Append>true</Append>
<!--编码器-->
<encoder>
<!-- 输出日志信息格式 -->
<pattern>${file.pattern}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
<!--只配置最底级别,控制台输出的日志级别大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
</appender>
<!-- 安审日志插件记录器 -->
<logger name="jdbc.sqlonly" level="ERROR">
<appender-ref ref="Console"/>
</logger>
<logger name="jdbc.audit" level="ERROR">
<appender-ref ref="Console"/>
</logger>
<logger name="jdbc.resultset" level="ERROR">
<appender-ref ref="Console"/>
</logger>
<logger name="jdbc.connection" level="ERROR">
<appender-ref ref="Console"/>
</logger>
<logger name="jdbc.sqltiming" level="ERROR">
<appender-ref ref="Console"/>
</logger>
<!--spring框架日志-->
<logger name="org.springframework" level="ERROR"/>
<logger name="freemarker" level="info"/>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="File"/>
</root>
</configuration>
三、部署
如果是本机服务,那么你直接启动就行了,如果是部署到linux环境,需要改动两个点:
第一个点是:application.properties
logging.config=config/logback.xml
第二个点是:logback.xml,由
<property resource="application.properties" />
修改为
<property file="config/application.properties" />
四、启动后的效果
我们 http://10.130.3.222:8761/
上面我们看到没有实例。
五、验证
仅仅是为了简单的验证服务注册和发现,我们和刚才一样创建一个新的工程(order-service),以下配置是工程(order)的,不是Eureka服务端的。
5.1、pom文件
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.alian.microservice</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>order</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>order</name>
<description>订单服务</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
5.2、配置文件
application.properties
#服务名
spring.application.name=order
#端口
server.port=7001
eureka.client.serviceUrl.defaultZone=http://10.130.3.222:8761/eureka
5.3、主类配置
主类上加上注解: @EnableDiscoveryClient ,此类具体路径: org.springframework.cloud.client.discovery.EnableDiscoveryClient
package cn.alian.microservice.order;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
我们再次查看 http://10.130.3.222:8761/
此时实例列表就多了一个实例,当然这个工程我们后面随着技术演变会不断的改变的。