Akka框架效能的簡單測試分析

2021-08-27 22:48:15 字數 1712 閱讀 8773

因為最近工作的關係,要把非同步任務從應用伺服器中拆分到專門的非同步處理伺服器中.

是採用mq的方式將任務訊息發出,在服務端進行處理,如下圖所示:

這種方案是採用mq作為中間的媒介,在服務端採用執行緒池非同步處理任務,處理完成之後將結果傳送到mq中,客戶端採用偵聽的方式得到結果繼續進行處理。

這種方案的不足是,可能在某些需求的情況下,需要將結果存放到共享的hashmap或者threadlocal中進行存放結果,客戶端會一直阻塞,直到得到結果,從多執行緒的角度來說,還是用了共享變數,雖然共享變數可能是執行緒安全的,但是從併發模型的角度來講,並不是乙個最好的方式。

採用比較流行的akka框架來實現。

akka的五大特性

因為之前一直研究scala,scala的多執行緒處理的效能是非常高的,那基於scala語言而開發出來的akka框架得到了廣泛使用。那麼接下來我將使用乙個非常簡單的例子,以及一些測試用例展現一下它的效能。

**如下:

import akka.actor.actorref;

import akka.actor.actorsystem;

import akka.actor.props;

import akka.actor.untypedactor;

/** * project_name: akkademo

* date: 16/2/27

* create by: chao.cheng

**/public

class

tostringactor

extends

untypedactor

catch (exception e)

}public

static

void

main

(string args)

system.out.println("[結束]********************===");}}

程式的簡單說明:

採用事件的機制,迴圈傳送一千萬條資料,通過onreceive方法非同步處理任務。

用visualvm工具截圖可以看到:

後台其實自適應只起了三個執行緒在執行,分別是dispatcher-2,dispatcher-3,dispatcher-4。

正在分析效能耗時。

伺服器整體cpu佔比時間為15.9%。

Akka效能測試

akka承諾高併發。那麼有什麼更好的方式來模擬呢?讓它處理1000萬資訊花費多少時間,使用普通硬體和軟體並且沒有任何低階別的微調。這個例子使用akka產生1000萬條資訊,計算處理它們所花費的時間。該程式演示了路由的概念,roundrobinrouter是用於將負載分發到一組worker工作者上面,...

簡單的測試框架

使用註解來寫乙個計算器類的測試框架 public class calculator 減法 check public void sub 乘法 check public void mul 除法 check public void div public void show target elementty...

手機的效能測試分析

進入年,國產手機廠商利空訊息頻頻傳來,這和市場格局變化導致國產手機廠商在原先的一些渠道 品種等方面的優勢逐漸喪失有關,但是還有乙個不容忽視的原因是國產手機的質量問題過多,產品穩定性差,突出的問題有 自動關機 宕機 掉線 通話質量差 雜音大等。這些問題中的大部分都是可以通過充分的效能測試 來避免或減少...