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