Commit 4bcd7413 authored by maliang's avatar maliang

权限控制

parent d385cb8f
...@@ -138,6 +138,11 @@ ...@@ -138,6 +138,11 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId> <artifactId>commons-pool2</artifactId>
</dependency> </dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
</dependencies> </dependencies>
......
...@@ -24,6 +24,6 @@ public interface AdvertDao { ...@@ -24,6 +24,6 @@ public interface AdvertDao {
@Select("select *,advertiser_id advertiserId,advertiser_name,total_income totalIncome,income_seven incomeSeven,income_thirty incomeThirty,exposure_view exposureView,click_view clickView from advertiser_data_count t where advertiser_id={#advertiserId}") @Select("select *,advertiser_id advertiserId,advertiser_name,total_income totalIncome,income_seven incomeSeven,income_thirty incomeThirty,exposure_view exposureView,click_view clickView from advertiser_data_count t where advertiser_id={#advertiserId}")
List<AdvertiserData> getAdvertiserDataById(@Param("advertiserId") String advertiserId); List<AdvertiserData> getAdvertiserDataById(@Param("advertiserId") String advertiserId);
@Select("select minutes,sum(exposure) exposure,sum(click) click from advertiser_data_runtime t where advertiser_id={#advertiserId} and report_date<={#day} and report_date<={#day} group by minutes") @Select("select minutes,sum(exposure) exposure,sum(click) click from advertiser_data_minutes t where advertiser_id={#advertiserId} and report_date<={#day} and report_date<={#day} group by minutes")
List<AdvertiserData> getAdvertExCl(@Param("advertiserId") String advertiserId,@Param("day") String day); List<AdvertiserData> getAdvertExCl(@Param("advertiserId") String advertiserId,@Param("day") String day);
} }
package com.boot.security.server.utils.redis;
public class CacheCaller<T> {
public T call() {
return null;
}
public T call(int index) {
return null;
}
}
package com.boot.security.server.utils.redis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class JedisManager {
private ShardedJedisPool shardPool;
class JedisConfig {
private JedisConfig() {
initaize();
}
//private String path="config.properties";
private void initaize() {
System.out.println("redis initaizing ...");
//String path = SystemConfig.getConfig("core.properties.path");
Properties cbuilder = new Properties();
try {
cbuilder.load(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties") , "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
//ConfigBuilder cbuilder = ConfigBuilderFactory.getConfigBuilder(path);
JedisPoolConfig pConfig = new JedisPoolConfig();
pConfig.setMaxIdle(Integer.parseInt(cbuilder.getProperty("redis.maxIdle")));
pConfig.setMaxTotal(Integer.parseInt(cbuilder.getProperty("redis.maxActive")));
pConfig.setMinIdle(Integer.parseInt(cbuilder.getProperty("redis.minIdle")));
int nodes = Integer.parseInt(cbuilder.getProperty("redis.cluster.count"));
// 单位:毫秒
Integer poolTimeout = Integer.parseInt(cbuilder.getProperty("redis.pool.timeout"));
List<JedisShardInfo> jdinfoList = new ArrayList<JedisShardInfo>();
for (int i = 0; i < nodes; i++) {
String masterHost = cbuilder.getProperty("redis.cluster.master." + (i + 1) + ".host");
String masterPort = cbuilder.getProperty("redis.cluster.master." + (i + 1) + ".port");
String masterName = cbuilder.getProperty("redis.cluster.master." + (i + 1) + ".name", masterHost);
JedisShardInfo jsi = new JedisShardInfo(masterHost, Integer.valueOf(masterPort), poolTimeout, masterName);
jdinfoList.add(jsi);
}
shardPool = new ShardedJedisPool(pConfig, jdinfoList);
System.out.println("redis initialize success");
}
}
private JedisManager() {
new JedisConfig();
}
private static JedisManager instance = new JedisManager();
public static JedisManager getInstance() {
return instance;
}
public ShardedJedis getShardedJedis() {
return shardPool.getResource();
}
/**
* 正常归还jedis
*
* @param jedis
*/
public void returnSharedJedis(final ShardedJedis jedis) {
shardPool.returnResource(jedis);
}
/**
* jedis出现异常的时候销毁jedis
*
* @param jedis
*/
public void returnBrokenSharedJedis(final ShardedJedis jedis) {
shardPool.returnBrokenResource(jedis);
}
// /**
// * 根据key值获取写jedis
// *
// * @param key
// * @return
// */
// public Jedis getWriteJedis(final String key) {
// RNodeGroup[] nodes = RConfig.getNodes();
// int nodeIndex = key.hashCode() % nodes.length;
// if (nodeIndex < 0) {
// nodeIndex *= -1;
// }
//
// RNode node = nodes[nodeIndex].getMasterNode();
//
// try {
//
// return node.getjPool().getResource();
//
// } catch (JedisConnectionException jnex) {
//
// closeNode(node);
// node = nodes[nodeIndex].getMasterNode();
// return node.getjPool().getResource();
// }
//
// }
//
// /**
// * 根据key值获取jedis
// *
// * @param key
// * @return
// */
// public Jedis getReadJedis(final String key) {
//
// RNodeGroup[] nodes = RConfig.getNodes();
// int nodeIndex = key.hashCode() % nodes.length;
//
// if (nodeIndex < 0) {
// nodeIndex *= -1;
// }
//
// RNode node = nodes[nodeIndex].getReadNode();
// try {
//
// return node.getjPool().getResource();
//
// } catch (JedisConnectionException jnex) {
// closeNode(node);
// node = nodes[nodeIndex].getReadNode();
// return node.getjPool().getResource();
// }
//
// }
//
// /**
// * 正常归还jedis
// *
// * @param jedis
// */
// public void returnJedis(final Jedis jedis) {
//
// String nodeName = jedis.getClient().getHost() + ":" + jedis.getClient().getPort();
// RNode node = RConfig.getNodeMap().get(nodeName);
// if (node != null) {
// node.getjPool().returnResource(jedis);
// }
// }
//
// /**
// * jedis出现异常的时候销毁jedis
// *
// * @param jedis
// */
// public void returnBrokenJedis(final Jedis jedis) {
//
// String nodeName = jedis.getClient().getHost() + ":" + jedis.getClient().getPort();
// RNode node = RConfig.getNodeMap().get(nodeName);
// if (node != null) {
// node.getjPool().returnBrokenResource(jedis);
// }
// }
//
// /**
// * 无法连接的时候调用
// *
// * @param jedis
// */
// private void closeNode(final RNode rnode) {
//
// RNode masterNode = rnode.getGroup().getMasterNode();
//
// // 表示已经是同一个节点了
// if (rnode.getGroup().getSlaveNode() == rnode.getGroup().getMasterNode()) {
//
// // do nothing
// return;
// }
//
// // 是主还是从
// if (rnode == masterNode) {
//
// rnode.getGroup().getSlaveNode().getjPool().getResource().slaveofNoOne();
//
// rnode.getGroup().setMasterNode(rnode.getGroup().getSlaveNode());
//
// } else {
// rnode.getGroup().setSlaveNode(rnode.getGroup().getMasterNode());
// }
//
// RConfig.getNodeMap().remove(rnode.getNodeName());
//
// }
}
package com.boot.security.server.utils.redis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
class RConfig {
/** 配置文件 **/
private final String DEFAULT_FILE = "redis.properties";
/** 链接timeout时间 **/
private final int POOL_TIMEOUT = 1000;
private RNodeGroup[] nodes;
private final Map<String, RNode> nodeMap = new HashMap<String, RNode>();
private static RConfig config;
private static final Object mutex = new Object();
public static RNodeGroup[] getNodes() {
return getConfig().nodes;
}
public static Map<String, RNode> getNodeMap() {
return getConfig().nodeMap;
}
private static RConfig getConfig() {
if (config == null) {
synchronized (mutex) {
if (config == null) {
config = new RConfig();
}
return config;
}
}
return config;
}
private RConfig() {
initaize();
}
private void initaize() {
System.out.println("redis initaizing ...");
Properties redisProp = new Properties();
try {
redisProp.load(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties") , "UTF-8"));
Set<Object> propKeySet = redisProp.keySet();
for (Object obj : propKeySet) {
System.out.println("**************key:" + obj + ",value:" + redisProp.getProperty(obj.toString()));
}
JedisPoolConfig pConfig = new JedisPoolConfig();
pConfig.setMaxIdle(Integer.valueOf(redisProp.getProperty("redis.maxIdle")));
pConfig.setMaxTotal(Integer.valueOf(redisProp.getProperty("redis.maxActive")));
pConfig.setMinIdle(Integer.valueOf(redisProp.getProperty("redis.minIdle")));
nodes = new RNodeGroup[Integer.valueOf(redisProp.getProperty("redis.cluster.count"))];
for (int i = 0; i < nodes.length; i++) {
nodes[i] = new RNodeGroup();
String masterHost = redisProp.getProperty("redis.cluster.master." + (i + 1) + ".host");
String masterPort = redisProp.getProperty("redis.cluster.master." + (i + 1) + ".port");
JedisPool mPoll = new JedisPool(pConfig, masterHost, Integer.valueOf(masterPort), POOL_TIMEOUT);
RNode masterNode = new RNode(masterHost + ":" + masterPort, mPoll);
masterNode.setGroup(nodes[i]);
String slaveHost = redisProp.getProperty("redis.cluster.slave." + (i + 1) + ".host");
String slavePort = redisProp.getProperty("redis.cluster.slave." + (i + 1) + ".port");
JedisPool sPoll = new JedisPool(pConfig, slaveHost, Integer.valueOf(slavePort), POOL_TIMEOUT);
RNode slaveNode = new RNode(slaveHost + ":" + slavePort, sPoll);
slaveNode.setGroup(nodes[i]);
nodes[i].setMasterNode(masterNode);
nodes[i].setSlaveNode(slaveNode);
nodeMap.put(masterNode.getNodeName(), masterNode);
nodeMap.put(slaveNode.getNodeName(), slaveNode);
}
} catch (FileNotFoundException e) {
//LogHelper.exceptionLog(e);
} catch (IOException e) {
//LogHelper.exceptionLog(e);
}
}
public static void main(String[] args) {
System.out.println(getNodes().length);
}
}
package com.boot.security.server.utils.redis;
import redis.clients.jedis.JedisPool;
public class RNode {
/** 格式host:port **/
private String nodeName;
private JedisPool jPool;
private RNodeGroup group;
public RNode(String nodeName, JedisPool jPool) {
this.nodeName = nodeName;
this.jPool = jPool;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public JedisPool getjPool() {
return jPool;
}
public void setjPool(JedisPool jPool) {
this.jPool = jPool;
}
public RNodeGroup getGroup() {
return group;
}
public void setGroup(RNodeGroup group) {
this.group = group;
}
}
package com.boot.security.server.utils.redis;
public class RNodeGroup {
/** master节点,单个节点只可能存在一个 **/
private RNode masterNode;
/** slave节点,单节点单个slave节点 **/
private RNode slaveNode;
/** 负载均衡 **/
int count;
/** 主从 读的权重 **/
private final int[] weight = {3, 7};
/** 锁 **/
Object mutex = new Object();
/**
* 根据权重获取读取节点
*
* @return
*/
public RNode getReadNode() {
synchronized (mutex) {
count++;
}
if (count >= 100000) {
count = 0;
}
// 去模权重的总和
int randomInt = count % 10;
return randomInt < weight[0] ? masterNode : slaveNode;
}
public RNode getMasterNode() {
return masterNode;
}
public void setMasterNode(RNode masterNode) {
this.masterNode = masterNode;
}
public RNode getSlaveNode() {
return slaveNode;
}
public void setSlaveNode(RNode slaveNode) {
this.slaveNode = slaveNode;
}
}
package com.boot.security.server.utils.redis;
public interface RedisLoader {
void doJob();
}
kafka.broker.list = bi-kafka01:6667,bi-kafka02:6667,bi-kafka03:6667
#kafka.broker.list = 172.17.255.142:9092,172.17.255.144:9092,172.17.255.149:9092
server.kafka.broker.list = 172.17.255.142:9092,172.17.255.144:9092,172.17.255.149:9092
cassandra.node.list = 172.17.255.192
cassandra.port = 9014
kafka.group.id=user_action_logs_test2
cassnadra.keyspace=dmp
## redis配置
#redis连接池最大空闲连接数
redis.maxIdle=20
redis.maxTotal=1000
#redis连接池最小空闲连接数
redis.minIdle=10
#redis连接池最大连接数
redis.maxActive=1000
#redis连接池连接超时时间
redis.pool.timeout=500
#redis集群服务数
redis.cluster.count=1
#redis集群服务地址
redis.cluster.master.1.host=172.17.255.136
redis.cluster.master.1.port=6379
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