Browse Source

Update vertx-netty-native (#6790)

* Update vertx-netty-native

* Update application.xml

* Update pom.xml

* Update persistence.xml
Redkale 3 years ago
parent
commit
311a6b5ea5

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

@@ -24,6 +24,10 @@
             "graalvm": {
                 "plaintext_url": "/plaintext",
                 "json_url": "/json",
+                "db_url": "/db",
+                "query_url": "/queries?q=", 
+                "fortune_url": "/fortunes",
+                "update_url": "/updates?q=",
                 "cached_query_url": "/cached-worlds?q=",
                 "port": 8080,
                 "approach": "Realistic",
@@ -44,6 +48,9 @@
             "native": {
                 "plaintext_url": "/plaintext",
                 "json_url": "/json",
+                "db_url": "/db",
+                "query_url": "/queries?q=", 
+                "update_url": "/updates?q=",
                 "cached_query_url": "/cached-worlds?q=",
                 "port": 8080,
                 "approach": "Realistic",
@@ -81,9 +88,9 @@
             },
             "postgres": {
                 "db_url": "/db",
-                "query_url2": "/queries?q=", 
+                "query_url": "/queries?q=", 
                 "fortune_url": "/fortunes",
-                "update_url2": "/updates?q=",
+                "update_url": "/updates?q=",
                 "port": 8080,
                 "approach": "Realistic",
                 "classification": "Fullstack",

+ 9 - 5
frameworks/Java/redkale/conf/application.xml

@@ -5,12 +5,16 @@
     <resources>
         <executor threads="0"/>
         <properties>    
-            <property name="system.property.convert.tiny" value="false"/>      
+            <property name="system.property.vertx.threadChecks" value="false"/> 
+            <property name="system.property.vertx.disableTCCL" value="true"/> 
+            <property name="system.property.vertx.disableMetrics" value="true"/> 
+            <property name="system.property.vertx.disableContextTimings" value="true"/> 
+            
+            <property name="system.property.redkale.convert.tiny" value="false"/>      
             <property name="system.property.redkale.skip.counter" value="true"/>  
-            <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"/>
+            <property name="system.property.redkale.http.request.pipeline.sameheaders" value="true"/>  
+            <property name="system.property.redkale.http.response.header.server" value="redkale"/>
+            <property name="system.property.redkale.http.response.header.connection" value="none"/>
         </properties>
     </resources> 
         

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

@@ -6,7 +6,6 @@
         <properties>
             <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://tfb-database:5432/hello_world"/>
             <property name="javax.persistence.jdbc.preparecache" value="true"/>
-            <property name="javax.persistence.connections.limit" value="512"/>
             <property name="javax.persistence.jdbc.user" value="benchmarkdbuser"/>
             <property name="javax.persistence.jdbc.password" value="benchmarkdbpass"/>
         </properties>
@@ -17,7 +16,6 @@
         <properties>
             <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://tfb-database:5432/hello_world"/>
             <property name="javax.persistence.jdbc.preparecache" value="true"/>
-            <property name="javax.persistence.connections.limit" value="512"/>
             <property name="javax.persistence.jdbc.user" value="benchmarkdbuser"/>
             <property name="javax.persistence.jdbc.password" value="benchmarkdbpass"/>
         </properties>

+ 7 - 0
frameworks/Java/redkale/config.toml

@@ -17,6 +17,10 @@ versus = "Redkale"
 [graalvm]
 urls.plaintext = "/plaintext"
 urls.json = "/json"
+urls.db = "/db"
+urls.fortune = "/fortunes"
+urls.query = "/queries?q="
+urls.update = "/updates?q="
 urls.cached_query = "/cached-worlds?q="
 approach = "Realistic"
 classification = "Fullstack"
@@ -31,6 +35,9 @@ versus = "Redkale"
 [native]
 urls.plaintext = "/plaintext"
 urls.json = "/json"
+urls.db = "/db"
+urls.query = "/queries?q="
+urls.update = "/updates?q="
 urls.cached_query = "/cached-worlds?q="
 approach = "Realistic"
 classification = "Fullstack"

+ 152 - 0
frameworks/Java/redkale/pom-native.xml

@@ -0,0 +1,152 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.redkalex</groupId>
+    <artifactId>redkale-benchmark</artifactId>
+    <version>1.0.0</version>
+
+    <properties>
+        <!-- the main class -->
+        <main.class>org.redkale.boot.Application</main.class>
+        <stack.version>1.0.0</stack.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties> 
+
+    <dependencies>  
+        <dependency>
+            <groupId>org.redkale</groupId>
+            <artifactId>redkale</artifactId>
+            <version>2.5.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.redkalex</groupId>
+            <artifactId>redkale-plugins</artifactId>
+            <version>2.5.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency> 
+            <groupId>com.fizzed</groupId>
+            <artifactId>rocker-compiler</artifactId>
+            <version>1.3.0</version>
+        </dependency> 
+        <!--
+        <dependency> 
+            <groupId>io.vertx</groupId>
+            <artifactId>vertx-pg-client</artifactId>
+            <version>4.1.2</version>
+        </dependency> 
+        -->
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>central</id>
+            <name>Central Repository</name>
+            <url>https://repo.maven.apache.org/maven2</url>
+        </repository>
+        <repository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+        </repository>
+    </repositories>
+    
+    <pluginRepositories>
+        <pluginRepository>
+            <id>central</id>
+            <name>Central Repository</name>
+            <url>https://repo.maven.apache.org/maven2</url>
+        </pluginRepository>
+        <pluginRepository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </pluginRepository> 
+    </pluginRepositories>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.0</version>                         
+            </plugin>
+                 
+            <plugin>
+                <groupId>org.redkale.maven.plugins</groupId>
+                <artifactId>redkale-maven-plugin</artifactId>
+                <version>1.0.0-SNAPSHOT</version>                                                
+                <configuration>		
+                    <nativeimageArgs>
+                        <arg>--allow-incomplete-classpath</arg>
+                        <arg>--no-fallback</arg>
+                    </nativeimageArgs>
+                </configuration>                                    
+                <executions>
+                    <execution>
+                        <id>redkale-compile</id> 
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>                   
+                    </execution>
+                </executions>    
+            </plugin>
+                 
+            <plugin>
+                <groupId>com.fizzed</groupId>
+                <artifactId>rocker-maven-plugin</artifactId>
+                <version>1.3.0</version>
+                <executions>
+                    <execution>
+                        <id>generate-rocker-templates</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <javaVersion>1.8</javaVersion>
+                            <templateDirectory>${basedir}/src/main/templates</templateDirectory>
+                            <outputDirectory>${basedir}/target/generated-sources/rocker</outputDirectory>
+                            <discardLogicWhitespace>false</discardLogicWhitespace>
+                            <addAsSources>true</addAsSources>
+                            <optimize>true</optimize>
+                            <failOnError>true</failOnError>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>3.2.0</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <transformers>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>${main.class}</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+    </build>
+
+</project>

+ 27 - 1
frameworks/Java/redkale/pom.xml

@@ -33,10 +33,36 @@
             <version>1.3.0</version>
         </dependency> 
         
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.65.Final</version>
+        </dependency>
+        <!--
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-transport-native-epoll</artifactId>
+            <version>4.1.65.Final</version>
+            <classifier>linux-x86_64</classifier>
+        </dependency>
+        
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-transport-native-kqueue</artifactId>
+            <version>4.1.65.Final</version>
+            <classifier>osx-x86_64</classifier>
+        </dependency>
+        -->
         <dependency> 
             <groupId>io.vertx</groupId>
             <artifactId>vertx-pg-client</artifactId>
-            <version>4.1.2</version>
+            <version>3.9.2</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency> 
     </dependencies>
 

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

@@ -2,7 +2,7 @@ FROM maven:3.6.3-openjdk-16-slim as maven
 WORKDIR /redkale
 COPY src src
 COPY conf conf
-COPY pom.xml pom.xml
+COPY pom-native.xml pom.xml
 RUN mvn package -q
 
 

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

@@ -5,6 +5,8 @@
  */
 package org.redkalex.benchmark;
 
+import com.fizzed.rocker.RockerOutput;
+import com.fizzed.rocker.runtime.ArrayOfByteArraysOutput;
 import java.util.Random;
 import java.util.concurrent.*;
 import javax.annotation.Resource;
@@ -23,8 +25,6 @@ public class Service extends AbstractService {
 
     private static final byte[] helloBytes = "Hello, world!".getBytes();
 
-    private static final boolean cached = Boolean.getBoolean("benchmarks.cache");
-
     private final ThreadLocal<RedRandom> rands = ThreadLocal.withInitial(() -> new RedRandom());
 
     @Resource
@@ -44,7 +44,7 @@ public class Service extends AbstractService {
 
     @RestMapping(name = "db")
     public CompletableFuture<World> findWorldAsync(ChannelContext context) {
-        return source.findAsync(World.class, context, 1 + randomInt(ThreadLocalRandom.current(), 10000));
+        return source.findAsync(World.class, context, randomId(rands.get()));
     }
 
     @RestMapping(name = "queries")
@@ -55,7 +55,7 @@ public class Service extends AbstractService {
         final CompletableFuture[] futures = new CompletableFuture[size];
         for (int i = 0; i < size; i++) {
             final int index = i;
-            futures[index] = source.findAsync(World.class, context, 1 + randomInt(random, 10000)).thenAccept(v -> worlds[index] = v);
+            futures[index] = source.findAsync(World.class, context, randomId(random)).thenAccept(v -> worlds[index] = v);
         }
         return CompletableFuture.allOf(futures).thenApply(v -> worlds);
     }
@@ -68,17 +68,17 @@ public class Service extends AbstractService {
         final CompletableFuture[] futures = new CompletableFuture[size];
         for (int i = 0; i < size; i++) {
             final int index = i;
-            futures[index] = source.findAsync(World.class, context, 1 + randomInt(random, 10000)).thenAccept(v -> worlds[index] = v.randomNumber(1 + randomInt(random, 10000)));
+            futures[index] = source.findAsync(World.class, context, randomId(random)).thenAccept(v -> worlds[index] = v.randomNumber(randomId(random)));
         }
         return CompletableFuture.allOf(futures).thenCompose(v -> source.updateAsync(context, World.sort(worlds))).thenApply(v -> worlds);
     }
 
     @RestMapping(name = "fortunes")
-    public CompletableFuture<HttpResult<String>> queryFortunes() {
+    public CompletableFuture<HttpResult<byte[]>> queryFortunes() {
         return source.queryListAsync(Fortune.class).thenApply((fortunes) -> {
             fortunes.add(new Fortune(0, "Additional fortune added at request time."));
-            String html = FortunesTemplate.template(Fortune.sort(fortunes)).render().toString();
-            return new HttpResult("text/html; charset=utf-8", html);
+            RockerOutput out = FortunesTemplate.template(Fortune.sort(fortunes)).render();
+            return new HttpResult("text/html; charset=utf-8", ((ArrayOfByteArraysOutput) out).toByteArray());
         });
     }
 
@@ -90,12 +90,12 @@ public class Service extends AbstractService {
             }
         }
         final int size = Math.min(500, Math.max(1, q));
-        return cache.random(ThreadLocalRandom.current(), size);
+        return cache.random(rands.get(), size);
     }
 
-    protected int randomInt(Random rand, int bound) {
+    protected int randomId(Random rand) {
         long s = rand.nextLong();
-        return (int) ((s < 0 ? -s : s) % bound);
+        return (int) ((s < 0 ? -s : s) % 10000) + 1;
     }
 
 }