Browse Source

jdbc-service (#8630)

* jdbc-service

* add redkale-block test

* trace.enabled
Redkale 1 year ago
parent
commit
8c9c7f5b51

+ 78 - 0
frameworks/Java/redkale/BenchmarkService.java

@@ -0,0 +1,78 @@
+/*
+ * 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.concurrent.*;
+import java.util.stream.Stream;
+import org.redkale.annotation.*;
+import org.redkale.net.http.*;
+import org.redkale.service.AbstractService;
+import org.redkale.source.DataSource;
+
+/**
+ * 测试redkale-jdbc, 需要覆盖到原BenchmarkService
+ *
+ * @author zhangjx
+ */
+@RestService(name = " ", repair = false)
+public class BenchmarkService extends AbstractService {
+
+    private static final byte[] helloBytes = "Hello, world!".getBytes();
+
+    @Resource
+    private DataSource source;
+
+    @NonBlocking
+    @RestMapping(auth = false)
+    public byte[] plaintext() {
+        return helloBytes;
+    }
+
+    @NonBlocking
+    @RestMapping(auth = false)
+    public Message json() {
+        return new Message("Hello, World!");
+    }
+
+    @RestMapping(auth = false)
+    public World db() {
+        return source.find(World.class, ThreadLocalRandom.current().nextInt(10000) + 1);
+    }
+
+    @RestMapping(auth = false)
+    public List<World> queries(int q) {
+        return source.findsList(World.class, random(q));
+    }
+
+    @RestMapping(auth = false)
+    public List<World> updates(int q) {
+        int size = Math.min(500, Math.max(1, q));
+        int[] newNumbers = ThreadLocalRandom.current().ints(size, 1, 10001).toArray();
+        List<World> words = source.findsList(World.class, random(q));
+        source.update(World.updateNewNumbers(words, newNumbers));
+        return words;
+    }
+
+    @RestMapping(auth = false)
+    public HttpScope fortunes() {
+        List<Fortune> fortunes = source.queryList(Fortune.class);
+        fortunes.add(new Fortune(0, "Additional fortune added at request time."));
+        Collections.sort(fortunes);
+        return HttpScope.refer("").referObj(fortunes);
+    }
+
+    @NonBlocking
+    @RestMapping(name = "cached-worlds", auth = false)
+    public CachedWorld[] cachedWorlds(int q) {
+        return source.finds(CachedWorld.class, random(q));
+    }
+
+    private Stream<Integer> random(int q) {
+        int size = Math.min(500, Math.max(1, q));
+        return ThreadLocalRandom.current().ints(size, 1, 10001).boxed();
+    }
+}

+ 21 - 0
frameworks/Java/redkale/benchmark_config.json

@@ -95,6 +95,27 @@
                 "notes": "",
                 "versus": "Redkale"
             },
+            "block": {
+                "db_url": "/db",
+                "query_url": "/queries?q=", 
+                "fortune_url": "/fortunes",
+                "update_url": "/updates?q=",
+                "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-block",
+                "notes": "",
+                "versus": "Redkale"
+            },
             "vertx": {
                 "db_url": "/db",
                 "query_url": "/queries?q=", 

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

@@ -3,8 +3,7 @@
 <application port="8585">     
     
     <properties>    
-        <property name="system.property.redkale.trace.enable" value="false"/>  
-        <property name="system.property.redkale.trace.disable" value="true"/>
+        <property name="system.property.redkale.trace.enabled" value="false"/>  
         <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"/>

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

@@ -70,6 +70,21 @@ platform = "Redkale"
 webserver = "Redkale"
 versus = "Redkale"
 
+[block]
+urls.db = "/db"
+urls.fortune = "/fortunes"
+urls.query = "/queries?q="
+urls.update = "/updates?q="
+approach = "Realistic"
+classification = "Fullstack"
+database = "Postgres"
+database_os = "Linux"
+os = "Linux"
+orm = "Raw"
+platform = "Redkale"
+webserver = "Redkale"
+versus = "Redkale"
+
 [vertx]
 urls.db = "/db"
 urls.fortune = "/fortunes"

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

@@ -8,7 +8,7 @@
     <properties>
         <main.class>org.redkale.boot.Application</main.class>
         <redkale.version>2.8.0-SNAPSHOT</redkale.version>
-        <vertx.version>4.4.4</vertx.version>
+        <vertx.version>4.5.0</vertx.version>
         <vertx-scram.version>2.1</vertx-scram.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>18</maven.compiler.source>

+ 16 - 0
frameworks/Java/redkale/redkale-block.dockerfile

@@ -0,0 +1,16 @@
+FROM maven:3.8.6-openjdk-18-slim as maven
+WORKDIR /redkale
+COPY src src
+COPY conf conf
+COPY pom.xml pom.xml
+COPY BenchmarkService.java src/main/java/org/redkalex/benchmark/BenchmarkService.java
+RUN mvn package -q
+
+FROM openjdk:21-jdk-slim
+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", "-DAPP_HOME=./", "-jar", "redkale-benchmark.jar"]

+ 1 - 0
frameworks/Java/redkale/redkale-jdbc.dockerfile

@@ -3,6 +3,7 @@ WORKDIR /redkale
 COPY src src
 COPY conf conf
 COPY pom-jdbc.xml pom.xml
+COPY BenchmarkService.java src/main/java/org/redkalex/benchmark/BenchmarkService.java
 RUN mvn package -q
 
 FROM openjdk:21-jdk-slim

+ 7 - 5
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/BenchmarkService.java

@@ -8,6 +8,7 @@ package org.redkalex.benchmark;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.stream.IntStream;
+import java.util.stream.Stream;
 import org.redkale.annotation.*;
 import org.redkale.net.http.*;
 import org.redkale.service.AbstractService;
@@ -43,9 +44,7 @@ public class BenchmarkService extends AbstractService {
 
     @RestMapping(auth = false)
     public CompletableFuture<List<World>> queries(int q) {
-        int size = Math.min(500, Math.max(1, q));
-        IntStream ids = ThreadLocalRandom.current().ints(size, 1, 10001);
-        return source.findsListAsync(World.class, ids.boxed());
+        return source.findsListAsync(World.class, random(q));
     }
 
     @RestMapping(auth = false)
@@ -69,8 +68,11 @@ public class BenchmarkService extends AbstractService {
 
     @RestMapping(name = "cached-worlds", auth = false)
     public CachedWorld[] cachedWorlds(int q) {
+        return source.finds(CachedWorld.class, random(q));
+    }
+
+    private Stream<Integer> random(int q) {
         int size = Math.min(500, Math.max(1, q));
-        IntStream ids = ThreadLocalRandom.current().ints(size, 1, 10001);
-        return source.finds(CachedWorld.class, ids.boxed());
+        return ThreadLocalRandom.current().ints(size, 1, 10001).boxed();
     }
 }

+ 1 - 2
frameworks/Java/redkale/src/main/java/org/redkalex/benchmark/CachedWorld.java

@@ -10,9 +10,8 @@ import org.redkale.persistence.*;
  *
  * @author zhangjx
  */
-@Entity
 @Table(name = "world")
-@Cacheable(direct = true)
+@Entity(cacheable = true, cacheDirect = true)
 public final class CachedWorld {
 
     @Id