Commit 5e13875d by liyuan

修改

parent 74f3a090
......@@ -181,7 +181,7 @@ public class RegistryBaseClient {
registryParamVO.setAccessToken(this.accessToken);
registryParamVO.setBiz(this.biz);
registryParamVO.setEnv(this.env);
registryParamVO.setKeys(new ArrayList<String>(keys));
registryParamVO.setKeys(new ArrayList<>(keys));
String paramsJson = BasicJson.toJson(registryParamVO);
......
......@@ -259,14 +259,14 @@ public class RegistryServiceImpl implements IRegistryService, InitializingBean,
}
}
Map<String, List<String>> result = new HashMap<String, List<String>>();
Map<String, List<String>> result = new HashMap<>(16);
for (String key: keys) {
RegistryData registryData = new RegistryData();
registryData.setBiz(biz);
registryData.setEnv(env);
registryData.setKey(key);
List<String> dataList = new ArrayList<String>();
List<String> dataList = new ArrayList<>();
Registry fileRegistry = getFileRegistryData(registryData);
if (fileRegistry!=null) {
dataList = fileRegistry.getDataList();
......@@ -482,7 +482,7 @@ public class RegistryServiceImpl implements IRegistryService, InitializingBean,
public void run() {
while (!executorStoped) {
try {
// new message, filter readed
// new message, filters readed
List<RegistryMessage> messageList = registryMessageDao.findMessage(readedMessageIds);
if (messageList!=null && messageList.size()>0) {
for (RegistryMessage message: messageList) {
......
### web
server.port=8080
server.context-path=/myth-register
logging.config=classpath:logback.xml
### resources
spring.mvc.static-path-pattern=/static/**
......
......@@ -30,11 +30,11 @@ public abstract class ServiceRegistry {
/**
* registry service, for mult
*
* @param keys service key
* @param value service value/ip:port
* @return
* @param keyServerAddress Map's key is service key Map'svalue is service value/ip:port
*/
public abstract boolean registry(Set<String> keys, String value);
public abstract boolean registry(Map<String,String> keyServerAddress);
/**
......
package com.byit.rpc.registry.impl;
import com.byit.registry.client.model.RegistryDataParamVO;
import com.byit.rpc.registry.ServiceRegistry;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.*;
/**
* service registry for "local"
......@@ -33,20 +32,22 @@ public class LocalServiceRegistry extends ServiceRegistry {
registryData.clear();
}
@Override
public boolean registry(Set<String> keys, String value) {
if (keys==null || keys.size()==0 || value==null || value.trim().length()==0) {
public boolean registry(Map<String,String> keyServerAddress){
if (CollectionUtils.isEmpty(keyServerAddress)) {
return false;
}
for (String key : keys) {
TreeSet<String> values = registryData.get(key);
// init
for (Map.Entry<String,String> entry : keyServerAddress.entrySet()) {
TreeSet<String> values = registryData.get(entry.getKey());
if (values == null) {
values = new TreeSet<>();
registryData.put(key, values);
registryData.put(entry.getKey(), values);
}
values.add(value);
values.add(entry.getValue());
}
return true;
}
......
......@@ -3,6 +3,7 @@ package com.byit.rpc.registry.impl;
import com.byit.registry.client.RegistryClient;
import com.byit.registry.client.model.RegistryDataParamVO;
import com.byit.rpc.registry.ServiceRegistry;
import org.springframework.util.CollectionUtils;
import java.util.*;
......@@ -43,16 +44,17 @@ public class RegistryServiceRegistry extends ServiceRegistry {
}
}
@Override
public boolean registry(Set<String> keys, String value) {
if (keys==null || keys.size() == 0 || value == null) {
public boolean registry(Map<String,String> keyServerAddress){
if (CollectionUtils.isEmpty(keyServerAddress)) {
return false;
}
// init
List<RegistryDataParamVO> registryDataList = new ArrayList<>();
for (String key:keys) {
registryDataList.add(new RegistryDataParamVO(key, value));
for (Map.Entry<String,String> entry : keyServerAddress.entrySet()) {
registryDataList.add(new RegistryDataParamVO(entry.getKey(), entry.getValue()));
}
return registryClient.registry(registryDataList);
......
package com.byit.rpc.registry.impl;
import com.byit.registry.client.model.RegistryDataParamVO;
import com.byit.rpc.registry.ServiceRegistry;
import com.byit.rpc.util.RpcException;
import com.byit.rpc.util.ZkClient;
......@@ -7,6 +8,7 @@ import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
......@@ -232,25 +234,37 @@ public class ZkServiceRegistry extends ServiceRegistry {
}
}
@Override
public boolean registry(Set<String> keys, String value) {
for (String key : keys) {
public boolean registry(Map<String,String> keyServerAddress){
if (CollectionUtils.isEmpty(keyServerAddress)) {
return false;
}
StringBuilder keys = new StringBuilder();
StringBuilder addressValues = new StringBuilder();
// init
for (Map.Entry<String,String> entry : keyServerAddress.entrySet()) {
// local cache
TreeSet<String> values = registryData.get(key);
TreeSet<String> values = registryData.get(entry.getKey());
if (values == null) {
values = new TreeSet<>();
registryData.put(key, values);
registryData.put(entry.getKey(), values);
}
values.add(value);
values.add(entry.getValue());
// make path, child path
String path = keyToPath(key);
zkClient.setChildPathData(path, value, "");
String path = keyToPath(entry.getKey());
keys.append(entry.getKey() + ",");
addressValues.append(entry.getValue() + ",");
zkClient.setChildPathData(path, entry.getValue(), "");
}
logger.info(">>>>>>>>>>> myth-rpc, registry success, keys = {}, value = {}", keys, value);
logger.info(">>>>>>>>>>> myth-rpc, registry success, keys = {}, value = {}", keys, addressValues);
return true;
}
@Override
public boolean remove(Set<String> keys, String value) {
for (String key : keys) {
......
......@@ -147,7 +147,7 @@ public class RpcReferenceBean {
Class<?>[] parameterTypes = method.getParameterTypes();
Object[] parameters = args;
// filter for generic
// filters for generic
if (className.equals(RpcGenericService.class.getName()) && methodName.equals("invoke")) {
Class<?>[] paramTypes = null;
......@@ -168,7 +168,7 @@ public class RpcReferenceBean {
parameters = (Object[]) args[4];
}
// filter method like "Object.toString()"
// filters method like "Object.toString()"
if (className.equals(Object.class.getName())) {
logger.info(">>>>>>>>>>> myth-rpc proxy class-method not support [{}#{}]", className, methodName);
throw new RpcException("myth-rpc proxy class-method not support");
......@@ -187,7 +187,7 @@ public class RpcReferenceBean {
} else if (addressSet.size()==1) {
finalAddress = addressSet.first();
} else {
finalAddress = loadBalance.xxlRpcInvokerRouter.route(serviceKey, addressSet);
finalAddress = loadBalance.rpcInvokerRouter.route(serviceKey, addressSet);
}
}
......
......@@ -11,10 +11,10 @@ public enum LoadBalance {
CONSISTENT_HASH(new RpcLoadBalanceConsistentHashStrategy());
public final RpcLoadBalance xxlRpcInvokerRouter;
public final RpcLoadBalance rpcInvokerRouter;
private LoadBalance(RpcLoadBalance xxlRpcInvokerRouter) {
this.xxlRpcInvokerRouter = xxlRpcInvokerRouter;
private LoadBalance(RpcLoadBalance rpcInvokerRouter) {
this.rpcInvokerRouter = rpcInvokerRouter;
}
......@@ -26,6 +26,4 @@ public enum LoadBalance {
}
return defaultRouter;
}
}
\ No newline at end of file
......@@ -26,7 +26,7 @@ public class MinaClientHandler extends IoHandlerAdapter {
public void messageReceived(IoSession session, Object message) throws Exception {
RpcResponse xxlRpcResponse = (RpcResponse) message;
// filter beat
// filters beat
if (Beat.BEAT_ID.equalsIgnoreCase(xxlRpcResponse.getRequestId())){
return;
}
......
......@@ -37,7 +37,7 @@ public class MinaServerHandler extends IoHandlerAdapter {
// request
final RpcRequest rpcRequest = (RpcRequest) message;
// filter beat
// filters beat
if (Beat.BEAT_ID.equalsIgnoreCase(rpcRequest.getRequestId())){
return;
}
......
......@@ -33,7 +33,7 @@ public class NettyServerHandler extends SimpleChannelInboundHandler<RpcRequest>
@Override
public void channelRead0(final ChannelHandlerContext ctx, final RpcRequest rpcRequest) throws Exception {
// filter beat
// filters beat
if (Beat.BEAT_ID.equalsIgnoreCase(rpcRequest.getRequestId())){
logger.debug(">>>>>>>>>>> myth-rpc provider netty server read beat-ping.");
return;
......
......@@ -80,7 +80,7 @@ public class NettyHttpServerHandler extends SimpleChannelInboundHandler<FullHttp
RpcRequest rpcRequest = (RpcRequest) rpcProviderFactory.getSerializer().deserialize(requestBytes, RpcRequest.class);
requestId = rpcRequest.getRequestId();
// filter beat
// filters beat
if (Beat.BEAT_ID.equalsIgnoreCase(rpcRequest.getRequestId())){
logger.debug(">>>>>>>>>>> myth-rpc provider netty_http server read beat-ping.");
return;
......
......@@ -11,9 +11,14 @@ import java.lang.annotation.*;
@Inherited
public @interface RpcService {
String version() default "";
/**
* @return
* 提供http服务
* 向注册中心注册 服务的id 同一个业务中必须唯一
* 端口号从配置文件中获取springboot的端口号
*/
String version() default "";
boolean http_type() default false;
}
......@@ -9,6 +9,7 @@ import com.byit.rpc.util.RpcException;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
......@@ -16,9 +17,8 @@ import java.util.Map;
/**
* myth-rpc provider (for spring)
*
*/
public class RpcSpringProviderFactory extends RpcProviderFactory implements ApplicationContextAware, InitializingBean,DisposableBean {
public class RpcSpringProviderFactory extends RpcProviderFactory implements ApplicationContextAware, InitializingBean, DisposableBean {
// ---------------------- config ----------------------
......@@ -28,13 +28,22 @@ public class RpcSpringProviderFactory extends RpcProviderFactory implements Appl
private int corePoolSize;
private int maxPoolSize;
private String ip; // for registry
private int port; // default port
private String ip; // for registry
private int port; // default port
private String accessToken;
private Class<? extends ServiceRegistry> serviceRegistryClass; // class.forname
private Map<String, String> serviceRegistryParam;
@Value("${server.port}")
private int serverPort;
@Value("${spring.application.name}")
private String serverName;
/**
* 该服务是否提供http服务
*/
private Boolean isHttp = false;
// set
public void setNetType(String netType) {
......@@ -85,15 +94,16 @@ public class RpcSpringProviderFactory extends RpcProviderFactory implements Appl
// util
private void prepareConfig(){
private void prepareConfig() {
// prepare config
NetEnum netTypeEnum = NetEnum.autoMatch(netType, null);
Serializer.SerializeEnum serializeEnum = Serializer.SerializeEnum.match(serialize, null);
Serializer serializer = serializeEnum!=null?serializeEnum.getSerializer():null;
Serializer serializer = serializeEnum != null ? serializeEnum.getSerializer() : null;
// init config
super.initConfig(netTypeEnum, serializer, corePoolSize, maxPoolSize, ip, port, accessToken, serviceRegistryClass, serviceRegistryParam);
super.initConfig(netTypeEnum, serializer, corePoolSize, maxPoolSize, ip, port, isHttp, serverPort, serverName
, accessToken, serviceRegistryClass, serviceRegistryParam);
}
......@@ -103,24 +113,28 @@ public class RpcSpringProviderFactory extends RpcProviderFactory implements Appl
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Map<String, Object> serviceBeanMap = applicationContext.getBeansWithAnnotation(RpcService.class);
if (serviceBeanMap!=null && serviceBeanMap.size()>0) {
if (serviceBeanMap != null && serviceBeanMap.size() > 0) {
for (Object serviceBean : serviceBeanMap.values()) {
// valid
if (serviceBean.getClass().getInterfaces().length ==0) {
if (serviceBean.getClass().getInterfaces().length == 0) {
throw new RpcException("myth-rpc, service(RpcService) must inherit interface.");
}
// add service
RpcService xxlRpcService = serviceBean.getClass().getAnnotation(RpcService.class);
RpcService rpcService = serviceBean.getClass().getAnnotation(RpcService.class);
String iface = serviceBean.getClass().getInterfaces()[0].getName();
String version = xxlRpcService.version();
String version = rpcService.version();
//如果提供的是htp服务
if (rpcService.http_type()) {
this.isHttp = true;
super.addService(serverName, version, serviceBean);
} else {
super.addService(iface, version, serviceBean);
}
super.addService(iface, version, serviceBean);
}
}
// TODO,addServices by api + prop
}
@Override
......
# myth-rpc
myth-rpc.remoting.port=9998
myth-rpc.registry.address=http://localhost:8080/myth-register
myth-rpc.registry.env=liyuan
myth-rpc.registry.biz=byit-myth-job
logging.config=classpath:logback.xml
\ No newline at end of file
# myth-rpc
myth-rpc.remoting.port=9998
myth-rpc.registry.address=http://localhost:8080/myth-register
myth-rpc.registry.env=pre
myth-rpc.registry.biz=byit-myth-job
logging.config=classpath:logback.xml
\ No newline at end of file
# myth-rpc
myth-rpc.remoting.port=9998
myth-rpc.registry.address=http://localhost:8080/myth-register
myth-rpc.registry.env=test
myth-rpc.registry.biz=byit-myth-job
logging.config=classpath:logback.xml
\ No newline at end of file
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