Browse Source

Update 2.3.0 (#6356)

Redkale 4 years ago
parent
commit
b8917c6891

+ 16 - 8
frameworks/Java/redkale/README.md

@@ -4,32 +4,36 @@ This is the Redkale portion of a [benchmarking test suite](../) comparing a vari
 
 ### Plaintext Test
 
-* [Plaintext test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [Plaintext test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ### JSON Serialization Test
 
-* [JSON test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [JSON test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ### Database Query Test
 
-* [Database Query test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [Database Query test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ### Database Queries Test
 
-* [Database Queries test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [Database Queries test source](src/main/java/org/redkalex/benchmark/Service.java)
+
+### Database Caching Test
+
+* [Database Queries test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ### Database Update Test
 
-* [Database Update test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [Database Update test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ### Template rendering Test
 
-* [Template rendering test source](src/main/java/org/redkalex/benchmark/Servlet.java)
+* [Template rendering test source](src/main/java/org/redkalex/benchmark/Service.java)
 
 ## Versions
 
-* [Java OpenJDK 1.8](http://openjdk.java.net/)
-* [Redkale 1.9.3](http://redkale.org/)
+* [Java OpenJDK 11](http://openjdk.java.net/)
+* [Redkale 2.3.0](http://redkale.org/)
 
 ## Test URLs
 
@@ -49,6 +53,10 @@ This is the Redkale portion of a [benchmarking test suite](../) comparing a vari
 
     http://localhost:8080/queries?queries=5
 
+### Database Caching Test
+
+    http://localhost:8080/cached-worlds?count=5
+
 ### Database Update Test
 
     http://localhost:8080/updates?queries=5

+ 24 - 7
frameworks/Java/redkale/benchmark_config.json

@@ -3,12 +3,7 @@
   "tests": [{
     "default": {
       "json_url": "/json",
-      "plaintext_url": "/plaintext",
-      "db_url2": "/db",
-      "query_url2": "/queries?queries=",
-      "fortune_url2": "/fortunes",
-      "update_url2": "/updates?queries=",
-      "cached_query_url2": "/cached-worlds?count=",
+      "plaintext_url": "/plaintext",      
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
@@ -18,7 +13,29 @@
       "flavor": "None",
       "orm": "Raw",
       "platform": "Redkale",
-      "webserver": "None",
+      "webserver": "Redkale",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "redkale",
+      "notes": "",
+      "versus": ""
+    },
+	"postgres": {
+      "db_url": "/db",
+      "query_url": "/queries?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/updates?queries=",
+      "cached_query_url": "/cached-worlds?count=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "Redkale",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "Redkale",
+      "webserver": "Redkale",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "redkale",

+ 10 - 8
frameworks/Java/redkale/conf/application.xml

@@ -4,23 +4,25 @@
     
     <!--  see: http://redkale.org/redkale.html#redkale_confxml  -->
     
-    <resources>	    
-        <executor threads="0"/>	    
-	<properties>		
+    <resources>
+		<executor threads="0"/>
+		<properties>		
             <property name="system.property.http.response.header.server" value="redkale"/>
             <property name="system.property.http.response.header.connection" value="none"/>
         </properties>
     </resources> 
         
-    <server protocol="HTTP" host="0.0.0.0" port="8080">  
+    <server protocol="HTTP" host="0.0.0.0" port="8080">      
+                
         <response>
-	    <contenttype plain="text/plain" json="application/json"/>  
-	    <date period="1000"/>
-	</response>
+			<contenttype plain="text/plain" json="application/json"/>  
+			<date period="1000"/>
+		</response>
 
         <services autoload="true"/>        
         <rest autoload="true"/>
-        <servlets autoload="true"/>        
+        <servlets autoload="true"/>
+        
     </server>
     
 </application>

+ 0 - 1
frameworks/Java/redkale/conf/persistence.xml

@@ -6,7 +6,6 @@
         <shared-cache-mode>ALL</shared-cache-mode>
         <properties>
             <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://tfb-database:5432/hello_world"/>
-            <property name="javax.persistence.connections.limit" value="56"/>
             <property name="javax.persistence.jdbc.user" value="benchmarkdbuser"/>
             <property name="javax.persistence.jdbc.password" value="benchmarkdbpass"/>
         </properties>

+ 12 - 0
frameworks/Java/redkale/redkale-postgres.dockerfile

@@ -0,0 +1,12 @@
+FROM maven:3.6.1-jdk-11-slim as maven
+WORKDIR /redkale
+COPY src src
+COPY conf conf
+COPY pom.xml pom.xml
+RUN mvn package -q
+
+FROM openjdk:11.0.3-jdk-slim
+WORKDIR /redkale
+COPY conf conf
+COPY --from=maven /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]

+ 37 - 31
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/Service.java

@@ -7,6 +7,8 @@ package org.redkalex.benchmark;
 
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
 import javax.annotation.Resource;
 import org.redkale.net.http.*;
 import org.redkale.service.AbstractService;
@@ -27,10 +29,6 @@ public class Service extends AbstractService {
     @Resource
     private DataSource source;
 
-    @Override
-    public void init(AnyValue conf) {
-        //source.queryList(CachedWorld.class);
-    }
 
     @RestMapping(name = "json")
     public Message getHelloMessage() {
@@ -42,25 +40,8 @@ public class Service extends AbstractService {
         return helloBytes;
     }
 
-    @RestMapping(name = "db")
-    public CompletableFuture<World> findWorld() {
-        return source.findAsync(World.class, randomId());
-    }
-
-    @RestMapping(name = "queries")
-    public CompletableFuture<World[]> queryWorld(@RestParam(name = "queries") int count) {
-        final int size = Math.min(500, Math.max(1, count));
-        final World[] worlds = new World[size];
-        final CompletableFuture[] futures = new CompletableFuture[size];
-        for (int i = 0; i < size; i++) {
-            final int index = i;
-            futures[index] = source.findAsync(World.class, randomId()).thenApply(r -> worlds[index] = r);
-        }
-        return CompletableFuture.allOf(futures).thenApply(v -> worlds);
-    }
-
     @RestMapping(name = "cached-worlds")
-    public CachedWorld[] cachedWorlds(@RestParam(name = "count") int count) {
+    public CachedWorld[] cachedWorlds(int count) {
         final int size = Math.min(500, Math.max(1, count));
         final CachedWorld[] worlds = new CachedWorld[size];
         for (int i = 0; i < size; i++) {
@@ -69,19 +50,44 @@ public class Service extends AbstractService {
         return worlds;
     }
 
+    @RestMapping(name = "db")
+    public CompletableFuture<World> findWorldAsync() {
+        return source.findAsync(World.class, randomId());
+    }
+
+    @RestMapping(name = "queries")
+    public CompletableFuture<World[]> queryWorldAsync(int queries) {
+        final int size = Math.min(500, Math.max(1, queries));
+        final World[] worlds = new World[size];
+        final AtomicInteger index = new AtomicInteger();
+        final Function<?, CompletableFuture> func = f -> source.findAsync(World.class, randomId())
+            .thenAccept((World v) -> worlds[index.getAndIncrement()] = v);
+        CompletableFuture future = func.apply(null);
+        for (int i = 1; i < size; i++) {
+            future = future.thenCompose(func);
+        }
+        return future.thenApply(v -> worlds);
+    }
+
     @RestMapping(name = "updates")
-    public CompletableFuture<World[]> updateWorld(@RestParam(name = "queries") int count) {
-        final int size = Math.min(500, Math.max(1, count));
+    public CompletableFuture<World[]> updateWorldAsync(int queries) {
+        final int size = Math.min(500, Math.max(1, queries));
         final World[] worlds = new World[size];
-        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((World r) -> {
-                r.setRandomNumber(randomId());
-                worlds[index] = r;
+        final AtomicInteger index = new AtomicInteger();
+        final Function<?, CompletableFuture> func = f -> source.findAsync(World.class, randomId())
+            .thenApply((World v) -> {
+                worlds[index.getAndIncrement()] = v;
+                v.setRandomNumber(randomId());
+                return v;
             });
+        CompletableFuture future = func.apply(null);
+        for (int i = 1; i < size; i++) {
+            future = future.thenCompose(func);
         }
-        return CompletableFuture.allOf(futures).thenCompose(v -> source.updateAsync(worlds)).thenApply(v -> worlds);
+        return future.thenCompose(v -> {
+            Arrays.sort(worlds);
+            return source.updateAsync(worlds);
+        }).thenApply(v -> worlds);
     }
 
     @RestMapping(name = "fortunes")