BootNettyRpc:采用 Netty 實現的 RPC 框架
什麽是 BootNettyRpc?
BootNettyRpc 是一個采用Netty實現的Rpc框架,適用於Spring Boot項目,支持Spring Cloud。 目前支持的版本為Spring Boot 1.5.x,Spring Cloud版本為D和E版本。
怎麽使用?
分為本地啟動和結合Spring Cloud啟動。具體見example 案例,現在以本地案例來說明,Spring Cloud案例省略。
BootNettyRpc 包括Server端和Client端。
Server端
在pom文件中加上依賴:
<dependency>
<groupId>io.github.forezp</groupId>
<version>1.0.5</version>
</dependency>
在Spring Boot啟動工程加上註解@EnableNettyRpc,需要開啟包掃描,不填也可以,會全局掃描,有一點影響啟動速度,比如例子中的ExampleRpcServerApplication:
@SpringBootApplication
@EnableNettyRpc(basePackages = "com.forezp")
public class ExampleRpcServerApplication {
public static void main(String[] args) {
SpringApplication.run( ExampleRpcServerApplication.class, args );
}
}
在配置文件配置Netty Server的端口和Netty Server的name,該name會作client端的調用的name。
server:
port: 7001
netty.server.name: server
netty.server.port: 6001
寫一個服務,接口如下:
public interface IGreeting {
String sayHello(String name);
}
實現類如下:
@Service
public class Greeting implements IGreeting {@Override
br/>@Override
return "hi "+name;
}
}
Client端
在工程的pom 文件加上一下依賴:
<dependency>
<groupId>io.github.forezp</groupId>
<artifactId>boot-netty-rpc-core</artifactId>
<version>1.0.5</version>
</dependency>
在SpringBoot的啟動類加上@EnableNettyRpc註解,如下:
@SpringBootApplication
@EnableNettyRpc(basePackages = "com.forezp")@RestController
br/>@RestController
public static void main(String[] args) {
SpringApplication.run( ExampleRpcClientApplication.class, args );
}
}
在Spring Boot配置文件 application.yml,加上以下的配置,其中name為Server端的name,同一個name可以配置多個服務實例,默認使用了輪詢的負載均衡。
netty:
clients:
- name: server
host: localhost
port: 6001 - name: server
host: localhost
port: 6001
服務調用者需要需要寫一個接口,在接口上寫@RpcClient註解,name必填為服務提供者名,rpcClz必填,為服務提供者的類。
@RpcClient(name = "server", rpcClz = "com.forezp.localrpcserver.api.Greeting")
public interface IGreeting {
String sayHello(String name);
}@Autowired
br/>@Autowired
Object object = greeting.sayHello( "hi" );
聯系我
如果有任何問題和建議,請聯系我,我的郵箱 [email protected]
已經實現的功能
rpc(實現同步、異步調用)
負載均衡
接口線程池隔離
接入Eureka
接入鏈路追蹤
接入監控
接入報警郵箱
優化rpc性能 (需持續優化)
未來計劃
接入多種序列化,做到可配置
自定義協議,trace的index不需要指定
接入consule
支持spring boot 2.0 Spring Cloud F
BootNettyRpc:采用 Netty 實現的 RPC 框架