Commit c0349d93 by Nepxion

重构类结构

parent c06ffbf3
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <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"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>com.nepxion</groupId> <groupId>com.nepxion</groupId>
<artifactId>discovery-springcloud-example</artifactId> <artifactId>discovery-springcloud-example-service</artifactId>
<name>Nepxion Discovery Spring Cloud Example</name> <name>Nepxion Discovery Spring Cloud Example Service</name>
<packaging>jar</packaging> <packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>1.0.0</version> <version>1.0.0</version>
...@@ -62,8 +62,8 @@ ...@@ -62,8 +62,8 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
......
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>com.nepxion</groupId>
<artifactId>discovery-springcloud-example-zuul</artifactId>
<name>Nepxion Discovery Spring Cloud Example Zuul</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0</version>
<description>Nepxion Discovery is an enhancement for Spring Cloud Discovery</description>
<url>http://www.nepxion.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<properties>
<discovery.plugin.version>4.1.9</discovery.plugin.version>
<spring.cloud.version>Finchley.RELEASE</spring.cloud.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-plugin-starter-eureka</artifactId>
<!-- <artifactId>discovery-plugin-starter-consul</artifactId> -->
<!-- <artifactId>discovery-plugin-starter-zookeeper</artifactId> -->
<version>${discovery.plugin.version}</version>
</dependency>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-plugin-strategy-extension-service</artifactId>
<version>${discovery.plugin.version}</version>
</dependency>
<dependency>
<groupId>com.nepxion</groupId>
<artifactId>discovery-plugin-config-center-extension-nacos</artifactId>
<version>${discovery.plugin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
<encoding>${project.build.sourceEncoding}</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
# Spring cloud config
# Eureka config
eureka.client.serviceUrl.defaultZone=http://localhost:9528/eureka/
eureka.instance.preferIpAddress=true
# Consul config
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.preferIpAddress=true
# Zookeeper config
spring.cloud.zookeeper.connectString=localhost:2181
spring.cloud.zookeeper.discovery.root=/spring-cloud-service
spring.cloud.zookeeper.discovery.preferIpAddress=true
# Ribbon config
ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=60000
# Nacos config
nacos.url=localhost:8080
nacos.timout=30000
# Admin config(management.health.consul.enabled必须配置在bootstrap.properties里,配置在application.properties无效)
management.security.enabled=false
# management.health.consul.enabled=true
# Plugin config
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效,最大注册数的限制过滤功能将失效。缺失则默认为true
spring.application.register.control.enabled=true
# 开启和关闭服务发现层面的控制。一旦关闭,服务多版本调用的控制功能将失效,动态屏蔽指定IP地址的服务实例被发现的功能将失效。缺失则默认为true
spring.application.discovery.control.enabled=true
# 开启和关闭通过Rest方式对规则配置的控制和推送。一旦关闭,只能通过远程配置中心来控制和推送。缺失则默认为true
spring.application.config.rest.control.enabled=true
# 规则文件的格式,支持xml和json。缺失则默认为xml
spring.application.config.format=xml
# spring.application.config.format=json
# 本地规则文件的路径,支持两种方式:classpath:rule.xml(rule.json) - 规则文件放在resources目录下,便于打包进jar;file:rule.xml(rule.json) - 规则文件放在工程根目录下,放置在外部便于修改。缺失则默认为不装载本地规则
spring.application.config.path=classpath:rule.xml
# spring.application.config.path=classpath:rule.json
# 为微服务归类的Key,一般通过group字段来归类,例如eureka.instance.metadataMap.group=xxx-group或者eureka.instance.metadataMap.application=xxx-application。缺失则默认为group
# spring.application.group.key=group
# spring.application.group.key=application
# Plugin strategy config
# 开启和关闭用户自定义和编程灰度路由策略的控制,包括跟业务无关(例如:不允许某个服务器的IP地址或者某个版本被负载均衡到)和业务数据(例如用户根据业务参数的不同,负载均衡到不同的服务器)有关两种,该功能只支持服务,不支持网关。缺失则默认为true
spring.application.strategy.control.enabled=true
# 开启和关闭用户自定义和编程灰度路由策略的业务有关性的控制。一旦关闭,从业务接口无法把数据传递到上下文对象(StrategyContext);一旦开启,需要设置下面的scan.packages。缺失则默认为true
spring.application.strategy.business.context.control.enabled=true
# 用户自定义和编程灰度路由策略的时候,需要指定对业务Controller类的扫描路径,以便传递上下文对象
spring.application.strategy.business.scan.packages=com.nepxion.discovery.plugin.example.feign
# Swagger config
swagger.service.base.package=com.nepxion.discovery.plugin.admincenter.endpoint
swagger.service.description=Admin Center Restful APIs
swagger.service.version=1.0.0
swagger.service.license=Apache License 2.0
swagger.service.license.url=http://www.apache.org/licenses/LICENSE-2.0
swagger.service.contact.name=Haojun Ren
swagger.service.contact.url=https://github.com/Nepxion/Discovery
swagger.service.contact.email=1394997@qq.com
\ No newline at end of file
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="10 seconds">
<!-- Simple file output -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log/discovery-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
<prudent>true</prudent>
</appender>
<appender name ="FILE_ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>512</queueSize>
<appender-ref ref ="FILE"/>
</appender>
<!-- Console output -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- Only log level WARN and above -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- For loggers in the these namespaces, log at all levels. -->
<logger name="pedestal" level="ALL" />
<logger name="hammock-cafe" level="ALL" />
<logger name="user" level="ALL" />
<root level="INFO">
<!-- <appender-ref ref="FILE_ASYNC" /> -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
{
"registerEntity": {
"hostFilterEntity": {
"filterType": "BLACKLIST",
"filterValueList": [
"10.10",
"11.11"
],
"filterMap": {
"discovery-springcloud-example-a": [
"172.16"
]
}
},
"countFilterEntity": {
"filterValue": 10000,
"filterMap": {
"discovery-springcloud-example-a": 5000
}
}
},
"discoveryEntity": {
"hostFilterEntity": {
"filterType": "BLACKLIST",
"filterValueList": [
"10.10",
"11.11"
],
"filterMap": {
"discovery-springcloud-example-b": [
"172.16"
]
}
},
"versionFilterEntity": {
"serviceEntityMap": {
"discovery-springcloud-example-zuul": [
{
"consumerServiceName": "discovery-springcloud-example-zuul",
"providerServiceName": "discovery-springcloud-example-a",
"consumerVersionValueList": [
"1.0"
],
"providerVersionValueList": [
"1.0"
]
},
{
"consumerServiceName": "discovery-springcloud-example-zuul",
"providerServiceName": "discovery-springcloud-example-a",
"consumerVersionValueList": [
"1.1"
],
"providerVersionValueList": [
"1.1"
]
}
],
"discovery-springcloud-example-a": [
{
"consumerServiceName": "discovery-springcloud-example-a",
"providerServiceName": "discovery-springcloud-example-b",
"consumerVersionValueList": [
"1.0"
],
"providerVersionValueList": [
"1.0"
]
},
{
"consumerServiceName": "discovery-springcloud-example-a",
"providerServiceName": "discovery-springcloud-example-b",
"consumerVersionValueList": [
"1.1"
],
"providerVersionValueList": [
"1.1"
]
}
],
"discovery-springcloud-example-b": [
{
"consumerServiceName": "discovery-springcloud-example-b",
"providerServiceName": "discovery-springcloud-example-c",
"consumerVersionValueList": [
"1.0"
],
"providerVersionValueList": [
"1.0",
"1.1"
]
},
{
"consumerServiceName": "discovery-springcloud-example-b",
"providerServiceName": "discovery-springcloud-example-c",
"consumerVersionValueList": [
"1.1"
],
"providerVersionValueList": [
"1.2"
]
}
]
}
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 如果不想开启相关功能,只需要把相关节点删除即可,例如不想要黑名单功能,把blacklist节点删除 -->
<register>
<!-- 服务注册的黑/白名单注册过滤,只在服务启动的时候生效。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值blacklist/whitelist,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“;”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<blacklist filter-value="10.10;11.11">
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service service-name="discovery-springcloud-example-a" filter-value="172.16"/>
</blacklist>
<!-- <whitelist filter-value="">
<service service-name="" filter-value=""/>
</whitelist> -->
<!-- 服务注册的数目限制注册过滤,只在服务启动的时候生效。当某个服务的实例注册达到指定数目时候,更多的实例将无法注册 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示最大实例注册数 -->
<!-- 表示下面所有服务,最大实例注册数为10000(全局配置) -->
<count filter-value="10000">
<!-- 表示下面服务,最大实例注册数为5000,全局配置值10000将不起作用,以局部配置值为准 -->
<service service-name="discovery-springcloud-example-a" filter-value="5000"/>
</count>
</register>
<discovery>
<!-- 服务发现的黑/白名单发现过滤,使用方式跟“服务注册的黑/白名单过滤”一致 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址被发现(全局过滤) -->
<blacklist filter-value="10.10;11.11">
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址被发现 -->
<service service-name="discovery-springcloud-example-b" filter-value="172.16"/>
</blacklist>
<!-- 服务发现的多版本灰度访问控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“;”分隔,不允许出现空格 -->
<!-- 版本策略介绍 -->
<!-- 1. 标准配置,举例如下 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="1.0" provider-version-value="1.0;1.1"/> 表示消费端1.0版本,允许访问提供端1.0和1.1版本 -->
<!-- 2. 版本值不配置,举例如下 -->
<!-- <service consumer-service-name="a" provider-service-name="b" provider-version-value="1.0;1.1"/> 表示消费端任何版本,允许访问提供端1.0和1.1版本 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="1.0"/> 表示消费端1.0版本,允许访问提供端任何版本 -->
<!-- <service consumer-service-name="a" provider-service-name="b"/> 表示消费端任何版本,允许访问提供端任何版本 -->
<!-- 3. 版本值空字符串,举例如下 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="" provider-version-value="1.0;1.1"/> 表示消费端任何版本,允许访问提供端1.0和1.1版本 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="1.0" provider-version-value=""/> 表示消费端1.0版本,允许访问提供端任何版本 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="" provider-version-value=""/> 表示消费端任何版本,允许访问提供端任何版本 -->
<!-- 4. 版本对应关系未定义,默认消费端任何版本,允许访问提供端任何版本 -->
<!-- 特殊情况处理,在使用上需要极力避免该情况发生 -->
<!-- 1. 消费端的application.properties未定义版本号,则该消费端可以访问提供端任何版本 -->
<!-- 2. 提供端的application.properties未定义版本号,当消费端在xml里不做任何版本配置,才可以访问该提供端 -->
<version>
<!-- 表示网关z的1.0,允许访问提供端服务a的1.0版本 -->
<service consumer-service-name="discovery-springcloud-example-zuul" provider-service-name="discovery-springcloud-example-a" consumer-version-value="1.0" provider-version-value="1.0"/>
<!-- 表示网关z的1.1,允许访问提供端服务a的1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-zuul" provider-service-name="discovery-springcloud-example-a" consumer-version-value="1.1" provider-version-value="1.1"/>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0版本 -->
<service consumer-service-name="discovery-springcloud-example-a" provider-service-name="discovery-springcloud-example-b" consumer-version-value="1.0" provider-version-value="1.0"/>
<!-- 表示消费端服务a的1.1,允许访问提供端服务b的1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-a" provider-service-name="discovery-springcloud-example-b" consumer-version-value="1.1" provider-version-value="1.1"/>
<!-- 表示消费端服务b的1.0,允许访问提供端服务c的1.0和1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-b" provider-service-name="discovery-springcloud-example-c" consumer-version-value="1.0" provider-version-value="1.0;1.1"/>
<!-- 表示消费端服务b的1.1,允许访问提供端服务c的1.2版本 -->
<service consumer-service-name="discovery-springcloud-example-b" provider-service-name="discovery-springcloud-example-c" consumer-version-value="1.1" provider-version-value="1.2"/>
</version>
</discovery>
</rule>
\ No newline at end of file
...@@ -31,7 +31,8 @@ ...@@ -31,7 +31,8 @@
<module>discovery-springcloud-example-console</module> <module>discovery-springcloud-example-console</module>
<module>discovery-springcloud-example-eureka</module> <module>discovery-springcloud-example-eureka</module>
<module>discovery-springcloud-example-gateway</module> <module>discovery-springcloud-example-gateway</module>
<module>discovery-springcloud-example</module> <module>discovery-springcloud-example-zuul</module>
<module>discovery-springcloud-example-service</module>
</modules> </modules>
<properties> <properties>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment