事务场景

场景

供给Restful API接口直接读取Redis中的缓存数据,Redis的数据是通过MQ异步扔进去的。

目标

供给可靠的快速查询API服务,支持服务横向扩展。

目标

按照 500 个连接进行计算,服务器本钱也是考量f = – w的一部1 ` m 9 L p 5 V分。暂时不考虑公网、带宽、网关的影响。

} % K一种技能

发动, % H Y V f O设置

/usr/bb J y { W v | min/javj | Oa -XX:M@ ~  E G oetaspaceSC N y vize=64m -XX:MaxMetaspacf J W j ( yeSize=256m -Xmx768m -Xms76} ; | T h D %8m -XX:NewSize=1 -Xss256k -jar ps1.jar

压测成果

[root@tech, U S f-0001 wrk]# wrk -t4 -c500 -d60s 'http://127.0.0.1:9021/hotdog/redis?key=aaa' --latency -- / 16
Running 1m te? , C p Rst @ http://127.0.0.1:9021/hotb ? ( l b V : n 7dog/redis?key=aaa
  4 threads and 500 connections
  Thread Stal Z f L s & $ @ ;ts   Avg      St? 2 Qdev     Max   +/-0 + C Stdev
    Latency   114.57ms   12.10ms 313.86ms   98.16%
    Req/Sec     1.10k    88.43     1.26k    89.51%
  Latency Distribution
     50%  113.75ms
     75%  115.66ms
     90%  117.58ms
     99%  134.86ms
  262303 requests in 1.00m, 82.55MB read
Requests/sec:   4366.86
Transfer/sec:      1.37MB

第二种技能

发动配置

java -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=1W u { X z28m -Xmx256m -Xms256m -XX:NewSize=1 -Xss256k -jar ps2-fat.jar run com.tech.luckin.MainVerticle

压测成果

[root@jiaomatech-0001 wrk]# wrk -t4 -c500 -d60s 'http://127.0.0.1:8081/app/redis?key=aaa' --latency -- / 16
Running 1m test @ http:/* # j b % 5 K J/127.0.0.1:808k o t g  p1/app/redis?key=aaa
  4 threads and 500 con1 U + B 4 ^ C Enections
  Thread Stats   Avg      Stde| u ) D $ _ Hv     Max   +/- Stdev
    Latency    3c e p Y7.45ms   54.67ms 228.47ms   83.90%
    Req5 R 1 } A # e U Q/Sec     9.17k     4.36k   14.08k    72.72%
  Latency Distribution
     50%   10.12ms
     75%   22.99ms
     90%s 3 * O Z ` | i  140.38ms
     99%  206.51ms
  1959728 requests in 1.00m, 80.36MB read
Requests/sec:  32635.44
Transfer/sec:      1.34MB

存疑

稳定性

第一种技能的标准差很低,服务稳定性很高,第二种相对没有优势。

Qv 2 v Y zPS

第二种技能的均匀QPS到达 32635.44 Reques| M ( 5 [ ` |ts/sec。是第一种技能的7.5倍,没超越10倍,也算有不错优势。

均匀响应

第二种技能的均匀耗时N b r * h t & 6 B37.45ms。而第二种的均匀耗时是114.57ms,大约差3倍

服务器本钱

第二种技能的可以在低内存下供给不v & o r ^ D l错的性能,[ v 0 )而第一种技能在低内存下发动都存在问题。

然后

不同的场景下,每种技能结构的优缺点都有所不同,觉得异构结构是种不错的计划,让适宜的工具做正确的工作。针对当前的场景,你会选择哪一种技能作为你? v ; 0 W的计划呢?

我想选第一种!!!