问题标签 [quasar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何更改 IntelliJ 上的 Kotlin 编译器版本?
在 IntelliJ 中,您可以像这样设置目标 Java 版本:
不幸的是,我没有看到可以为 Kotlin 做同样事情的地方。这使我无法使用 Quasar-Kotlin。即使我安装了 1.0 beta,我也想切换到 M14。我怎样才能变回来?
将build.gradle
文件改回 M14 后,我的项目中出现编译错误。
我的build.gradle
:https ://gist.github.com/Jire/5b517fd767ad498bc18f
java - 移动应用 API 扩展策略
我们的 API 是为支持一百万用户而开发的。由于我们在 4 个月内达到了 50 万大关,我们现在正在扩展它以支持我们计划在一年内达到的 1000 万用户。目标是现实的,因为我们现在将核心数据处理/聚合逻辑作为 SDK 发送到其他应用程序。
当前的 API 是 HTTP post,其中正文是 JSON。当新用户注册时,他会从设备上传大约 200KB 的数据。以前我们用来处理数据服务器端,但现在我们在设备本身上处理它。
此后,该应用程序每天将上传大约 2KB 的数据并下载大约相同的数据。对于拥有多个移动设备的用户来说,这个数字要多一些,但仅占总用户群的 1%。
现在我们的 API 服务器使用 Jetty+Jersey,平均有大约 200 个并发连接。它可以处理大约 500-1000 个并发连接(取决于请求的类型)。
每个 API 服务器(共 4 个)有 120 个数据库连接。我们的工作量是 80% 的写入和 20% 的读取,更新可以忽略不计。
现在 API 是同步的,我的意思是对于每个请求,我们存储/检索数据并将确认/数据发送回客户端。
一种扩展方法是扩展(垂直和/或水平)我们的 API 服务器并在 userId 上对数据库进行分片。完成数据库分片是因为我们估计每百万用户需要 1TB 的数据存储。我们还计划迁移到 SSD,但这需要一些时间,因为我们有自己的数据中心并且迁移正在进行中。
我预见的主要挑战是在 sdk 推出流行应用程序时处理新用户的激增。我正在考虑一些方法:
1)在写入请求期间,只需提取实体,推送到 KAFKA 并向客户端发送 ACK。消费者比提取实体从队列中持久化并分批插入它们。
2)使用不同的读写服务器。对于读取使用现有的同步架构。对于写请求公开一个由 Netty 支持的不同 URL,它将提取实体以持久化并将它们推送到内存队列,向客户端发送 ACK。异步传输到 kafka 队列,然后最终传输到数据库。
3) 对每个请求使用异步服务器 Quasar+Comsat 和轻量级线程,让客户端等待确认(也获取持久实体的自动增量 ID)。问题是数据库连接的数量是瓶颈,允许产生许多并发的轻量级线程可能并没有真正的帮助。
任何有关指出这些方法的优点/缺点/改进的帮助或对新方法的建议都会有很大帮助。即使我们从 10M 扩展到 100M,关于这些方法中的哪一种是正确的观点也会有所帮助。我们没有网络界面,所以所有的数据传输都是纯 json 的,在发展中国家,我们还必须支持 2G 设备和大量网络断开,所以也必须考虑到这一点。
java - 在光纤 Quasar 之间传递消息
我正在使用类星体光纤来收听和处理QueueObjectChannel
. 我不确定我应该使用什么对象作为光纤之间的消息队列。我遇到的问题是我不明白应该传递给QueueObjectChannel
构造函数的内容。根据 javadoc,构造函数应该采用,QueueObjectChannel(co.paralleluniverse.strands.queues.BasicQueue<Message> queue, Channels.OverflowPolicy policy, boolean singleProducer, boolean singleConsumer)
但这似乎违反直觉,因为我正在尝试构建实现BasicQueue
.
我应该实现接口吗?
我对光纤间通信的理解完全关闭了吗?
multithreading - 如何让类星体纤维与 JSF 以最佳方式工作?
如何让 quasar 与 JSF 以最佳方式工作?我在 FiberHttpServlet 上创建了一个带有 Comsat Quasar 集成的 JSF 项目,但在数量上没有看到任何改进。
我的项目在这里:https ://github.com/sanketsw/Quasar_JSF_Demo
不幸的是,在从 JMeter 测试时,未发现 Fiber 对任何正面影响(服务器上限为 50 个线程,而 JMeter 测试运行 3000 个用户)。响应与 javax.faces.webapp.FacesServlet 完全相同,最多 500 个用户。对于 3000 个用户,请求失败的错误率更高,响应时间也明显高于正常的 FacesServlet 成功请求。
如果您碰巧在此线程上进一步工作并有更好的结果,请告诉我。或者请看看我是否在配置中犯了任何错误。
gradle - Kotlin Quasar 示例不起作用
我正在测试 Kotlin Quasar actor 示例。 Quasar 和 Kotlin – 强大的匹配 所以问题是,这个例子是否过时了,是否有任何文档可以让我找到如何使用 Kotlin 和 Quasar?
这是我的 gradle.build 文件。
fiber - 类星体平行宇宙示例
我是 Quasar 的新手,想知道是否有像下面这样的例子。或者即使有人可以指出我如何做到这一点的正确方向。
所以我需要做的是读取一个 json 文件。为每个索引创建一个新的 Fiber 并从 json 传递一些值。每个纤程都会根据 json 中的值创建一个执行函数。但根据值的不同,某些纤维可能需要更长的时间才能完成。将等待最多 5 秒完成。
我假设所有这些纤维都将并行运行。
这甚至可能吗?任何例子都会很棒。
quasar - Quasar 多光纤警告
我是类星体的新手,我尝试过这样做。基本上我收到一个警告,光纤阻塞了一个线程。为什么 ?我不能做下面的事情吗?
谢谢
java - 如何在 Gradle 中配置 Quasar
我是 Gradle 的新手,我不知道该怎么做。
这是关于如何通过 Gradle 安装 Quasar 的 Quasar 文档:Quasar Docs
页面中还有一个模板项目:Template Gradle Project
最后这是我的build.gradle
:
我得到这个错误:
所以我该怎么做?我再次很抱歉问这个问题,但我是 Gradle 的新手,在发布这个问题之前我用谷歌搜索了很多。谢谢
java - AOT 仪表是什么意思?
我知道字节码检测是什么。它只是在运行时更改 .class 文件字节码,这似乎从 JDK 1.5 开始可用。但是,据说是在类加载期间而不是运行时。
现在我的问题是,什么是 AOT 或 Ahead of Time 仪器?什么是相反的程序?随着时间的推移仪表?
检测您的代码
Quasar 光纤依赖于字节码检测。这可以在类加载时通过 a 完成Java Agent
,或者在编译时使用 Ant 任务完成。运行 Instrumentation
Java AgentQuasar
的轻量级线程实现依赖于字节码检测。检测可以在编译时(下面详述)或在运行时使用 Java 代理执行。要运行 Java 代理,必须将以下内容添加到 java 命令行(或使用您喜欢的构建工具将其添加为 JVM 参数):
-javaagent:path-to-quasar-jar.jar
提前 (AOT)
检测 使用 Quasar 检测程序的简单且更可取的方法是使用 Java 代理,它在运行时检测代码。然而,有时,运行 Java 代理不是一种选择。Quasar 通过 Ant 任务支持 AOT 检测。该任务位于
co.paralleluniverse.fibers.instrument.InstrumentationTask
中quasar-core.jar
,它接受要检测的类文件集。并不是所有的类都会被实际检测——只有那些带有suspendable method
s 的类(见下文)——所以只需将程序中的所有类文件都交给任务。事实上,Quasar 本身已经 提前进行了检测。