License Maven Central Build Status

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

####Jupiter Architecture:

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

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

---------------------------------------------------------------------------------------

####性能: - 小数据包请求(不带业务)在四核刀片服务器上可达到17w+的tps, 详情见 Benchmark

####文档: - Wiki

####快速入门:

#####工程依赖: + JDK1.7或更高版本 + 依赖管理工具: Maven3.x版本

#####最新版本OSS下载 #####最新版本Maven中心仓库下载 #####Maven依赖:

<properties>
    <jupiter.version>1.2.3</jupiter.version>
</properties>

<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-rpc</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<!-- 传输层 -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-transport-netty</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<!-- 序列化/反序列化, 可选择只其中依赖一种或者同时依赖多种 -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-serialization-hessian</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-serialization-java</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-serialization-kryo</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-serialization-protostuff</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<!-- 注册中心, jupiter-registry-zookeeper/jupiter-registry-default二选一 -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-registry-default</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<!-- 集成Spring支持, 如不集成Spring可不依赖 -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-spring-support</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>4.3.0.RELEASE</version>
</dependency>
<!-- telnet监控模块(可选) -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-monitor</artifactId>
   <version>${jupiter.version}</version>
</dependency>
<!-- flightexec(可选) -->
<dependency>
   <groupId>org.jupiter-rpc</groupId>
   <artifactId>jupiter-flightexec</artifactId>
   <version>${jupiter.version}</version>
</dependency>

#####简单调用示例: 1. 创建服务接口: > @ServiceProvider(group = “test”, name = “serviceTest”) > public interface ServiceTest { > String sayHelloString(); > } > > @ServiceProvider: > - 建议每个服务接口通过此注解来指定服务信息, 如不希望业务代码对jupiter依赖也可以不使用此注解而手动去设置服务信息 > + group: 服务组别(选填, 默认组别为’Jupiter’) > + name: 服务名称(选填, 默认名称为接口全限定名称)

  1. 创建服务实现: > @ServiceProviderImpl(version = “1.0.0”) > public class ServiceTestImpl implements ServiceTest { > > @Override > public String sayHelloString() { > return “Hello jupiter”; > } > } > > @ServiceProviderImpl: > - 建议每个服务实现通过此注解来指定服务版本信息, 如不希望业务代码对jupiter依赖也可以不使用此注解而手动去设置版本信息 > + version: 服务版本号(选填, 默认版本号为’1.0.0’)

  2. 启动注册中心: > 选择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实现 > 在server和client中配置jupiter-registry-zookeeper依赖并去除jupiter-registry-default依赖即可, 无需其他改动 > > > org.jupiter-rpc > jupiter-registry-zookeeper > ${jupiter.version} >

  3. 启动服务提供(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(); > } > }

  4. 启动服务消费者(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(); > } > }

#####结合Spring使用示例: 1. Server端配置: > > > > > > > > > > > > > > > > > > > > > > >

  1. Client端配置: > > > > > > > > > > > > > > > > > > > > > > > > > > Server/Client代码示例

#####更多示例代码

####其他 - qq交流群: 397633380 - 邮件交流: [email protected]

Related Repositories

Jupiter

Jupiter

Jupiter 是一个轻量级的分布式服务框架 ...

OpenYourMouth

OpenYourMouth

Open Source Recipes from the Jupiter Broadcasting community ...

Jupiter-Broadcasting-Android-App

Jupiter-Broadcasting-Android-App

Jupiter Broadcasting Android App from https://play.google.com/store/apps/details?id=jupiter.broadcasting.live.tv&hl=en ...

jupiter-brain

jupiter-brain

Jupiter Brain manages servers ...

jb-roku

jb-roku

The Jupiter Broadcasting Roku channel. ...