MCPcopy Index your code
hub / github.com/annabergite/abg-rpc

github.com/annabergite/abg-rpc @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,941 symbols 5,159 edges 251 files 366 documented · 19%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

abg-cloud

abg-cloud 是一款速度超凡的异步响应式RPC框架

功能特点

  • 仅支持异步调用, Service 接口所有 public 方法返回值都必须为 CompletableFuture
  • 配置定义在 Service 接口上, 而非实现类上, 方法实现者和调用者都不需要引入奇奇怪怪的注解
  • 支持 REST 调用
  • 支持失败回退, 支持熔断, 支持心跳, 支持自动重连
  • 支持自定义 服务注册 负载均衡 序列化
  • 支持 Filter, 可通过该机制实现 Tracing 限流限速 黑白名单 等功能
  • 支持 spring boot

Quick Start

Maven依赖:


<dependency>
    <groupId>com.abg-cloud</groupId>
    <artifactId>abg-cloud</artifactId>
    <version>0.0.9</version>
</dependency>


<dependency>
    <groupId>com.abg-cloud</groupId>
    <artifactId>abg-kryo</artifactId>
    <version>0.0.9</version>
</dependency>


<dependency>
    <groupId>com.abg-cloud</groupId>
    <artifactId>abg-protostuff</artifactId>
    <version>0.0.9</version>
</dependency>


<dependency>
    <groupId>com.abg-cloud</groupId>
    <artifactId>abg-register-zk</artifactId>
    <version>0.0.9</version>
</dependency>


<dependency>
    <groupId>com.abg-cloud</groupId>
    <artifactId>abg-spring-boot-starter</artifactId>
    <version>0.0.9</version>
</dependency>

1.定义接口

@AbgService(version = "1.0.0")
public interface HelloService {

    @AbgService(version = "1.0.0", rest = "hello")
    default CompletableFuture<String> hello(String msg) {
        // default实现会自动注册为失败回退方法,当远程调用失败时执行
        return CompletableFuture.completedFuture("error");
    }
}

2.服务端实现接口

@Component
public class HelloServiceImpl implements HelloService {
    @Override
    public CompletableFuture<String> hello(String msg) {
        return CompletableFuture.completedFuture(msg);
    }
}

3.配置abg-server.conf, 声明 服务器地址 序列化协议 注册地址 等信息

4.服务端启动

@SpringBootApplication(scanBasePackages = { "com.hello" })
@EnableabgServer
public class TruboServerBootTest {
    public static void main(String[] args) {
        SpringApplication.run(TruboServerBootTest.class, args);
    }
}

5.客户端调用

@Component
public class HelloReferTest {
    @Autowired
    HelloService helloService;

    public void doSomeThing(String msg) {
        helloService.hello(msg)
            .thenAccept(message -> System.out.println(message));
    }
}

6.配置abg-client.conf, 声明 服务器地址 序列化协议 注册地址 等信息

7.客户端启动

@SpringBootApplication(scanBasePackages = { "com.hello" })
@EnableabgClient
public class HelloBootTest {
    public static void main(String[] args) {
        SpringApplication.run(HelloBootTest.class, args);
    }
}

abg 技术原理

Extension points exported contracts — how you extend this code

Log (Interface)
A simple logging interface abstracting logging APIs. In order to be instantiated successfully by LogFactory, cl [8 implementers]
abg-jcl/src/main/java/org/apache/commons/logging/Log.java
Serializer (Interface)
(no doc) [11 implementers]
abg-jmh/src/main/java/rpc/abg/benchmark/serialization/manual/Serializer.java
Register (Interface)
服务注册,一个provider可以有多个Register @author Annabergite [4 implementers]
abg-cloud/src/main/java/rpc/abg/registry/Register.java
abgServerAware (Interface)
abgServer切入点, 实现类必须是被spring管理的 [2 implementers]
abg-spring-boot-starter/src/main/java/rpc/abg/boot/TurboServerAware.java
SystemClock (Interface)
(no doc) [2 implementers]
abg-utils/src/main/java/rpc/abg/util/SystemClock.java
UserService (Interface)
(no doc) [7 implementers]
abg-jmh/src/main/java/rpc/abg/benchmark/service/UserService.java
JsonMapper (Interface)
(no doc) [15 implementers]
abg-cloud/src/main/java/rpc/abg/serialization/JsonMapper.java
abgClientAware (Interface)
abgClient切入点, 实现类必须是被spring管理的 [2 implementers]
abg-spring-boot-starter/src/main/java/rpc/abg/boot/TurboClientAware.java

Core symbols most depended-on inside this repo

unsafe
called by 186
abg-utils/src/main/java/rpc/abg/util/UnsafeUtils.java
getName
called by 172
abg-jmh/src/main/java/rpc/abg/benchmark/bean/User.java
put
called by 122
abg-utils/src/main/java/rpc/abg/util/FastMap.java
byteToHexLE
called by 103
abg-utils/src/main/java/rpc/abg/util/HexUtils.java
register
called by 68
abg-cloud/src/main/java/rpc/abg/registry/Register.java
equals
called by 56
abg-utils/src/main/java/rpc/abg/util/uuid/ObjectId.java
info
called by 56
abg-jcl/src/main/java/org/apache/commons/logging/Log.java
isInfoEnabled
called by 55
abg-jcl/src/main/java/org/apache/commons/logging/Log.java

Shape

Method 1,654
Class 256
Interface 28
Enum 3

Languages

Java100%

Modules by API surface

abg-jcl/src/main/java/org/apache/commons/logging/LogFactory.java75 symbols
abg-protostuff/src/main/java/io/protostuff/runtime/FastIdStrategy.java65 symbols
abg-jmh/src/main/java/rpc/abg/benchmark/bean/AllIntBean.java65 symbols
abg-utils/src/main/java/rpc/abg/util/FastMap.java53 symbols
abg-protostuff/src/main/java/io/protostuff/ByteBufInput.java42 symbols
abg-kryo/src/main/java/rpc/abg/serialization/kryo/ByteBufInput.java31 symbols
abg-protostuff/src/main/java/io/protostuff/ByteBufOutput.java27 symbols
abg-kryo/src/main/java/rpc/abg/serialization/kryo/ByteBufOutput.java26 symbols
abg-jmh/src/main/java/rpc/abg/benchmark/bean/User.java26 symbols
abg-cloud/src/main/java/rpc/abg/config/client/AppConfig.java23 symbols
abg-utils/src/main/java/rpc/abg/util/SystemClock.java21 symbols
abg-utils/src/main/java/rpc/abg/util/FastClearableArrayList.java21 symbols

For agents

$ claude mcp add abg-rpc \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact