Commit 3debf241 by yxdubhe_bot

merge:feature-db-replace-20250418:operator:hzgelinlin@corp.netease.com:auto_bran…

merge:feature-db-replace-20250418:operator:hzgelinlin@corp.netease.com:auto_branch_merge_by_branchService_end
parents 0bb233d2 fac36c9e
Pipeline #74859 passed with stages
in 1 minute 53 seconds
*.iml
*.idea
.settings
.classpath
.project
.DS_Store
.tmp
.sass-cache
.DS_Store*.prefs
*.class
*.jsdtscope
*.launch
node_modules
bower_components
dist
build
/log
/logs
/src/test/mock/output
/src/main/webapp/styles/css/**/*.css
**/target/
**/src/main/webapp
/swagger
**/swagger/
dep
......@@ -44,6 +44,7 @@
<!-- store-db -->
<mysql.version>5.1.34</mysql.version>
<mybatis.spring.boot.starter.version>1.1.1</mybatis.spring.boot.starter.version>
<druid.version>1.0.21</druid.version>
<!-- store-redis -->
<redis.clients.version>2.9.0</redis.clients.version>
......@@ -62,6 +63,7 @@
<commons.lang.version>2.4</commons.lang.version>
<des.version>1.0.2-SNAPSHOT</des.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
<pandora.version>1.1.0-SNAPSHOT</pandora.version>
</properties>
<!-- 子模块可选依赖 -->
......@@ -184,6 +186,17 @@
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.starter.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--引入潘多拉-->
<dependency>
<groupId>com.netease.yanxuan</groupId>
<artifactId>pandora</artifactId>
<version>${pandora.version}</version>
</dependency>
<!-- store-redis -->
<dependency>
......@@ -196,6 +209,12 @@
<artifactId>spring-data-redis</artifactId>
<version>${spring.data.redis.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>com.netease.yanxuan</groupId>
......
......@@ -11,11 +11,6 @@ dschedule.adminAddresses=http://127.0.0.1:8550/proxy/online.dschedule-admin.serv
spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
#mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.131.73.20:6306/yx_qc_change_system?useUnicode=true&characterEncoding=UTF-8&autoReconnet=true
spring.datasource.username=yx_qc_change_system
spring.datasource.password=1f28144c4be7e7a0
#tomcat
server.tomcat.max-threads=600
......@@ -24,23 +19,6 @@ server.tomcat.basedir=/home/logs/access
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{P_INFO}c %{Referer}i %{User-Agent}i %{Host}i
# mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.map-underscore-to-camel-case=true
# redis
spring.redis.password=wrXodjsHEa28
spring.redis.timeout=20000
spring.redis.sentinel.master=yx_qc_change_ga_onl
spring.redis.sentinel.nodes=10.104.3.40:11010,10.104.3.50:11010,10.104.3.60:11010
spring.redis.pool.max-active=50
spring.redis.pool.max-idle=20
spring.redis.pool.max-wait=10000
spring.redis.host=10.104.3.40
spring.redis.port=11010
# supplier
supplier.url=http://127.0.0.1:8550/proxy/online.yanxuan-supplier-ms.service.mailsaas
......
......@@ -11,12 +11,6 @@ dschedule.adminAddresses=http://127.0.0.1:8550/proxy/test.dschedule-admin.servic
spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
# mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://regression-public-instance-uyogz-21338.rds.cn-east-p1.internal.:5566/yx_qc_change_system?useUnicode=true&characterEncoding=UTF-8&autoReconnet=true
spring.datasource.username=yx_qc_change_system
spring.datasource.password=fd929d26963a3187
#tomcat
server.tomcat.max-threads=600
server.tomcat.uri-encoding=UTF-8
......@@ -24,24 +18,6 @@ server.tomcat.basedir=/home/logs/access
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{P_INFO}c %{Referer}i %{User-Agent}i %{Host}i
# mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.map-underscore-to-camel-case=true
# redis
spring.redis.password=
spring.redis.timeout=20000
spring.redis.sentinel.master=paas-redis/yx-common-repl-1-reg
spring.redis.sentinel.nodes=yx-cust23-reg.ncr.cn-east-p1.internal.:32025
spring.redis.pool.max-active=50
spring.redis.pool.max-idle=20
spring.redis.pool.max-wait=10000
spring.redis.host=yx-cust23-reg.ncr.cn-east-p1.internal.
spring.redis.port=32025
# supplier
supplier.url=http://127.0.0.1:8550/proxy/regression.yanxuan-supplier-ms.service.mailsaas
......
......@@ -11,11 +11,7 @@ dschedule.adminAddresses=http://127.0.0.1:8550/proxy/test.dschedule-admin.servic
spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
# mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.170.155.148:4306/qc_ecr_system?useUnicode=true&characterEncoding=UTF-8&autoReconnet=true
spring.datasource.username=qc_ecr_system
spring.datasource.password=qc_ecr_system
#tomcat
server.tomcat.max-threads=600
......@@ -25,23 +21,6 @@ server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{P_INFO}c %{Referer}i %{User-Agent}i %{Host}i
# mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.map-underscore-to-camel-case=true
# redis
spring.redis.password=KX4CRYuA68T2
spring.redis.timeout=20000
spring.redis.sentinel.master=yx_common1_repl_test
spring.redis.sentinel.nodes=10.131.99.201:11030
spring.redis.pool.max-active=50
spring.redis.pool.max-idle=20
spring.redis.pool.max-wait=10000
spring.redis.host=10.131.99.201
spring.redis.port=11030
# supplier
supplier.url=http://127.0.0.1:8550/proxy/test.yanxuan-supplier-ms.service.mailsaas
......
......@@ -26,6 +26,14 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>com.netease.yanxuan</groupId>
<artifactId>pandora</artifactId>
</dependency>
<!--store-redis-->
<dependency>
......@@ -36,6 +44,10 @@
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.netease.mail.yanxuan.change.dal.config;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.netease.yanxuan.pandora.DataSourceRefresher;
import com.netease.yanxuan.pandora.spring.annotation.EnableDataSourceRefresh;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Set;
/**
* @author hzfengyuexin@corp.netease.com
*/
@Configuration
@EnableTransactionManagement
@EnableApolloConfig("db-public")
@EnableDataSourceRefresh
@MapperScan(basePackages = "com.netease.mail.yanxuan.change.dal.mapper", sqlSessionFactoryRef = "sqlSessionFactoryBean")
public class DataSourceConfiguration {
@Autowired
private DrmDBConfig drmDBConfig;
/**
* pandora热切换数据源
* */
@Bean
public DataSourceRefresher dataSourceRefresher() {
DataSourceRefresher dataSourceRefresher = new DataSourceRefresher("db-public");
Set<String> dataSource = ImmutableSet.of("db.url", "db.driverClassName", "db.username", "db.password");
dataSourceRefresher.bindDataSourceWithPropertyKey("dataSource", dataSource);
return dataSourceRefresher;
}
/**
* merchant-order-db数据源
*/
@Bean(name = "dataSource")
@Primary
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(drmDBConfig.getDriverClassName());
dataSource.setUrl(drmDBConfig.getUrl());
dataSource.setUsername(drmDBConfig.getUserName());
dataSource.setPassword(drmDBConfig.getPassword());
// 初始连接数
dataSource.setInitialSize(1);
// 最大连接数
dataSource.setMaxActive(50);
// 最小空闲连接数
dataSource.setMinIdle(10);
// 配置获取连接等待超时的时间
dataSource.setMaxWait(60000);
dataSource.setValidationQuery("SELECT 'x'");
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(false);
dataSource.setTestWhileIdle(true);
// 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
dataSource.setTimeBetweenEvictionRunsMillis(60000);
dataSource.setMinEvictableIdleTimeMillis(300000);
StatFilter filter = new StatFilter();
filter.setSlowSqlMillis(5000);
filter.setLogSlowSql(true);
filter.setMergeSql(true);
dataSource.setProxyFilters(Lists.newArrayList(filter));
return dataSource;
}
@Bean(name = "sqlSessionFactoryBean")
@Primary
public SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
sqlSessionFactoryBean.setTypeAliasesPackage("com.netease.mail.yanxuan.change.dal.entity," + "com.netease.mail.yanxuan.change.dal.meta.model.po");
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*.xml");
sqlSessionFactoryBean.setMapperLocations(resources);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
configuration.setCacheEnabled(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean;
}
@Primary
@Bean(name = "sqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); }
/**
* 用于事务管理
*/
@Bean(name = "transactionManager")
@Primary
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
package com.netease.mail.yanxuan.change.dal.config;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.EnableAutoUpdateApolloConfig;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author hzfengyuexin@corp.netease.com
*/
@Data
@Component
@EnableAutoUpdateApolloConfig("db-public")
public class DrmDBConfig {
@ApolloConfig("db-public")
private Config config;
@Value("${db.url:}")
private String url;
@Value("${db.username:}")
private String userName;
@Value("${db.password:}")
private String password;
@Value("${db.driverClassName:}")
private String driverClassName;
}
/**
* @(#)DlockConfig.java, 2018/9/7.
* <p/>
* Copyright 2018 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.dal.config;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.EnableAutoUpdateApolloConfig;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author hzcaitianyu (hzcaitianyu@corp.netease.com)
*/
@Component
@EnableAutoUpdateApolloConfig("db-redis")
@Data
public class DrmRedisConfig {
@ApolloConfig("db-redis")
private Config config;
@Value("${redis.master:}")
private String master;
@Value("${redis.nodes:}")
private String nodes;
@Value("${redis.password:}")
private String password;
@Value("${redis.maxTotal:50}")
private Integer maxTotal;
@Value("${redis.maxIdle:20}")
private Integer maxIdle;
@Value("${redis.maxWaitMillis:10000}")
private Integer maxWaitMillis;
}
\ No newline at end of file
package com.netease.mail.yanxuan.change.dal.config;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
/**
* redis文件配置
*/
@Configuration
public class RedisSentinelConfig {
@Autowired
private DrmRedisConfig drmRedisConfig;
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
Set<String> nodes = Arrays.stream(drmRedisConfig.getNodes().split(",")).collect(Collectors.toSet());
RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(drmRedisConfig.getMaster(), nodes);
redisSentinelConfiguration.setPassword(RedisPassword.of(drmRedisConfig.getPassword()));
GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
genericObjectPoolConfig.setMaxIdle(drmRedisConfig.getMaxIdle());
genericObjectPoolConfig.setMaxTotal(drmRedisConfig.getMaxTotal());
genericObjectPoolConfig.setMaxWaitMillis(drmRedisConfig.getMaxWaitMillis());
LettucePoolingClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(genericObjectPoolConfig).build();
return new LettuceConnectionFactory(redisSentinelConfiguration, lettuceClientConfiguration);
}
}
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