# micro-rpc **Repository Path**: xrancode/micro-rpc ## Basic Information - **Project Name**: micro-rpc - **Description**: 一个基于netty的简单易用的rpc框架。在springcloud项目中,micro-rpc是一个即插即用的组件,提供netty-rpc服务,没有其它冗余功能,支持springcloud注册中心、负载均衡、限流熔断等功能,它的使用方式和openfeign一样简单 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-08-21 - **Last Updated**: 2024-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README -----------------客户端配置---------------- ~~~java @MicroRpcClient(name = "test-service", url = "127.0.0.1:28777") public interface OrderService { /** * 同步请求:(两种方式二选一) * 方式一:直接返回结果,发生错误时抛出异常 * 方式二:使用ResponseHolder对结果进行包装,用来获取到错误信息 */ OrderEntity submitOrder(OrderEntity order); ResponseHolder submitOrder(OrderEntity order); /** * 异步请求: * 最后一个参数传入SendCallback的一个实现类,该请求会立即返回,然后通过SendCallBack异步处理结果 * 示例: * orderService.submitOrder(order, new SendCallback() { * @Override * public void onSuccess(Object result) { * // -----请求成功----- * } * @Override * public void onException(Throwable e) { * // -----请求异常----- * } * }); */ void submitOrder(OrderEntity order, SendCallback sendCallback); } ~~~ -----------------服务端service方法---------------- ~~~java @Service public class OrderService { public OrderEntity submitOrder(OrderEntity order) { System.out.println("接收订单:" + order.toString()); order.setSubmit(true); return order; } } ~~~ example-client 客户端示例 example-server 服务端示例 microrpc-core rpc核心框架,负责通信,解码 microrpc-sentinel-adapter @MicroRpcClient标注的请求自动识别为sentinel资源,可以通过sentinel配置拦截策略 spring-cloud-start-microrpc microrpc的springcloud版本,依赖该项目可以实现服务注册,服务发现,负载均衡功能 初步性能测试 1、单机1200k, 10000次请求耗时: { "http": "21885", "netty": "5585" } 2、局域网两台笔记本,1200k,10000次请求 { "http": "77304", "netty": "35201" } 3、局域网两台笔记本,12k,10000次请求 { "http": "58177", "netty": "30134" } 4、局域网两台笔记本,10000k,10000次请求 { "http": "154912", "netty": "52027" } 5、局域网两台笔记本,10000k,10000次请求 { "http": "180901", "netty": "60529" }