Need help with Jupiter?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

fengjiachun
1.4K Stars 560 Forks Apache License 2.0 1.7K Commits 8 Opened issues

Description

Jupiter是一款性能非常不错的, 轻量级的分布式服务框架

Services available

!
?

Need anything else?

Contributors list

# 7,972
Java
Shell
Clojure
Spring
1101 commits
# 216,790
Spring
Java
service...
rpc-fra...
5 commits
# 216,270
Spring
Java
service...
rpc-fra...
5 commits
# 76,292
Spring
service...
rpc-fra...
kryo
2 commits
# 121,719
solidit...
sar
blender
jvm-lan...
1 commit
# 25,888
Shell
gRPC
c-sharp
Nim
1 commit
# 250,272
s3
aws-s3
C++
C
1 commit
# 357,361
Spring
Java
service...
rpc-fra...
1 commit

License Maven Central Build Status Code Quality: Java Total Alerts

Jupiter:

  • Jupiter 是一款性能非常不错的, 轻量级的分布式服务框架

Jupiter Architecture:

       ═ ═ ═▷ init         ─ ─ ─ ▷ async       ──────▶ sync
----------------------------------------------------------------------------------------

                        ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
                                   ┌ ─ ─ ─ ┐ │
       ─ ─ ─ ─ ─ ─ ─ ─ ─│ Registry  Monitor ───────────────────────────┐
      │                            └ ─ ─ ─ ┘ │                         │
                        └ ─ ─△─ ─ ─ ─ ─△─ ─ ─                          ▼
      │                                                           ┌ ─ ─ ─ ─
    Notify                   ║         ║                            Telnet │
      │         ═ ═ ═ ═ ═ ═ ═           ═ ═ ═ ═ ═ ═ ═ ═ ═         └ ─ ─ ─ ─
               ║                                         ║             ▲
      │    Subscribe                                  Register         │
               ║                                         ║             │
      │  ┌ ─ ─ ─ ─ ─                          ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─    │
                    │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ▷           ┌ ─ ─ ─ ┐ │   │
      └ ▷│ Consumer           Invoke          │ Provider  Monitor ─────┘
                    │────────────────────────▶           └ ─ ─ ─ ┘ │
         └ ─ ─ ─ ─ ─                          └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

RELEASE-NOTES

性能:

文档:

一次 RPC 调用:

感谢 @远墨 提供的图

快速开始:

工程依赖:
  • JDK1.8 或更高版本
  • 依赖管理工具: Maven3.x 版本
最新版本OSS下载
最新版本Maven中心仓库下载
Maven依赖:
    org.jupiter-rpc
    jupiter-all
    ${jupiter.version}

简单调用示例:
1. 创建服务接口:
@ServiceProvider(group = "test", name = "serviceTest")
public interface ServiceTest {
    String sayHelloString();
}

@ServiceProvider: - 建议每个服务接口通过此注解来指定服务信息, 如不希望业务代码对jupiter依赖也可以不使用此注解而手动去设置服务信息 + group: 服务组别(选填, 默认组别为'Jupiter') + name: 服务名称(选填, 默认名称为接口全限定名称)

2. 创建服务实现:
@ServiceProviderImpl(version = "1.0.0")
public class ServiceTestImpl implements ServiceTest {

@Override
public String sayHelloString() {
    return "Hello jupiter";
}

}

@ServiceProviderImpl: - 建议每个服务实现通过此注解来指定服务版本信息, 如不希望业务代码对jupiter依赖也可以不使用此注解而手动去设置版本信息 + version: 服务版本号(选填, 默认版本号为'1.0.0')

3. 启动注册中心:
- 选择1: 使用 jupiter 默认的注册中心:
public class HelloJupiterRegistryServer {

public static void main(String[] args) {
    // 注册中心
    RegistryServer registryServer = RegistryServer.Default.createRegistryServer(20001, 1);
    try {
        registryServer.startRegistryServer();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

}

- 选择2: 使用 zookeeper 作为注册中心:
默认注册中心只建议在测试环境使用, 线上建议使用 zookeeper 实现

// 设置使用 zookeeper 作为注册中心 JServer server = new DefaultServer(RegistryService.RegistryType.ZOOKEEPER) JClient client = new DefaultClient(RegistryService.RegistryType.ZOOKEEPER)

在 server 和 client 中配置 jupiter-registry-zookeeper 依赖(jupiter-all 包含 jupiter-registry-zookeeper)

org.jupiter-rpc jupiter-registry-zookeeper ${jupiter.version}
4. 启动服务提供(Server):
public class HelloJupiterServer {

public static void main(String[] args) throws Exception {
    JServer server = new DefaultServer().withAcceptor(new JNettyTcpAcceptor(18090));
    // provider
    ServiceTestImpl service = new ServiceTestImpl();
    // 本地注册
    ServiceWrapper provider = server.serviceRegistry()
            .provider(service)
            .register();
    // 连接注册中心
    server.connectToRegistryServer("127.0.0.1:20001");
    // 向注册中心发布服务
    server.publish(provider);
    // 启动server
    server.start();
}

}

5. 启动服务消费者(Client)
public class HelloJupiterClient {

public static void main(String[] args) {
    JClient client = new DefaultClient().withConnector(new JNettyTcpConnector());
    // 连接RegistryServer
    client.connectToRegistryServer("127.0.0.1:20001");
    // 自动管理可用连接
    JConnector.ConnectionWatcher watcher = client.watchConnections(ServiceTest.class);
    // 等待连接可用
    if (!watcher.waitForAvailable(3000)) {
        throw new ConnectFailedException();
    }

    ServiceTest service = ProxyFactory.factory(ServiceTest.class)
            .version("1.0.0")
            .client(client)
            .newProxyInstance();

    service.sayHelloString();
}

}

Server/Client 代码示例

新特性

v1.3 新增

InvokeType.AUTO
, 当你的接口返回值是一个
CompletableFuture
或者它的子类将自动适配为异步调用, 否则为同步调用 具体 demo 请参考这里
结合Spring使用示例:
1. Server端配置:
 
    



2. Client 端配置:
 
    




    
    
    
    
    
    
    
        
        
    

SpringServer/SpringClient 代码示例

更多示例代码

其他

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.