小编pos*_*ver的帖子

是否可以并行启动Mono并汇总结果

我知道可以链接Mono的,例如......

Mono<String> resultAMono = loadA();
Mono<String> resultBMono = resultA.flatMap(resultA -> loadB());
Run Code Online (Sandbox Code Playgroud)

这将链和resultBMono将在resultAMono返回时运行....

所以我的问题是,是否有可能并行启动2个单声道并且当两个单声道继续使用另一个单声道时?

我认为它看起来像这样......

Mono<String> resultAMono = loadA();
Mono<String> resuktBMono = loadB();
Mono<Tuple2<Stirng, String> tupleMono = Mono.zip(resultAMono, resultBMono);
Run Code Online (Sandbox Code Playgroud)

但是我不知道这将并行运行或者我可以做什么来并行运行...

谢谢答案....

project-reactor spring-webflux

10
推荐指数
1
解决办法
4837
查看次数

Gradle 依赖范围

我正在用 Gradle 进行一些实验,但作为主要的 Maven 用户,一些依赖范围让我感到困惑……

有些与 Maven 相同:

compile -> compile
runtime -> runtime
compileOnly -> provided
Run Code Online (Sandbox Code Playgroud)

但我也遇到了implementation这听起来像parentMaven POM的元素,但又不是。

有人可以向我解释一下是什么implementation以及其他一些,如果它们存在而我没有在这里提到(上面的测试版本很明显不需要解释)?

如果implementation不像Maven上的父级,我们如何在Gradle中具有Maven的父级POM效果?

gradle maven parent-pom

6
推荐指数
1
解决办法
7572
查看次数

清理策略:Compact/Delete and log.retention

我有一个关于 Kafka 主题清理策略及其与 log.retention 的交互的问题....

比如我把cleanup.policy设置为compact,compaction只会在topic的保留时间之后才开始或者保留时间对compaction没有影响?

问题的第二部分,如果我使用compact,delete一起,并且我有log.retention for让说1天,主题一直被压缩但是主题的内容会在一天后被删除?或者一天后实现压缩和删除?

谢谢你的答案...

apache-kafka

6
推荐指数
1
解决办法
1万
查看次数

将多个REST调用与Spring Webflux结合

我尝试使用Spring Webflux做一些事情,但是我确实对某些反应性概念感到困惑。

我有一些受表单身份验证保护的REST服务,在我可以调用我的业务REST服务之前,我必须调用通过Spring Security提供的“登录” URL,传递我的凭据并将返回的Cookie放置到对其他REST服务的进一步调用中。

以下是REST业务服务的呼叫摘要。

@RequestMapping(value = "/endpoint1", method = RequestMethod.POST)
public Mono<String> businessService(@RequestBody ApiManagementWrapper apiManagementWrapper, ServerWebExchange httpRequest) {
    log.info("Handling /enpoint1");

    Mono<String> t = fetch(apiManagementWrapper, httpRequest);

    return t;
}

private Mono<String> fetch(ApiManagementWrapper apiManagementWrapper, ServerWebExchange httpRequest) {
    return this.webClientProxy
            .post()
            .uri("http://localhost:8081/something")
            .headers(httpHeaders ->  httpRequest.getRequest().getHeaders())
            .cookies(httpCookies -> httpRequest.getRequest().getCookies())
            .body(BodyInserters.fromPublisher(Mono.just(apiManagementWrapper.getEnterpriseMessage()), Object.class))
            .exchange()
            .flatMap(response -> response.bodyToMono(String.class));
}
Run Code Online (Sandbox Code Playgroud)

完美地工作,我的问题是如何将其结合到呼叫登录服务中。

我考虑过以下login()方法...

private void login(ApiManagementWrapper apiManagementWrapper) {
    LinkedMultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
    formData.add("username", "user1");
    formData.add("password", "user1");

    Mono<ClientResponse> response =  this.webClientRouteConfirmation
            .post()
            .uri("http://localhost:8383/login")
            .body(BodyInserters.fromFormData(formData))
            .exchange();

    response.subscribe(clientResponse …
Run Code Online (Sandbox Code Playgroud)

project-reactor spring-webflux

5
推荐指数
1
解决办法
3359
查看次数

Yourkit 与 Java Mission Control

我有一个关于 Yourkit 和 Java Mission Control 的问题......

我 7 年前使用 Yourkit 来分析 J2EE 应用程序,现在我正在为另一个项目工作,我必须分析一个应用程序,该项目没有 Yourkit 的许可证。

在网上搜索的过程中,我发现了Java Mission Control,在我看来,它几乎与7年前的Yourkit具有相同的功能。

所以我的问题是,最新版本的 Yourkit 是否比 JMC 做了更多的事情,这样我就可以争论我的项目来争论支付许可证......

谢谢各位的解答....

yourkit jmc

5
推荐指数
0
解决办法
599
查看次数

Kubernetes持久卷和主机路径

我正在使用Kubernetes Persistent Volumes进行实验,在Kubernetes文档中找不到清晰的解释,并且该行为不是我所期望的,所以我想在这里问一下。

我配置了以下“持久卷”和“持久卷声明”。


kind: PersistentVolume
apiVersion: v1
metadata:
 name: store-persistent-volume
 namespace: test
spec:
 storageClassName: hostpath
 capacity:
  storage: 2Gi
 accessModes:
  - ReadWriteOnce
 hostPath:
  path: "/Volumes/Data/data"

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: store-persistent-volume-claim
  namespace: test
spec:
  storageClassName: hostpath
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
     storage: 1Gi
 

以及以下部署和服务配置。


kind: Deployment
apiVersion: apps/v1beta2
metadata:
 name: store-deployment
 namespace: test
spec:
  replicas: 1
  selector:
   matchLabels:
    k8s-app: store
  template:
   metadata:
    labels:
     k8s-app: store
   spec:
    volumes:
       - name: store-volume
         persistentVolumeClaim:
           claimName: store-persistent-volume-claim
    containers:
    - name: store
      image: …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes

5
推荐指数
1
解决办法
3489
查看次数

如何从 Helm 存储库获取 Helm Chart 的特定应用程序版本

Helm Chart 有 Version 和 appVersion 的概念。

我们使用版本来记录 Helm Chart 的内容是否发生更改(例如,模板、deployment.yaml 具有新的 Envrionment 值或 configmap.yaml 具有附加值),对于这些场景,版本号应该增加。我们正在使用 appVersion 来记录 docker 映像标签更改(因此业务应用程序的实际版本,我知道可以有多个容器映像,但我们能够将其中一个识别为主应用程序并使用其标签)...

现在,在我们的开发过程中,可以有多个业务应用程序的有效映像(功能开发,例如功能1、功能2、功能3),因此我们可以拥有如下所示的星座,[Helm Chart: myChart Version: 5.1 appVersion: feature1 ], [Helm Chart: myChart 版本: 5.1 appVersion: feature2], [Helm Chart: myChart 版本: 5.1 appVersion: feature3] 大多数部署都是自动化的,但有时我们不得不说有人部署了 feature2。

现在,困境来了,在我们的 Helm 存储库中,我们将拥有这 3 个图表。

5.1->feature1
5.1->feature2
5.1->feature3
Run Code Online (Sandbox Code Playgroud)

但是当我查看 Helm 命令“Helm Install”、“Helm Upgrade”、“Helm Pull”时,我只看到“--version”作为参数,但没有“--appVersion”,因此无法安装

helm upgrade -i myChartFeature2  myChart --version 5.1 --appVersion feature2
Run Code Online (Sandbox Code Playgroud)

我们不想对我们的图表进行版本控制,“5.1.0-feature1”,因为这样我们就会失去识别能力,当模板中的某些内容发生变化时我们有一个新的图表,或者当业务逻辑发生变化时我们有一个新版本...

所以我的问题是

  • 有没有办法说我想安装我的图表的这个特定应用程序版本?

谢谢各位的解答...

kubernetes kubernetes-helm

3
推荐指数
1
解决办法
5532
查看次数

如何扩展 Kafka Stream 应用程序

我对 kafka 文档中关于这个主题的措辞有点困惑,所以我想在这里问我是否正确地解释了这些内容?

因此,如果我正确理解这种扩展 Kafka Stream 应用程序的唯一方法是启动应用程序的新实例(或增加 application 中的流线程数量),这将确保 ConsumerGroup('application. id'),这样我就可以将流应用程序扩展到主题的分区数量(如果我的流拓扑连接到多个主题,实际上会发生什么,假设 TopicA 有 5 个分区,topicB 有 3 个分区,我加入了 TopicA 和 TopicB 的流,我猜在这种情况下我可以扩展到 3 个实例/线程)。

现在假设我有一个包含 5 个分区的 topicA,并且启动了应用程序的 3 个实例,如果我在拓扑中配置了 KTable,则每个 KTable 将包含来自特定分区的信息,并且我必须找出我的哪个实例(分区)上的元数据关键是,那么当我启动第四个实例时会发生什么,假设实例3上的KTable的键/值现在可以转到实例4上的KTable,不是吗?一方面问题是这样的重新平衡需要多长时间(我认为这取决于主题大小,所以假设需要 1 分钟,我正在查询 KTable 的应用程序在此操作期间会没有响应吗?)

附带问题是,此机制对于“streamBuilder.table(..)”和“streambuilder.groupByKey(..).reduce(..)”的工作原理是否完全相同?

最后一个问题,同样是一个具有 5 个分区的主题,但我没有启动 3 个应用程序实例,而是启动了一个具有 3 个流线程的实例 (num.stream.threads = 3),我会再次拥有 3 个 KTable 代表 5 个分区吗?如果我将线程大小从 3 更改为 4,其行为与增加实例数完全相同。

感谢您的回答..

apache-kafka apache-kafka-streams

1
推荐指数
1
解决办法
2359
查看次数