# libra
**Repository Path**: nebulauv/libra
## Basic Information
- **Project Name**: libra
- **Description**: libra是一个基于netty+zookeeper的rpc微服务框架,可实现微服务发现、微服务注册、微服务调用等功能。拓展插件:libra-api-web可将微服务转成http服务,提供参数校验功能,提供基于web的单元测试功能。可解析dubbo服务,将dubbo服务发布成http服务。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-04-20
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**框架介绍**
libra是一个基于netty+zookeeper的rpc微服务框架,可实现微服务发现、微服务注册、微服务调用等功能.
拓展插件:
libra-api-web api网关插件,可将微服务转成http服务,提供参数校验功能,提供基于web的单元测试功能。
libra-proxy 服务代理插件,可实现异地机房RPC服务注册调用。
**设计**

**配置**
pom.xml引入
```Java
com.nebulauv.libra
libra
1.0.0
```
libra.properties配置
```Java
zk.host=192.168.3.132:2181,192.168.3.132:2182,192.168.3.132:2183
zk.timeout=5000
libra.name=demo-serverb
libra.port=28512
```
zk.host zookeeper 地址
zk.timeout zookeeper 超时时间
libra.name 服务名称
libra.port 服务端口
libra.dubbo 非必填,true的时候,请引入dubbo的包,libra会解析dubbo服务注解,将dubbo接口进行注册,默认为false,走libra的注解
spring配置
```Java
@Configuration
public class LibrbConfiguration {
public LibrbConfiguration(){
}
@Bean
public RpcServerApplicationContextAware createRpcServer(){
RpcServerApplicationContextAware rpcServer=new RpcServerApplicationContextAware();
return rpcServer;
}
}
```
接口配置
```Java
@Configuration
@Lazy
@Order(Ordered.LOWEST_PRECEDENCE)
public class ServerbApiConfig {
@Bean("demoServiceb")
@ConditionalOnMissingBean
public DemoServiceb demoServiceb(){
return ProxyProvider.INSTANCE.getProxyBean(DemoServiceb.class);
}
}
```
调用微服务
```Java
@LibraService
@Service("demoServiceb")
public class DemoServicebImpl implements DemoServiceb {
private static final Logger logger = LoggerFactory.getLogger(DemoServicebImpl.class);
@Autowired
private DemoServicea demoServicea;
@Override
public Dtob getDtob() {
logger.info("This is server a dto!");
Dtob dtob=new Dtob();
dtob.setId("1001");
dtob.setName("DTOA");
return dtob;
}
@Override
public String getDtoaName() {
Dtoa dtoa= this.demoServicea.getDtoa();
String dtoaName=dtoa.getName();
logger.info("Get dtoa from rpc server demoServicea");
return dtoaName;
}
}
```
**demo项目**
地址:https://gitee.com/nebulauv/libra-demo
请下载参考