1. 程式人生 > >dubbo入門例項及效能測試

dubbo入門例項及效能測試

ubbo叢集和非duboo(在同一jvm內執行)效能對比程式碼下載地址:

http://download.csdn.net/detail/lk_blog/9507435

使用例項測試注意事項:

1.下載zookeeper  地址: http://zookeeper.apache.org/releases.html

2.配置zookeeper, 解壓zookeeper後,找到conf/zoo_sample.cfg,複製一份修改檔名為zoo.cfg.

3.maven構建例項中的程式碼.

4.執行provider.java中的main方法.

5.修改 lk-dubbo-provider工程中的applicationContext.xml檔案,找到如下程式碼修改port埠為20881,

<dubbo:protocol name="dubbo" port="20880" />

並再啟動provider.java中的main方法

此時已啟動了兩個叢集,您還可以再次修改埠及啟動provider,就會變成三個叢集.

6.執行Consumer.java中的main方法啟動客戶端(dubbo方式執行).

客戶端通過多執行緒發起請求10000次,伺服器端處理時間如下:
7.修改lk-dubbo-consumer工程的pom.xml檔案,將以下程式碼的註釋去掉使之生效.
<dependency>
            <groupId>com.tgb.lk</groupId>
            <artifactId>lk-dubbo-provider</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

8.按如下方式修改lk-dubbo-consumer工程的pom.xml檔案.使用dubbo方式的改為直接使用spring注入方式.
9.再次執行Consumer.java中的main方法(此時是非dubbo方式執行).
測試類關鍵程式碼如下:
       //測試效能
        ExecutorService threadPool = Executors.newFixedThreadPool(10);
        int count = 10000;
        long start = System.currentTimeMillis();
        Future<Integer> future = null;
        for (int i = 1; i <= count; i++) {
            final int j = i;
            future = threadPool.submit(new Callable<Integer>() {
                public Integer call() throws Exception {
                    demoService.sayHello("tom " + j);
                    return j;
                }
            });
        }
        if (future != null && future.get() == count) {
            //遠端呼叫完返回後記錄結束時間
            long end = System.currentTimeMillis();
            System.out.println("consume time " + (end - start) + "ms");
        }