天天看點

QBit開發微服務QBit開發微服務

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/48084757

QBit開發微服務

作者:chszs,版權所有,未經同意,不得轉載。部落客首頁: http://blog.csdn.net/chszs

一、QBit庫介紹

QBit是一個開源的響應式開發庫,用于建構微服務,支援JSON、HTTP、WebSocket和REST。QBit使用響應式程式設計建立彈性REST、基于雲的WebSocket、Web服務。QBit是面向移動和雲計算的SOA演進。QBit是一個很小的、輕量級的微服務開發庫,提供了對服務發現、服務健康、響應式的狀态服務、類型事件、以及Java慣用的反應式程式設計的支援。

QBit非常小且速度極快。

二、Gradle建構檔案

group 'qbit-ex'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'application'

mainClassName = "com.mammatustech.HelloWorldService"

compileJava {
    sourceCompatibility = 1.8
}

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile group: 'io.advantageous.qbit', name: 'qbit-admin', 
                                                 version: '0.9.0-M1'
    compile group: 'io.advantageous.qbit', name: 'qbit-vertx', 
                                                 version: '0.9.0-M1'

}
           

目前QBit微服務庫最新版為0.9.0.M2版。

三、用QBit寫示例代碼

package com.mammatustech;

import io.advantageous.qbit.admin.ManagedServiceBuilder;
import io.advantageous.qbit.annotation.RequestMapping;

@RequestMapping("/hello")
public class HelloWorldService {

    @RequestMapping("/hello")
    public String hello() {
        return "hello " + System.currentTimeMillis();
    }

    public static void main(final String... args) {
        final ManagedServiceBuilder managedServiceBuilder =
                ManagedServiceBuilder.managedServiceBuilder()
                                     .setRootURI("/root");

        /* Start the service. */
        managedServiceBuilder.addEndpointService(new HelloWorldService())
                .getEndpointServerBuilder()
                .build().startServer();

    }
}
           

四、運作代碼

# gradle run
           

五、用curl測試

$ curl http://localhost:8080/root/hello/hello
"hello 1440742489358"
           

六、用wrk測試

wrk是一個開源的HTTP基準測試工具。當wrk在單個多核CPU上運作時,能夠産生顯著的負載,它結合了多線程設計和可擴充的事件通知系統(如epoll和kqueue)。

wrk還提供了一個可選的LuaJIT腳本,可用于執行HTTP請求的産生、響應的處理,以及自定義報表。

首頁:

https://github.com/wg/wrk
$ wrk -d 5s -t 2 -c 1000 http://localhost:8080/root/hello/hello
Running 5s test @ http://localhost:8080/root/hello/hello
  2 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    17.65ms   22.96ms 427.36ms   97.57%
    Req/Sec    33.33k     7.75k   43.10k    75.00%
  319154 requests in 5.06s, 28.00MB read
Requests/sec:  63083.97
Transfer/sec:      5.53MB