16 changed files with 352 additions and 0 deletions
@ -0,0 +1,30 @@ |
|||
package cn.nla.common.exception; |
|||
|
|||
import cn.nla.common.enums.BizCodeEnum; |
|||
import cn.nla.common.util.CommonUtil; |
|||
import cn.nla.common.util.JsonData; |
|||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler; |
|||
import com.alibaba.csp.sentinel.slots.block.BlockException; |
|||
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException; |
|||
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException; |
|||
import com.alibaba.csp.sentinel.slots.block.flow.FlowException; |
|||
import org.springframework.stereotype.Component; |
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
|
|||
@Component |
|||
public class SentinelBlockHandler implements BlockExceptionHandler { |
|||
@Override |
|||
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception { |
|||
JsonData jsonData = null; |
|||
if(e instanceof FlowException){ |
|||
jsonData = JsonData.buildResult(BizCodeEnum.CONTROL_FLOW); |
|||
}else if(e instanceof DegradeException){ |
|||
jsonData = JsonData.buildResult(BizCodeEnum.CONTROL_DEGRADE); |
|||
} else if(e instanceof AuthorityException){ |
|||
jsonData = JsonData.buildResult(BizCodeEnum.CONTROL_AUTH); |
|||
} |
|||
httpServletResponse.setStatus(200); |
|||
CommonUtil.sendJsonMessage(httpServletResponse,jsonData); |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
spring: |
|||
application: |
|||
name: nla-coupon-service |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
config: |
|||
server-addr: 117.72.43.105:8848 |
|||
file-extension: yml |
|||
sentinel: |
|||
transport: |
|||
dashboard: 192.168.30.130:8080 |
|||
port: 9999 |
|||
#流控规则持久化到nacos配置中心 |
|||
datasource: |
|||
ds1: |
|||
nacos: |
|||
server-addr: 117.72.43.105:8848 |
|||
data-id: ${spring.application.name}.json |
|||
group-id: DEFAULT_GROUP |
|||
data-type: json |
|||
rule-type: flow |
|||
profiles: |
|||
active: dev |
|||
|
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
@ -0,0 +1,43 @@ |
|||
<?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"> |
|||
<parent> |
|||
<artifactId>nla-shop</artifactId> |
|||
<groupId>cn.nla</groupId> |
|||
<version>1.0-SNAPSHOT</version> |
|||
</parent> |
|||
<modelVersion>4.0.0</modelVersion> |
|||
<artifactId>nla-gateway</artifactId> |
|||
<description>网关模块</description> |
|||
<properties> |
|||
<maven.compiler.source>11</maven.compiler.source> |
|||
<maven.compiler.target>11</maven.compiler.target> |
|||
</properties> |
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>org.springframework.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-gateway</artifactId> |
|||
</dependency> |
|||
<!--添加nacos客户端--> |
|||
<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
|||
</dependency> |
|||
<!--配置中心--> |
|||
<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> |
|||
</dependency> |
|||
<!--限流依赖--> |
|||
<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> |
|||
</dependency> |
|||
<!-- Sentinel流控持久化nacos --> |
|||
<dependency> |
|||
<groupId>com.alibaba.csp</groupId> |
|||
<artifactId>sentinel-datasource-nacos</artifactId> |
|||
</dependency> |
|||
</dependencies> |
|||
</project> |
@ -0,0 +1,13 @@ |
|||
package cn.nla.gateway; |
|||
|
|||
import org.springframework.boot.SpringApplication; |
|||
import org.springframework.boot.autoconfigure.SpringBootApplication; |
|||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
|||
|
|||
@SpringBootApplication |
|||
@EnableDiscoveryClient |
|||
public class GatewayApplication { |
|||
public static void main(String[] args) { |
|||
SpringApplication.run(GatewayApplication.class, args); |
|||
} |
|||
} |
@ -0,0 +1,55 @@ |
|||
server: |
|||
port: 8089 |
|||
spring: |
|||
application: |
|||
name: nla-gateway |
|||
#注册中心地址 |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
gateway: |
|||
routes: |
|||
- id: product-service |
|||
uri: lb://nla-product-service |
|||
order: 1 |
|||
predicates: |
|||
- Path=/product/** |
|||
filters: |
|||
- StripPrefix=1 |
|||
- id: user-service |
|||
uri: lb://nla-user-service |
|||
order: 1 |
|||
predicates: |
|||
- Path=/user/** |
|||
filters: |
|||
- StripPrefix=1 |
|||
- id: coupon-service |
|||
uri: lb://nla-coupon-service |
|||
order: 1 |
|||
predicates: |
|||
- Path=/coupon/** |
|||
filters: |
|||
- StripPrefix=1 |
|||
- id: order-service |
|||
uri: lb://nla-order-service |
|||
order: 1 |
|||
predicates: |
|||
- Path=/order/** |
|||
filters: |
|||
- StripPrefix=1 |
|||
#开启网关拉取nacos的服务 |
|||
discovery: |
|||
locator: |
|||
enabled: true |
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
|||
|
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,23 @@ |
|||
spring: |
|||
application: |
|||
name: nla-gateway |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
config: |
|||
server-addr: 117.72.43.105:8848 |
|||
file-extension: yml |
|||
sentinel: |
|||
transport: |
|||
dashboard: 192.168.30.130:8080 |
|||
port: 9999 |
|||
profiles: |
|||
active: dev |
|||
|
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
@ -0,0 +1,71 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<configuration scan="true" scanPeriod="60 seconds" debug="false"> |
|||
<!-- 自定义配置: 日志存放路径 --> |
|||
<property name="log.path" value="./logs/nla-gateway"/> |
|||
<!-- 日志输出格式 --> |
|||
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/> |
|||
<!-- 控制台输出 --> |
|||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> |
|||
<encoder> |
|||
<pattern>${log.pattern}</pattern> |
|||
</encoder> |
|||
</appender> |
|||
<!-- 系统日志输出 --> |
|||
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<file>${log.path}/info.log</file> |
|||
<!-- 循环政策:基于时间创建日志文件 --> |
|||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
|||
<!-- 日志文件名格式 --> |
|||
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> |
|||
<!-- 日志最大的历史 60天 --> |
|||
<maxHistory>60</maxHistory> |
|||
</rollingPolicy> |
|||
<encoder> |
|||
<pattern>${log.pattern}</pattern> |
|||
</encoder> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<!-- 过滤的级别 --> |
|||
<level>INFO</level> |
|||
<!-- 匹配时的操作:接收(记录) --> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<!-- 不匹配时的操作:拒绝(不记录) --> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<file>${log.path}/error.log</file> |
|||
<!-- 循环政策:基于时间创建日志文件 --> |
|||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
|||
<!-- 日志文件名格式 --> |
|||
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> |
|||
<!-- 日志最大的历史 60天 --> |
|||
<maxHistory>60</maxHistory> |
|||
</rollingPolicy> |
|||
<encoder> |
|||
<pattern>${log.pattern}</pattern> |
|||
</encoder> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<!-- 过滤的级别 --> |
|||
<level>ERROR</level> |
|||
<!-- 匹配时的操作:接收(记录) --> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<!-- 不匹配时的操作:拒绝(不记录) --> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
<!-- 自定义配置: 系统模块日志级别控制 --> |
|||
<logger name="cn.nla" level="info"/> |
|||
<!-- Spring日志级别控制 --> |
|||
<logger name="org.springframework" level="warn"/> |
|||
<logger name="io.lettuce.core.protocol" level="ERROR"/> |
|||
<!--自定义配置: mapper打印--> |
|||
<logger name="cn.nla.coupon.mapper" level="DEBUG"/> |
|||
<root level="info"> |
|||
<appender-ref ref="console"/> |
|||
</root> |
|||
<!--系统操作日志--> |
|||
<root level="info"> |
|||
<appender-ref ref="file_info"/> |
|||
<appender-ref ref="file_error"/> |
|||
</root> |
|||
</configuration> |
@ -0,0 +1,23 @@ |
|||
spring: |
|||
application: |
|||
name: nla-order-service |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
config: |
|||
server-addr: 117.72.43.105:8848 |
|||
file-extension: yml |
|||
sentinel: |
|||
transport: |
|||
dashboard: 192.168.30.130:8080 |
|||
port: 9999 |
|||
profiles: |
|||
active: dev |
|||
|
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
@ -0,0 +1,23 @@ |
|||
spring: |
|||
application: |
|||
name: nla-product-service |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
config: |
|||
server-addr: 117.72.43.105:8848 |
|||
file-extension: yml |
|||
sentinel: |
|||
transport: |
|||
dashboard: 192.168.30.130:8080 |
|||
port: 9999 |
|||
profiles: |
|||
active: dev |
|||
|
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
@ -0,0 +1,23 @@ |
|||
spring: |
|||
application: |
|||
name: nla-user-service |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 117.72.43.105:8848 |
|||
config: |
|||
server-addr: 117.72.43.105:8848 |
|||
file-extension: yml |
|||
sentinel: |
|||
transport: |
|||
dashboard: 192.168.30.130:8080 |
|||
port: 9999 |
|||
profiles: |
|||
active: dev |
|||
|
|||
#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示 |
|||
logging: |
|||
level: |
|||
root: INFO |
|||
# nacos日志问题,一致打印 |
|||
com.alibaba.nacos.client.config.impl: WARN |
Loading…
Reference in new issue