首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高EventstoreDB的性能

提高EventstoreDB的性能
EN

Stack Overflow用户
提问于 2021-09-01 16:39:04
回答 1查看 226关注 0票数 0

我使用的是ESDB v20.10.2.0。这将部署在Kubernetes集群中的docker容器中;数据和日志存储在同一个安装目录中。我们使用Java客户端从esdb服务器读取流,pfb是代码片段。

代码语言:javascript
复制
ReadStreamOptions readStreamOptions = ReadStreamOptions.get().fromStart().notResolveLinkTos();
DomainEventDeserializer deSerializer = new DomainEventDeserializer();
try {
  List<ResolvedEvent> resolvedEvents =
      client.readStream(addPrefix(aggregateId), readStreamOptions).get().getEvents();

   return resolvedEvents
      .stream()
      .map(
          resolvedEvent -> {
            byte[] eventData = resolvedEvent.getOriginalEvent().getEventData();
            return deSerializer.deserialize(null, eventData);
          })
      .filter(data -> data != null)
      .collect(Collectors.toCollection(LinkedHashSet::new));

从esdb读取事件所花费的时间是从sql读取某些内容的时间的3倍。我想知道什么是最优的配置,以及如何提高读取性能。

.\EventStore.ClusterNode.exe --db .\db -日志.\logs -不安全-运行-所有-启用-原子-发布-http-启用-直方图-读取器-线程数-计数-工作线程- 10 -日志-http-请求。

这是用于在本地系统中运行esdb的命令,在kubernetes集群中也启用了相同的选项。

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 18:28:14

我无法解释你为什么要根据你分享的内容得出这些结果,但在这个问题上有几个注意事项:

  • Kubernetes几乎不推荐用于数据库,更不推荐用于性能测试。
  • 似乎使用的是过时版本的Java gRPC客户端,当然是0.x版本。
  • 当前Java gRPC客户端的一个关键限制是它不支持大事件流。返回的列表是在向用户返回任何内容之前完全构造的。取决于您如何设置测试,它可能会影响您的结果。有公开的公关来解决这个问题:https://github.com/EventStore/EventStoreDB-Client-Java/pull/79。这是其他官方客户(C#,Rust,NodeJS,Go,...etc)没有的限制。Java中没有异步流类型。我们希望在保持依赖关系图尽可能小的同时保持Java 8的兼容性。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69017683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档