小编sam*_*ers的帖子

访问 SSL-Auth 保护的 Kafka 代理/集群时需要 Java 生产者/消费者 kafka 客户端属性吗?

当我们连接到 Kafka 集群/kafka 时,在 java 客户端中我们定义某些属性 -
示例Producer 属性

 Properties props = new Properties();
 props.put("bootstrap.servers", "localhost:9092");
 props.put("acks", "all");
 props.put("retries", 0);
 props.put("batch.size", 16384);
 props.put("linger.ms", 1);
 props.put("buffer.memory", 33554432);
 props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
 props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Run Code Online (Sandbox Code Playgroud)

消费者属性示例-

Properties props = new Properties();
props.setProperty("bootstrap.servers", "localhost:9092");
props.setProperty("group.id", "test");
props.setProperty("enable.auto.commit", "true");
props.setProperty("auto.commit.interval.ms", "1000");
props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
Run Code Online (Sandbox Code Playgroud)

同样,当连接到使用 SSL-Auth 保护的 Kafka 集群时,是否应在此处提及与 SSL-Auth 相关的任何属性(如密钥库和信任库路径等)。
有人可以详细说明并解释 Java 客户端如何连接到安全的 Kafka 集群吗?

参考 - 以上道具取自 Kafka 文档 - kafka 生产者/ kafka 消费者

ssl-certificate apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-security

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

使用spring-boot-starter-data-redis时,如何设置驱逐策略?LFU 还是 LRU 等?

当redis通过spring boot()作为缓存技术时<artifactId>spring-boot-starter-data-redis</artifactId>,我看到文件中很少有像TTL这样的属性可以设置application.properties。前任:

spring.cache.cache-names=cache1,cache2
spring.cache.redis.time-to-live=600000
Run Code Online (Sandbox Code Playgroud)

以及附录 A 中的更多片段。常见应用程序属性

spring.redis.database=0 # Database index used by the connection factory.
spring.redis.url= # Connection URL. Overrides host, port, and password. User is ignored. Example: redis://user:password@example.com:6379
spring.redis.host=localhost # Redis server host.
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何设置缓存逐出策略,例如 - 最不常用或最近最后使用等。
我必须如何以及在哪里提供此配置详细信息?

spring redis spring-data-redis spring-boot

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

当 pod 包含多个容器时,K8s 的活性探测行为?

场景:一个 K8S Pod 具有多个容器,并且为每个容器配置活性/就绪探针。现在,如果活性探测在某些容器上成功,但在少数容器上失败,k8s 会做什么。

  1. 它会仅重新启动失败的容器
    还是
  2. 它会重新启动整个 Pod 吗?

kubernetes kubernetes-pod readinessprobe livenessprobe

5
推荐指数
2
解决办法
8643
查看次数

Spring Data JPA 与 Hikari:为什么 hikari 自动提交属性设置为“true”?

Spring Data JPA 或 Hibernate 默认情况下自动提交设置为 false。这听起来很合理,因为这些框架与实体一起工作,并且对实体的更新可能涉及通过多个 SQL 查询对多个表进行更新。因此,通过将自动提交设置为 false 并显式控制事务,这些框架可确保对实体的更改是原子的且一致的。

但现在 Hikari 是 spring data jpa 的默认连接池提供程序,在查看应用程序日志时,我看到 hikari 将连接池的自动提交设置为 true。

2021-10-24 11:30:07.815 DEBUG   [restartedMain] com.zaxxer.hikari.HikariConfig||HikariConfig.logConfiguration:1135: autoCommit................................true
Run Code Online (Sandbox Code Playgroud)

关于为什么这样设置以及这是否会影响事务的任何解释(我不认为它会影响事务,因为每个事务可能会再次将自动提交设置为 false,从而接管何时提交事务。)

编辑 - 遵循 @ken-chan 的回答和讨论。
对于使用 spring data jpa 和 @Transactional(100% Hiberante)的项目,将 hikaris 连接池设置更改为auto-commit=false应该会带来性能优势。请参阅答案和后续讨论以了解更多详细信息。

hibernate spring-data-jpa spring-boot hikaricp

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

liquibase“splitStatements”有什么好处?

正在使用的 liquibase 版本 - org.liquibase:liquibase-core:3.8.2。(不是专业版)

Liquibase 文档(12)如下所述splitStatements(默认为 true)

设置为 false 时,不会在 ; 和 GO 上使用 Liquibase split 语句。如果未设置则默认为 true

当设置为 false 时,删除 ; 和 GO 上的 Liquibase split 语句。默认值为:true。

我发现的另一个有用的软件帖子 - In Liquibase is it OK to have an empty line on splitstatements?

;我理解 - 当 splitStatements 为 true 时,liquibase 会拆分和上的语句GO

  1. 目前尚不完全清楚splitStatements增加了什么好处 - 即,如果 SQL 语句是否在(结束分隔符)上分割;,会有什么区别 - 即,如果语句在单个查询或多个查询中执行 - 数据库不会处理“ ;” 无论如何基于的东西。这似乎是必须理解的。——有人可以举个例子吗?
  2. 我当前的项目有splitStatements:false. 禁用 splitStatements …

liquibase liquibase-sql

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

Spring Security 内部是否使用 AOP?

我听说 AOP 可用于分离安全、事务和日志记录等跨领域方面。
所以,我想了解 Spring Security 是否在内部使用 AOP?

aop spring spring-security spring-aop

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

JUnit / Hamcrest - org.hamcrest.CoreMatchers.is() 已弃用。我应该用什么代替?

该方法org.hamcrest.CoreMatchers.is()已弃用。
文档说,使用-org.hamcrest.CoreMatchers.isA()代替。

isA()似乎一起服务于不同的情况。

好的。什么,来到我的问题。早些时候我使用is()如下

// might be i should not be using it like this, but it works.
assertThat(actualRes, is(true));
Run Code Online (Sandbox Code Playgroud)

现在我不能使用相同的isA(). 它引发编译错误不适用于参数(布尔值)

我明白是isA()做什么的。我想知道的是,鉴于is() 已弃用,我应该使用什么来替代assertThat(actualRes, is(true))

java junit hamcrest junit4

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

kubernetes pod 中的容器是否属于同一 cgroup?

在多容器 Kubernetes pod 中,容器是同一个 cgroup(连同 pod)的一部分还是为每个容器创建一个单独的 cgroup。

cgroups docker kubernetes docker-container kubernetes-pod

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

在 Kubernetes 中,副本集的真正用途是什么?

我知道 k8s 资源的层次结构顺序。简单来说,

  1. 服务:服务是将应用程序暴露给外部世界(或集群中)的东西。( CluserIp、NodePort、Ingress 等服务 类型与这个问题没有太大关系。)
  2. 部署:部署负责保持一组 Pod 运行。
  3. 副本集:部署反过来依赖副本集来保持 Pod 集运行。
  4. pod: - 一个 pod 由一个容器或一组容器组成
  5. 容器- 实际所需的应用程序在容器内运行。

在这个问题中我想强调的是,为什么我们有replicaset. 为什么不deployment直接处理或负责保持所需数量的 Pod 运行。但deployment反过来又依赖replicset于此。

如果 k8s 是这样设计的,那么肯定会有一些好处replicaset。这就是我想要深入探索/理解的。

kubernetes kubernetes-pod

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

如何在 DBeaver 中使用 postgres sql 元命令?

我看到 postgres 提供了一些可以从 psql (shell?)使用的方便的元命令。我尝试过使用 DBeaver GUI 控制台,但它们不起作用。

有没有办法在 DBeaver 中使用这些元命令,例如\d(显示所有数据库)、\dt(显示所有表)等。

我使用的是 postgres db 13.5。

postgresql dbeaver

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