Ver código fonte

Update maven 3.8.4 (#6974)

Redkale 3 anos atrás
pai
commit
9792b8d22c

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

@@ -110,9 +110,9 @@
             },
             "mongodb": {
                 "db_url": "/db",
-                "query_url": "/queries?q=", 
+                "query_url2": "/queries?q=", 
                 "fortune_url": "/fortunes",
-                "update_url": "/updates?q=",
+                "update_url2": "/updates?q=",
                 "port": 8080,
                 "approach": "Realistic",
                 "classification": "Fullstack",
@@ -131,4 +131,4 @@
             }
         }
     ]
-}
+}

+ 20 - 0
frameworks/Java/redkale/conf/persistence-mysql.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0">
+    
+    <persistence-unit name=".read" transaction-type="RESOURCE_LOCAL">
+        <properties>
+            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://tfb-database:3306/hello_world?useSSL=false&amp;rewriteBatchedStatements=true&amp;serverTimezone=UTC&amp;characterEncoding=utf8"/>
+            <property name="javax.persistence.jdbc.user" value="benchmarkdbuser"/>
+            <property name="javax.persistence.jdbc.password" value="benchmarkdbpass"/>
+        </properties>
+    </persistence-unit>
+    
+    <persistence-unit name=".write" transaction-type="RESOURCE_LOCAL">
+        <properties>
+            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://tfb-database:3306/hello_world?useSSL=false&amp;rewriteBatchedStatements=true&amp;serverTimezone=UTC&amp;characterEncoding=utf8"/>
+            <property name="javax.persistence.jdbc.user" value="benchmarkdbuser"/>
+            <property name="javax.persistence.jdbc.password" value="benchmarkdbpass"/>
+        </properties>
+    </persistence-unit>
+   
+</persistence>

+ 3 - 3
frameworks/Java/redkale/config.toml

@@ -80,8 +80,8 @@ versus = "Redkale"
 [mongodb]
 urls.db = "/db"
 urls.fortune = "/fortunes"
-urls.query = "/queries?q="
-urls.update = "/updates?q="
+urls.query2 = "/queries?q="
+urls.update2 = "/updates?q="
 approach = "Realistic"
 classification = "Fullstack"
 database = "Mongodb"
@@ -90,4 +90,4 @@ os = "Linux"
 orm = "Raw"
 platform = "Redkale"
 webserver = "Redkale"
-versus = "Redkale"
+versus = "Redkale"

+ 6 - 5
frameworks/Java/redkale/pom-mongodb.xml

@@ -8,6 +8,7 @@
     <properties>
         <!-- the main class -->
         <main.class>org.redkale.boot.Application</main.class>
+		<redkale.version>2.7.0-SNAPSHOT</redkale.version>
         <stack.version>1.0.0</stack.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>11</maven.compiler.source>
@@ -18,19 +19,19 @@
         <dependency>
             <groupId>org.redkale</groupId>
             <artifactId>redkale</artifactId>
-            <version>2.5.0-SNAPSHOT</version>
+            <version>${redkale.version}</version>
         </dependency>
         
         <dependency>
             <groupId>org.redkalex</groupId>
             <artifactId>redkale-plugins</artifactId>
-            <version>2.5.0-SNAPSHOT</version>
+            <version>${redkale.version}</version>
         </dependency>
         
         <dependency>
             <groupId>org.mongodb</groupId>
             <artifactId>mongodb-driver-reactivestreams</artifactId>
-            <version>4.3.1</version>
+            <version>4.3.2</version>
         </dependency>
     </dependencies>
 
@@ -77,7 +78,7 @@
             <plugin>
                 <groupId>org.redkale.maven.plugins</groupId>
                 <artifactId>redkale-maven-plugin</artifactId>
-                <version>1.0.0-SNAPSHOT</version>                                                
+                <version>1.1.0-SNAPSHOT</version>                                                
                 <configuration>		
                     <nativeimageArgs>
                         <arg>--allow-incomplete-classpath</arg>
@@ -119,4 +120,4 @@
 
     </build>
 
-</project>
+</project>

+ 4 - 3
frameworks/Java/redkale/pom.xml

@@ -7,6 +7,7 @@
 
     <properties>
         <main.class>org.redkale.boot.Application</main.class>
+		<redkale.version>2.7.0-SNAPSHOT</redkale.version>
         <stack.version>1.0.0</stack.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>11</maven.compiler.source>
@@ -17,13 +18,13 @@
         <dependency>
             <groupId>org.redkale</groupId>
             <artifactId>redkale</artifactId>
-            <version>2.5.0-SNAPSHOT</version>
+            <version>${redkale.version}</version>
         </dependency>
         
         <dependency>
             <groupId>org.redkalex</groupId>
             <artifactId>redkale-plugins</artifactId>
-            <version>2.5.0-SNAPSHOT</version>
+            <version>${redkale.version}</version>
         </dependency>
         
     </dependencies>
@@ -71,7 +72,7 @@
             <plugin>
                 <groupId>org.redkale.maven.plugins</groupId>
                 <artifactId>redkale-maven-plugin</artifactId>
-                <version>1.0.0-SNAPSHOT</version>                                                
+                <version>1.1.0-SNAPSHOT</version>                                                
                 <configuration>		
                     <nativeimageArgs>
                         <arg>--allow-incomplete-classpath</arg>

+ 2 - 15
frameworks/Java/redkale/redkale-cache.dockerfile

@@ -1,23 +1,10 @@
-FROM openjdk:17-jdk-slim
-ARG DEBIAN_FRONTEND=noninteractive
-ARG MAVEN_VERSION=3.8.1
-
+FROM maven:3.8.4-openjdk-17-slim as maven
 WORKDIR /redkale
-RUN apt-get update -yqq
-RUN apt-get install -yqq wget
-
-RUN wget --no-verbose https://ftp.wayne.edu/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
-RUN tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz
-ENV MAVEN_HOME /redkale/apache-maven-${MAVEN_VERSION}
-ENV PATH $MAVEN_HOME/bin:$PATH
-
 COPY src src
 COPY conf conf
 COPY pom.xml pom.xml
 RUN mvn package -q
 
-RUN cp /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
-
 EXPOSE 8080
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-Dbenchmarks.cache=true", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "/redkale/target/redkale-benchmark-1.0.0.jar"]

+ 3 - 2
frameworks/Java/redkale/redkale-graalvm.dockerfile

@@ -5,11 +5,12 @@ COPY conf conf
 COPY pom.xml pom.xml
 RUN mvn package -q
 
-FROM ghcr.io/graalvm/graalvm-ce:21.2.0
+
+FROM ghcr.io/graalvm/graalvm-ce:21.3.0
 WORKDIR /redkale
 COPY conf conf
 COPY --from=maven /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
 
 EXPOSE 8080
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=40000", "-Dbenchmarks.cache=true", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=40000", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]

+ 3 - 16
frameworks/Java/redkale/redkale-mongodb.dockerfile

@@ -1,25 +1,12 @@
-FROM openjdk:17-jdk-slim
-ARG DEBIAN_FRONTEND=noninteractive
-ARG MAVEN_VERSION=3.8.1
-
+FROM maven:3.8.4-openjdk-17-slim as maven
 WORKDIR /redkale
-RUN apt-get update -yqq
-RUN apt-get install -yqq wget
-
-RUN wget --no-verbose https://ftp.wayne.edu/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
-RUN tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz
-ENV MAVEN_HOME /redkale/apache-maven-${MAVEN_VERSION}
-ENV PATH $MAVEN_HOME/bin:$PATH
-
 COPY src src
 COPY conf conf
-COPY pom-mongodb.xml pom.xml
 RUN rm conf/persistence.xml
 RUN mv conf/persistence-mongodb.xml  conf/persistence.xml
+COPY pom-mongodb.xml pom.xml
 RUN mvn package -q
 
-RUN cp /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
-
 EXPOSE 8080
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-Dbenchmarks.db=true", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "/redkale/target/redkale-benchmark-1.0.0.jar"]

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

@@ -0,0 +1,12 @@
+FROM maven:3.8.4-openjdk-17-slim as maven
+WORKDIR /redkale
+COPY src src
+COPY conf conf
+RUN rm conf/persistence.xml
+RUN mv conf/persistence-mysql.xml  conf/persistence.xml
+COPY pom.xml pom.xml
+RUN mvn package -q
+
+EXPOSE 8080
+
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "/redkale/target/redkale-benchmark-1.0.0.jar"]

+ 2 - 2
frameworks/Java/redkale/redkale-native.dockerfile

@@ -1,4 +1,4 @@
-FROM maven:3.6.3-openjdk-16-slim as maven
+FROM maven:3.8.4-openjdk-17-slim as maven
 WORKDIR /redkale
 COPY src src
 COPY conf conf
@@ -6,7 +6,7 @@ COPY pom.xml pom.xml
 RUN mvn package -q
 
 
-FROM ghcr.io/graalvm/graalvm-ce:21.2.0
+FROM ghcr.io/graalvm/graalvm-ce:21.3.0 
 RUN gu install native-image
 WORKDIR /redkale
 COPY conf conf

+ 2 - 15
frameworks/Java/redkale/redkale-postgres.dockerfile

@@ -1,23 +1,10 @@
-FROM openjdk:17-jdk-slim
-ARG DEBIAN_FRONTEND=noninteractive
-ARG MAVEN_VERSION=3.8.1
-
+FROM maven:3.8.4-openjdk-17-slim as maven
 WORKDIR /redkale
-RUN apt-get update -yqq
-RUN apt-get install -yqq wget
-
-RUN wget --no-verbose https://ftp.wayne.edu/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
-RUN tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz
-ENV MAVEN_HOME /redkale/apache-maven-${MAVEN_VERSION}
-ENV PATH $MAVEN_HOME/bin:$PATH
-
 COPY src src
 COPY conf conf
 COPY pom.xml pom.xml
 RUN mvn package -q
 
-RUN cp /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
-
 EXPOSE 8080
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-Dbenchmarks.db=true", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "/redkale/target/redkale-benchmark-1.0.0.jar"]

+ 2 - 15
frameworks/Java/redkale/redkale.dockerfile

@@ -1,23 +1,10 @@
-FROM openjdk:17-jdk-slim
-ARG DEBIAN_FRONTEND=noninteractive
-ARG MAVEN_VERSION=3.8.1
-
+FROM maven:3.8.4-openjdk-17-slim as maven
 WORKDIR /redkale
-RUN apt-get update -yqq
-RUN apt-get install -yqq wget
-
-RUN wget --no-verbose https://ftp.wayne.edu/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
-RUN tar -xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz
-ENV MAVEN_HOME /redkale/apache-maven-${MAVEN_VERSION}
-ENV PATH $MAVEN_HOME/bin:$PATH
-
 COPY src src
 COPY conf conf
 COPY pom.xml pom.xml
 RUN mvn package -q
 
-RUN cp /redkale/target/redkale-benchmark-1.0.0.jar redkale-benchmark.jar
-
 EXPOSE 8080
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:AutoBoxCacheMax=80000", "-DAPP_HOME=./", "-jar", "/redkale/target/redkale-benchmark-1.0.0.jar"]

+ 0 - 5
frameworks/Java/redkale/setup.bat

@@ -1,5 +0,0 @@
-@ECHO OFF
-
-call mvn clean package
-
-call java -DAPP_HOME=./ -jar target/redkale-benchmark-1.0.0.jar 

+ 17 - 40
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/BenchmarkService.java

@@ -5,14 +5,13 @@
  */
 package org.redkalex.benchmark;
 
-import java.util.Random;
 import java.util.concurrent.*;
+import java.util.stream.*;
 import javax.annotation.Resource;
 import org.redkale.net.http.*;
 import org.redkale.service.AbstractService;
 import org.redkale.source.*;
-import org.redkale.util.Utility;
-import org.redkalex.benchmark.CachedWorld.WorldEntityCache;
+import org.redkale.util.AnyValue;
 
 /**
  *
@@ -26,6 +25,11 @@ public class BenchmarkService extends AbstractService {
     @Resource
     private DataSource source;
 
+    @Override
+    public void init(AnyValue conf) {
+        CachedWorld.Cache.getInstance(source);
+    }
+
     @RestMapping(name = "plaintext")
     public byte[] getHelloBytes() {
         return helloBytes;
@@ -38,36 +42,22 @@ public class BenchmarkService extends AbstractService {
 
     @RestMapping(name = "db")
     public CompletableFuture<World> findWorldAsync() {
-        return source.findAsync(World.class, randomId(ThreadLocalRandom.current()));
+        return source.findAsync(World.class, ThreadLocalRandom.current().nextInt(10000) + 1);
     }
 
     @RestMapping(name = "queries")
     public CompletableFuture<World[]> queryWorldAsync(int q) {
-        final int size = Math.min(500, Math.max(1, q));
-        final Random random = ThreadLocalRandom.current();
-        final CompletableFuture<World>[] futures = new CompletableFuture[size];
-        for (int i = 0; i < size; i++) {
-            futures[i] = source.findAsync(World.class, randomId(random));
-        }
-        return Utility.allOfFutures(futures, c -> new World[c]);
+        int size = Math.min(500, Math.max(1, q));
+        IntStream ids = ThreadLocalRandom.current().ints(size, 1, 10001);
+        return source.findsAsync(World.class, ids.boxed());
     }
 
     @RestMapping(name = "updates")
     public CompletableFuture<World[]> updateWorldAsync(int q) {
-        final int size = Math.min(500, Math.max(1, q));
-        final Random random = ThreadLocalRandom.current();
-        final CompletableFuture<World>[] futures = new CompletableFuture[size];
-        for (int i = 0; i < size; i++) {
-            futures[i] = source.findAsync(World.class, randomId(random));
-        }
-        return CompletableFuture.allOf(futures).thenCompose(v -> {
-            final Random r = ThreadLocalRandom.current();
-            final World[] worlds = new World[size];
-            for (int i = 0; i < size; i++) {
-                worlds[i] = futures[i].join().randomNumber(randomId(r));
-            }
-            return source.updateAsync(World.sort(worlds)).thenApply(u -> worlds);
-        });
+        int size = Math.min(500, Math.max(1, q));
+        IntStream ids = ThreadLocalRandom.current().ints(size, 1, 10001);
+        int[] newNumbers = ThreadLocalRandom.current().ints(size, 1, 10001).toArray();
+        return source.findsAsync(World.class, ids.boxed()).thenCompose(words -> source.updateAsync(World.setNewNumbers(words, newNumbers)).thenApply(v -> words));
     }
 
     @RestMapping(name = "fortunes")
@@ -78,22 +68,9 @@ public class BenchmarkService extends AbstractService {
         });
     }
 
-    private WorldEntityCache cache;
-
     @RestMapping(name = "cached-worlds")
     public CachedWorld[] cachedWorlds(int q) {
-        if (cache == null) {
-            synchronized (this) {
-                if (cache == null) cache = new WorldEntityCache(source);
-            }
-        }
-        final int size = Math.min(500, Math.max(1, q));
-        return cache.random(ThreadLocalRandom.current(), size);
+        int size = Math.min(500, Math.max(1, q));
+        return CachedWorld.Cache.getInstance(source).random(ThreadLocalRandom.current(), size);
     }
-
-    protected int randomId(Random rand) {
-        long s = rand.nextLong();
-        return (int) ((s < 0 ? -s : s) % 10000) + 1;
-    }
-
 }

+ 23 - 19
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/CachedWorld.java

@@ -1,11 +1,8 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
 package org.redkalex.benchmark;
 
 import java.util.*;
+import java.util.function.IntFunction;
+import java.util.stream.IntStream;
 import javax.persistence.*;
 import org.redkale.convert.json.JsonConvert;
 import org.redkale.source.*;
@@ -14,7 +11,6 @@ import org.redkale.source.*;
  *
  * @author zhangjx
  */
-//@Cacheable(direct = true)
 @Entity
 @Table(name = "World")
 public final class CachedWorld implements Comparable<CachedWorld> {
@@ -55,27 +51,35 @@ public final class CachedWorld implements Comparable<CachedWorld> {
         return JsonConvert.root().convertTo(this);
     }
 
-    public static class WorldEntityCache {
+    public static class Cache {
+
+        private static Cache instance;
+
+        static Cache getInstance(DataSource source) {
+            if (instance == null) {
+                synchronized (Cache.class) {
+                    if (instance == null) {
+                        instance = new Cache(source);
+                    }
+                }
+            }
+            return instance;
+        }
 
         private CachedWorld[] array;
 
-        public WorldEntityCache(DataSource source) {
+        private IntFunction<CachedWorld> mapFunc = c -> array[c];
+
+        private IntFunction<CachedWorld[]> arrayFunc = c -> new CachedWorld[c];
+
+        public Cache(DataSource source) {
             List<CachedWorld> list = source.queryList(CachedWorld.class);
             this.array = list.toArray(new CachedWorld[list.size()]);
         }
 
-        public CachedWorld findAt(int index) {
-            return (CachedWorld) array[index];
-        }
-
         public CachedWorld[] random(Random random, int size) {
-            Random rand = random;
-            final CachedWorld[] worlds = new CachedWorld[size];
-            for (int i = 0; i < worlds.length; i++) {
-                long index = Math.abs(rand.nextLong()) % 10000;
-                worlds[i] = array[(int) index];
-            }
-            return worlds;
+            IntStream ids = random.ints(size, 0, 10000);
+            return ids.mapToObj(mapFunc).toArray(arrayFunc);
         }
     }
 }

+ 22 - 6
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/FortuneRender.java

@@ -5,10 +5,11 @@
  */
 package org.redkalex.benchmark;
 
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import org.redkale.convert.Convert;
 import org.redkale.net.http.*;
-import org.redkale.util.AnyValue;
+import org.redkale.util.*;
 
 /**
  *
@@ -16,19 +17,34 @@ import org.redkale.util.AnyValue;
  */
 public class FortuneRender implements org.redkale.net.http.HttpRender {
 
+    private static final String contentType = "text/html; charset=utf-8";
+
+    private static final byte[] text1 = "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>".getBytes(StandardCharsets.UTF_8);
+
+    private static final byte[] text2 = "<tr><td>".getBytes(StandardCharsets.UTF_8);
+
+    private static final byte[] text3 = "</td><td>".getBytes(StandardCharsets.UTF_8);
+
+    private static final byte[] text4 = "</td></tr>".getBytes(StandardCharsets.UTF_8);
+
+    private static final byte[] text5 = "</table></body></html>".getBytes(StandardCharsets.UTF_8);
+
+    private final ThreadLocal<ByteArray> localByteArray = ThreadLocal.withInitial(() -> new ByteArray(1200));
+
     @Override
     public void init(HttpContext context, AnyValue config) {
     }
 
     @Override
     public void renderTo(HttpRequest request, HttpResponse response, Convert convert, HttpScope scope) {
-        StringBuilder sb = new StringBuilder(1200);
-        sb.append("<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
+        ByteArray array = localByteArray.get().clear();
+        array.put(text1);
         for (Fortune item : (List<Fortune>) scope.find("fortunes")) {
-            sb.append("<tr><td>").append(item.getId()).append("</td><td>").append(escape(item.getMessage())).append("</td></tr>");
+            array.put(text2).put(String.valueOf(item.getId()).getBytes(StandardCharsets.UTF_8))
+                .put(text3).put(escape(item.getMessage()).toString().getBytes(StandardCharsets.UTF_8)).put(text4);
         }
-        sb.append("</table></body></html>");
-        response.setContentType("text/html; charset=utf-8").finish(sb.toString());
+        array.put(text5);
+        response.finish(contentType, array);
     }
 
     private static CharSequence escape(CharSequence value) {

+ 4 - 1
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/World.java

@@ -26,7 +26,10 @@ public final class World implements Comparable<World> {
         return this;
     }
 
-    public static World[] sort(World[] worlds) {
+    public static World[] setNewNumbers(World[] worlds, int[] newNumbers) {
+        for (int i = 0; i < worlds.length; i++) {
+            worlds[i].randomNumber = newNumbers[i];
+        }
         Arrays.sort(worlds);
         return worlds;
     }