Browse Source

Update 2.4.0 (#6540)

* Update 2.4.0
Redkale 4 years ago
parent
commit
19331abd00

+ 2 - 2
frameworks/Java/redkale/benchmark_config.json

@@ -37,7 +37,7 @@
                 "webserver": "Redkale",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "redkale",
+                "display_name": "redkale-j8",
                 "notes": "",
                 "versus": "Redkale"
             },
@@ -61,7 +61,7 @@
             },
             "postgres": {
                 "db_url": "/db",
-                "query_url2": "/queries?q=", 
+                "query_url": "/queries?q=", 
                 "fortune_url2": "/fortunes",
                 "update_url2": "/updates?q=",
                 "port": 8080,

+ 2 - 1
frameworks/Java/redkale/conf/application.xml

@@ -5,8 +5,9 @@
     <resources>
         <executor threads="0"/>
         <properties>    
-            <property name="system.property.convert.tiny" value="false"/>    
+            <property name="system.property.convert.tiny" value="false"/>      
             <property name="system.property.net.invoker.max.onstack" value="24"/>
+            <property name="system.property.http.request.pipeline.sameheaders" value="true"/>  
             <property name="system.property.http.response.header.server" value="redkale"/>
             <property name="system.property.http.response.header.connection" value="none"/>
         </properties>

+ 12 - 11
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/Service.java

@@ -8,6 +8,7 @@ package org.redkalex.benchmark;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import javax.annotation.Resource;
+import org.redkale.net.ChannelContext;
 import org.redkale.net.http.*;
 import org.redkale.service.AbstractService;
 import org.redkale.source.*;
@@ -22,7 +23,7 @@ public class Service extends AbstractService {
 
     private static final byte[] helloBytes = "Hello, world!".getBytes();
 
-    private final Random random = new Random();
+    private final ThreadLocal<Random> localRandom = ThreadLocal.withInitial(Random::new);
 
     @Resource
     private DataSource source;
@@ -40,32 +41,34 @@ public class Service extends AbstractService {
     }
 
     @RestMapping(name = "db")
-    public CompletableFuture<World> findWorldAsync() {
-        return source.findAsync(World.class, randomId());
+    public CompletableFuture<World> findWorldAsync(ChannelContext context) {
+        return source.findAsync(World.class, context, 1 + localRandom.get().nextInt(10000));
     }
 
     @RestMapping(name = "queries")
-    public CompletableFuture<World[]> queryWorldAsync(int q) {
+    public CompletableFuture<World[]> queryWorldAsync(ChannelContext context, int q) {
         final int size = Math.min(500, Math.max(1, q));
         final World[] worlds = new World[size];
+        final Random random = localRandom.get();
         final CompletableFuture[] futures = new CompletableFuture[size];
         for (int i = 0; i < size; i++) {
             final int index = i;
-            futures[index] = source.findAsync(World.class, randomId()).thenAccept(v -> worlds[index] = v);
+            futures[index] = source.findAsync(World.class, context, 1 + random.nextInt(10000)).thenAccept(v -> worlds[index] = v);
         }
         return CompletableFuture.allOf(futures).thenApply(v -> worlds);
     }
 
     @RestMapping(name = "updates")
-    public CompletableFuture<World[]> updateWorldAsync(int q) {
+    public CompletableFuture<World[]> updateWorldAsync(ChannelContext context, int q) {
         final int size = Math.min(500, Math.max(1, q));
         final World[] worlds = new World[size];
+        final Random random = localRandom.get();
         final CompletableFuture[] futures = new CompletableFuture[size];
         for (int i = 0; i < size; i++) {
             final int index = i;
-            futures[index] = source.findAsync(World.class, randomId()).thenAccept(v -> worlds[index] = v.randomNumber(randomId()));
+            futures[index] = source.findAsync(World.class, context, 1 + random.nextInt(10000)).thenAccept(v -> worlds[index] = v.randomNumber(1 + random.nextInt(10000)));
         }
-        return CompletableFuture.allOf(futures).thenCompose(v -> source.updateAsync(World.sort(worlds))).thenApply(v -> worlds);
+        return CompletableFuture.allOf(futures).thenCompose(v -> source.updateAsync(context, World.sort(worlds))).thenApply(v -> worlds);
     }
 
     @RestMapping(name = "fortunes")
@@ -86,13 +89,11 @@ public class Service extends AbstractService {
         }
         final int size = Math.min(500, Math.max(1, q));
         final CachedWorld[] worlds = new CachedWorld[size];
+        final Random random = localRandom.get();
         for (int i = 0; i < size; i++) {
             worlds[i] = cache.findAt(random.nextInt(10000));
         }
         return worlds;
     }
 
-    private int randomId() {
-        return 1 + random.nextInt(10000);
-    }
 }