我想从免费的弹性豆茎层中挤出所有可能的使用量。
我的后端构建为一组微服务(使用 ktor)。准确地说,我有5 个微服务。所有这些都是 dockerized,我试图在同一个微型t2.micro(免费)弹性 beanstalk 实例上运行它们,并使用多docker图像环境
Java 是 java,它喜欢为每个 docker 容器空闲大约 200 MB RAM,即使是最简单的微服务。
因此,t2.micro 为您提供 1GB RAM。我有 5 个微服务 docker 容器,每个容器至少需要 200 MB = 非常接近。
问题是,内存几乎总是几乎一直在 100% 附近徘徊。
那么,有没有一种方法可以根据空闲的数量以及一个容器对它的迫切需要来动态地为 docker 容器分配内存?
假设一个容器正在做一些繁重的工作,而其他容器大部分都处于空闲状态,我想将一些 RAM 指向执行繁重任务的容器,一旦任务结束,回到每个容器的相等 RAM 分配。
有没有办法做到这一点?
在构建发布版本时遇到此无用的错误消息:
Execution failed for task ':app:processProductionReleaseMetadata'.
> The value for this property cannot be changed any further.
Run Code Online (Sandbox Code Playgroud)
我最近在一年后更新了这个 Android 应用程序,升级到 Android 4.1、最新的 gradle、插件版本、库等。所以,某个地方搞砸了这个“processMetadata”任务。
有任何想法吗?这可能是从哪里来的?显现?依赖关系冲突?一些不兼容的配置?AS/Gradle 版本太新?
我使用的是:Android 4.1、Gradle 6.7、Gradle 插件 4.1.1
Ktor 或 Exposed 框架没有任何内置的数据库迁移支持。推荐的方法是什么?
上下文是我需要使用一些使用旧世界线程模型的遗留 Java 代码。线程池执行程序、调度程序以及可运行程序和线程。
但是,我的新代码与所有协程兼容。
所以,给定一个可运行的
val runnable = Runnable {
print("Hurray")
}
Run Code Online (Sandbox Code Playgroud)
有没有比以下更好的方法在协程范围内运行这个 runnable 感觉有点笨拙(你真的只是绕过你试图运行一个 runnable 并在协程中挤压它的事实)
GlobalScope.launch(Dispatchers.IO) { runnable.run() }
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以与 runnables 和协程互操作?
我正在寻找关于如何使用类似 cron 的语法来调度 kotlin 协程运行的想法(或者库,如果有人知道的话)。
理想情况下,解决方案应具有以下几个方面:
传统的 java 方法包括通过以下方式获取 ScheduledThreadPoolExecutor
Executors.newScheduledThreadPool(1)
然后Runnable使用诸如scheduleAtFixedRate().
但是,这种方法将您锁定在 Java 的线程模型中,这在 Kotlin 代码库中可能具有挑战性,您要明智地使用 Kotlinsuspend并以协程友好的方式完成长时间运行的作业(例如:网络/数据库操作)。
您始终可以使用runBlocking{}在可运行对象中强制运行您的挂起方法以使用 来安排它们ScheduledThreadPoolExecutor,但这似乎不太优雅。您正在有效地绕过协程线程模型并回到 Java 的模型。
那么,有没有办法使用 Kotlin 的协程来运行长时间运行的后台操作?具有类似于scheduleAtFixedRate-like 方法的 API 的东西(例如:每天下午 5 点运行 X() - 本质上是 Kotlin 友好的 cron 作业替代品。)
我有两个用 Kotlin 编写的微服务,它们共享大量代码和依赖项。
为了共享代码,我有一个 git 子模块存储库设置,它本质上是我所有微服务通用的包。我可以在 IDE 中打开一个微服务,将通用代码推送到 git 子模块,然后打开另一个项目,然后简单地拉取,我的常见更改也会出现在该项目中。
但是,我不确定如何声明所有项目通用的依赖项。这个项目很小而且足够灵活,现在
因此,不同步的成本实际上会比保持同步的成本更大(因为我们现在还很小)。
这是一个示例依赖块:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
compile "ch.qos.logback:logback-classic:$logback_version"
}
Run Code Online (Sandbox Code Playgroud)
现在我想在多个项目之间共享这个。我想更新一次,比如在下面的文件中coreModule/dependencies.gradle,并在所有项目中一次性更新它(例如:在核心模块本身中使用通用的 gradle 文件)
我想分享以下几行
implementation fileTree(dir: 'libs', include: ['*.jar'])
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
compile "ch.qos.logback:logback-classic:$logback_version"
Run Code Online (Sandbox Code Playgroud)
这样我的依赖项块在两个项目中看起来都是这样的
dependencies {
commonDependencies()
// .. microservice specific dependencies
}
Run Code Online (Sandbox Code Playgroud)
我需要帮助的是定义 commonDependencies 块,以便它可以在两个项目的依赖项块中使用。任何想法将不胜感激。
我不想使用控制台。没有手动过程。我需要一个命令行版本,我可以在我的持续部署脚本中编写代码。
作为构建过程的一部分,我可以输出一个 ZIP 文件(无论是在我的本地机器上还是在 CI 过程中,例如:通过 bitbucket 管道或 AWS codedeploy VM 实例)。
我想要这样的命令:
aws eb deploy my-app ./server.zip
也就是说,首先上传我选择的 zip 文件,然后部署它(不必是一个命令)。
官方eb deploy似乎不支持这一点,我也找不到任何其他方法来做到这一点。
任何想法将不胜感激:)