国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

并行的RPC框架(Concurrent RPC Framework) Yar Java Client

wh469012917 / 2044人閱讀

摘要:客戶端并行調用這兩個服務這里的方法的命令皆以原版為準則。回調函數需要繼承實現里面定義了兩個方法是針對并行調用發出之后立即執行的任務,而則是每個請求之后返回的結果。

簡介

Yar 是一個輕量級, 高效的 RPC 框架, 它提供了一種簡單方法來讓 PHP 項目之間可以互相遠程調用對方的本地方法. 并且 Yar 也提供了并行調用的能力. 可以支持同時調用多個遠程服務的方法.
Yar 鳥哥博客介紹 http://www.laruence.com/2012/09/15/2779.html
Yar 鳥哥原始項目 https://github.com/laruence/yar
Yar Java Client 則實現了跨語言的遠程調用。使得 Java 客戶端能夠調用 Yar PHP 服務器端本地的方法。

github: https://github.com/zhoumengkang/yar-java-client
您的 star 就是對我們小菜的最大的鼓勵,O(∩_∩)O~~

特性

執行速度快,依舊保持鳥哥初衷,框架輕,使用簡單

支持并行的 RPC 調用

方法的使用和參數的和 PHP 版本保持一致

范例 PHP服務器端提供了服務

兩個 rpc api ,模擬的業務場景是點贊贈送金幣和發布帖子贈送金幣。

handle();
Java客戶端同步調用這兩個服務
public class YarClientTest extends TestCase {
    /**
     * 定義 rpc 接口
     */
    public interface RewardScoreService{
        String support(int uid,int fid);
        String post(int uid,int fid);
    }

    /**
     * rpc api 地址
     */
    static String uri = "http://mengkang.net/demo/yar-server/RewardScoreService.php";

    public void testUserService(){
        // 第一種調用方式
        YarClient yarClient  = new YarClient(uri);
        RewardScoreService rewardScoreService = (RewardScoreService) yarClient.useService(RewardScoreService.class);
        for (int i = 0; i < 10; i++) {
            System.out.println(rewardScoreService.support(1, 2));
        }
        // 第二種調用方式
        YarClientOptions yarClientOptions = new YarClientOptions();
        yarClientOptions.setConnect_timeout(2000);
        YarClient yarClient2  = new YarClient(uri,yarClientOptions);
        RewardScoreService rewardScoreService2 = (RewardScoreService) yarClient2.useService(RewardScoreService.class);
        for (int i = 0; i < 10; i++) {
            System.out.println(rewardScoreService2.post(1, 20));
        }
    }

}

考慮到 Java 和 PHP 的數據類型的不同,這里做了一個折中的處理,返回數據類型客戶端框架統一以Object類型接受,然后使用時再根據接口定義的數據類型進行轉換。

Java客戶端并行調用這兩個服務

這里的方法的命令皆以 Yar 原版為準則。
YarConcurrentClient.call方法注冊,
YarConcurrentClient.loop并行調用,
YarConcurrentClient.reset清空任務。
回調函數需要繼承實現YarConcurrentCallback里面定義了兩個方法:async是針對并行調用發出之后立即執行的任務,而success則是每個請求之后返回的結果。

public class YarConcurrentClientTest extends TestCase {

    /**
     * rpc api 地址
     */
    static String uri = "http://mengkang.net/demo/yar-server/RewardScoreService.php";

    public class callback extends YarConcurrentCallback {

        public void async() {
            System.out.println("現在, 所有的請求都發出去了, 還沒有任何請求返回");
        }

        public Object success() {
            return retValue;
        }

    }

    public class errorCallback extends YarConcurrentErrorCallback {
        @Override
        void error() {
            System.out.println("出錯了");
        }
    }

    public void testLoop() throws Exception {

        String packagerName = YarConfig.getString("yar.packager");
        YarClientOptions yarClientOptions = new YarClientOptions();
        yarClientOptions.setConnect_timeout(2000);

        for (int i = 0; i < 10; i++) {
            // 第一種調用方式
            YarConcurrentClient.call(new YarConcurrentTask(uri, "support", new Object[]{1, 2}, packagerName, new callback()));
            // 第二種調用方式 增加一些額外配置選項
            YarConcurrentClient.call(new YarConcurrentTask(uri, "support", new Object[]{1, 2}, packagerName, new callback(),yarClientOptions));
        }

        for (int i = 0; i < 10; i++) {
            // 第三種調用方式 有正確的回調和錯誤的回調
            YarConcurrentClient.call(new YarConcurrentTask(uri,"post",new Object[]{1,2},packagerName,new callback(),new errorCallback()));
            // 第四種調用方式 在第三種的基礎上增加額外的配置選項
            YarConcurrentClient.call(new YarConcurrentTask(uri,"post",new Object[]{1,2},packagerName,new callback(),new errorCallback(),yarClientOptions));
        }

        YarConcurrentClient.loop(new callback());
        YarConcurrentClient.reset();
    }
}

github: https://github.com/zhoumengkang/yar-java-client
您的 star 就是對我們小菜的最大的鼓勵,O(∩_∩)O~~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65326.html

相關文章

  • phpcms 里面 Yar 使用

    摘要:的框架的話語言的話首選的當然是鳥哥的,支持并行等等,總之有很多優點。首先查看了鳥哥的文章并行的框架,對的基本原理有了一個認識,做了一個簡單的請求頁面,具體見鳥哥博客,沒問題,接下來就是對現有項目的改造了。最后感謝鳥哥寫出這么牛掰的東西。 公司新上了個頻道,需要我負責的幾個頻道提供接口,因為進度比較趕,就直接寫了web的 http 接口供同事訪問。 后來訪問量越來越大,出現了很多問題,...

    chnmagnus 評論0 收藏0
  • SOA面向服務基礎

    摘要:面向服務面向服務的基礎面向服務的三層應用層,服務層,數據層應用層用于給用戶展示,,,,安卓。在服務器端,進程保持睡眠狀態直到調用信息到達為止。編譯完成,提示我們已經在下了。 面向服務 面向服務的基礎 面向服務的三層:應用層,服務層,數據層 * 應用層:用于給用戶展示,PC,H5,IOS,安卓。 * 服務層:業務邏輯,提供接口(商品,訂單,支付,用戶,物流)。 * 數據層:提供數據支持(...

    songze 評論0 收藏0
  • 服務治理深入淺出(2)- 遠程方法調用實現

    摘要:需求在了解了前面我們關于服務治理出現的必要性之后。我們知道服務治理是建立在眾多服務基礎之上的,那么,第一步,打通這些服務是基礎,也就是我們常說的遠程調用。上面執行遠程調用也類似。 需求 在了解了前面我們關于服務治理出現的必要性之后。我們知道服務治理是建立在眾多服務基礎之上的,那么,第一步,打通這些服務是基礎,也就是我們常說的 RPC 遠程調用。要像調用本地方法一樣調用遠程服務器上的方法...

    hidogs 評論0 收藏0
  • 記JVM堆外內存泄漏Bug查找

    摘要:服務本身是一個,開起的線程數為,再加上一些其他線程,總的線程數不會超過服務內自己沒有顯示創建線程或者使用線程池。問題解決找到所在后,結局方案很簡單,只需將的通過單例的方式注入到服務中,即可解決堆外內存泄漏的問題。 內存泄漏Bug現場 一個做BI數據展示的服務在一個晚上重啟了5次,由于是通過k8s容器編排,服務掛了以后會自動重啟,所以服務還能繼續提供服務。 第一時間先上日志系統查看錯誤日...

    hiYoHoo 評論0 收藏0
  • 基于YarWordPress微博墻插件

    摘要:微博墻就是這樣的一個工具,這不是一款普通的插件,這是一款搭建在基于的插件。這是一款基于的插件,底層語言開發,性能卓越。 在現在移動互聯網時代,微博已經成為了每個人生活中必不可少的一個社交工具。而WordPress是全世界最為流行的博客系統,把你的博客接入新浪微博,借助微博的強大用戶群,不僅能給你的網站提供巨大的流量,而且還能帶來不可估量價值。 WordPress微博墻就是這樣的一個工具...

    james 評論0 收藏0

發表評論

0條評論

wh469012917

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<