• Stars
    star
    164
  • Rank 230,032 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

一个采用Netty实现的RPC框架,适用于Spring Boot,Spring Cloud!

BootNettyRpc

License Maven Central

README: English | 中文

什么是 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>
        <artifactId>boot-netty-rpc-core</artifactId>
        <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
    public String sayHello(String name) {
        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
public class ExampleRpcClientApplication {

    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
IGreeting greeting;

Object object = greeting.sayHello( "hi" );
 

联系我

如果有任何问题和建议,请联系我,我的邮箱[email protected]

已经实现的功能

  • rpc(实现同步、异步调用)
  • 负载均衡
  • 接口线程池隔离
  • 接入Eureka
  • 接入链路追踪
  • 接入监控
  • 接入报警邮箱
  • 优化rpc性能 (需持续优化)

未来计划

  • 接入多种序列化,做到可配置
  • 自定义协议,trace的index不需要指定
  • 接入consule
  • 支持spring boot 2.0 Spring Cloud F

More Repositories

1

SpringCloudLearning

《史上最简单的Spring Cloud教程源码》
Java
17,585
star
2

SpringBootLearning

《Spring Boot教程》源码
Java
2,256
star
3

banya

An open resource for Douban API with NETEASY Music's UI.
Java
928
star
4

springcloud-book

书籍《深入理解Spring Cloud与微服务构建》的源码
Java
512
star
5

SpringcloudConfig

318
star
6

AndroidMaterialLatest

收集安卓最新学习资料,帮助你节约找资料的时间。
285
star
7

ZhihuSpiderMan

Python爬虫系列
Python
158
star
8

distributed-limit

一个分布式限流的解决方案!
Java
100
star
9

springcloud-book-greenwich

Java
91
star
10

matrix-web

JavaScript
62
star
11

aries

Spring Boot快速开发框架
Java
29
star
12

openresty-best-samples

Lua
15
star
13

distributed-lab

Java
12
star
14

WeChatRecordButton

A recordingButton like WeChat ,the recording file is mp3 generate by lame-3.98.4_libmp3lame, which can play in ios device
C
7
star
15

RxJavaRetrofit

Java
7
star
16

forezp.github.io

CSS
7
star
17

Scrorpio

一个功能强大的工具类。
Java
6
star
18

androidFrame

Java
4
star
19

distributed-permission

一个分布式权限系统的就解决方案!
4
star
20

blog-comments

3
star
21

RxJavaDemo

Java
3
star
22

matrix-cloud-framework

Java
2
star
23

matrix-eventbus

Java
2
star
24

java-interview

2
star
25

huuuuu

Java
2
star
26

go-study

Go
1
star
27

go-study-pre

Go
1
star
28

AndroidLibrary

Java
1
star
29

mybatis-generator

Java
1
star
30

matrix-http

Java
1
star
31

AndroidNote

this is a note for android note repostiory
Java
1
star
32

stan

Go
1
star
33

SelectPicAndCamera

Java
1
star
34

googlecontainer

1
star
35

ProjectDemo

a demo for android development
Java
1
star