Alipay 開源 SofaRPC

概述

SOFARPC 是一個高可擴展性、高性能、生產級的 Java RPC 框架。在螞蟻金服 SOFARPC 已經經歷了十多年及五代版本的發展。SOFARPC 致力於簡化應用之間的 RPC 調用,爲應用提供方便透明、穩定高效的點對點遠程服務調用方案。爲了用戶和開發者方便的進行功能擴展,SOFARPC 提供了豐富的模型抽象和可擴展接口,包括過濾器、路由、負載均衡等等。同時圍繞 SOFARPC 框架及其周邊組件提供豐富的微服務治理方案。java

功能特性

  • 透明化、高性能的遠程服務調用
  • 支持多種服務路由及負載均衡策略
  • 支持多種註冊中心的集成
  • 支持多種協議
  • 支持同步、單向、回調、泛化等多種調用方式
  • 支持集羣容錯、服務預熱、自動故障隔離
  • 強大的擴展功能,能夠按需擴展各個功能組件

關聯項目

須要

編譯須要 JDK 7 及以上、Maven 3.2.5 及以上。git

運行需求 JDK 6 及以上。github

 

快速入門

本文檔將演示瞭如何應用 SOFARPC 進行服務的發佈和引用。 本例將在本地模擬服務端啓動監聽一個端口併發佈一個服務,客戶端引用該服務進行直連調用。編程

您能夠直接在工程下找到本文檔的示例代碼併發

建立工程

須要安裝 JDK 6 及以上 和 Maven 3 以上.負載均衡

咱們新建一個 Maven 工程,並引入 SOFARPC 的依賴。框架

<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofa-rpc-all</artifactId>
    <version>5.3.1</version>
<dependency>

編寫服務端實現

第一步:建立接口ide

/**
 * Quick Start demo interface
 */
public interface HelloService {
    String sayHello(String string);
}

第二步:建立接口實現微服務

/**
 * Quick Start demo implement
 */
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String string) {
        System.out.println("Server receive: " + string);
        return "hello " + string + " !";
    }
}

第三步:編寫服務端代碼性能

/**
 * Quick Start Server
 */
public class QuickStartServer {

    public static void main(String[] args) {
        ServerConfig serverConfig = new ServerConfig()
                .setProtocol("bolt") // 設置一個協議,默認bolt
                .setPort(9696) // 設置一個端口,默認12200
                .setDaemon(false); // 非守護線程

        ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRef(new HelloServiceImpl()) // 指定實現
                .setServer(serverConfig); // 指定服務端

        providerConfig.export(); // 發佈服務
    }
}

編寫客戶端實現

第一步:拿到服務端接口

通常服務端會經過jar的形式將接口類提供給客戶端。而在本例中,因爲服務端和客戶端再一個工程因此跳過。

第二步:編程客戶端代碼

/**
 * Quick Start client
 */
public class QuickStartClient {
    public static void main(String[] args) {
        ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
            .setInterfaceId(HelloService.class.getName()) // 指定接口
            .setProtocol("bolt") // 指定協議
            .setDirectUrl("bolt://127.0.0.1:9696"); // 指定直連地址
        // 生成代理類
        HelloService helloService = consumerConfig.refer();
        while (true) {
            System.out.println(helloService.sayHello("world"));
            try {
                Thread.sleep(2000);
            } catch (Exception e) {
            }
        }
    }
}

運行

分別啓動服務端和客戶端,觀察運行效果。

服務端將打印:

Server receive: world

客戶端將打印:

hello world !

更多

更多示例請參考:example

SOFABoot 示例請參考:sofaboot-sample-with-rpc

 

 

來自:https://github.com/alipay/sofa-rpc

相關文章
相關標籤/搜索