java 轻量级文件数据库_Java:如何创建轻量级数据库微服务

本文展示了如何使用支持Java Platform Module System的Speedment ORM,创建一个比标准应用小10倍、存储需求约32 MB的数据库微服务。通过自定义JRE,内存使用减少了25%,并详细介绍了构建和运行此类应用程序的步骤。
摘要由CSDN通过智能技术生成

java 轻量级文件数据库

基于云的Java数据库应用程序的数量每分钟都在增加。 许多组织部署了数百甚至数千个微服务实例。 但是,相对于运行时环境,大多数应用程序会带来惊人的不必要开销。 反过来,这会使应用程序运行更慢,运行成本更高。

在本文中,我将演示如何编写比normal(*)小10倍的数据库应用程序。 考虑到应用程序,第三方库和Java运行时,存储要求约为32 MB,而不是通常的(*)〜300 MB。 另外,运行该应用程序所需的RAM也将减少25%。

(*)这些是以下完整JDK(不包括应用程序和第三方库)的存储要求:

jdk.8.0_191        360 MB
jdk-9.0.4          504 MB
adoptopenjdk-11    298 MB

使用支持微服务的ORM

大多数传统的ORM不支持Java模块封装。 通常,这需要交付大量不必要的代码。

在本文中,我将使用开源的基于Stream的Java ORM Speedment ,它的最新版本支持Java Platform Module System(JPMS)。 这使我们能够仅使用我们的应用程序显式使用的模块来生成优化的自定义Java运行时环境(JRE,来自JDK的部分,用于运行应用程序)。

阅读关于Speedment 3.2中的新功能, 这篇文章

应用程序

我们希望在本文中部署的整个应用程序位于
GitHub上的开源项目,位于子目录“ microservice-jlink ”下。 它连接到托管在云中MySQL“ Sakila”数据库(包含有关电影的数据)的公共实例,并在控制台上列出了十个最长的被评为“ PG-13”的电影。 数据模型已预先配置为适合此数据库的数据结构。 如果要使用另一个数据库创建自己的应用程序,请访问Speedment初始化程序以专门为该数据库配置项目。

该应用程序的main方法如下所示:

public final class Main {

    public static void main(String[] args) {

        final Speedment app = new SakilaApplicationBuilder()
            .withPassword("sakila")
            .build();

        final FilmManager films = app.getOrThrow(FilmManager.class);

        System.out.println("These are the ten longest films rated as PG-13:");

        films.stream()                          // 1
            .filter(Film.RATING.equal("PG-13")) // 2
            .sorted(Film.LENGTH.reversed())     // 3
            .limit(10)                          // 4
            .map(film -> String.format(         // 5
                "%-18s %d min",
                film.getTitle(),
                film.getLength().orElse(0))
            )
            .forEach(System.out::println);      // 6

    }
}

首先,我们将数据库密码传递给Speedment构建器(Speedment从不在内部存储密码)。 使用配置文件中的数据库IP地址,端口等对构建器进行了预配置。

然后,我们获得FilmManager ,该FilmManager器随后可用于创建直接与数据库中“ film”表相对应的Java流。

最后,我们:

  1. 创建Film实体Stream
  2. 筛选出评级等于“ PG-13”的Film实体
  3. 以相反的长度顺序对剩余的影片进行排序(最长的优先) <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值