小编use*_*603的帖子

为什么 MongoDB 一致不可用而 Cassandra 可用不一致?

蒙戈

从这个资源我明白为什么 mongo 不是A(Highly Available)基于下面的陈述

MongoDB 支持“单主”模型。这意味着您有一个主节点和许多从节点。如果 master 宕机,其中一个 slave 会被选为 master。此过程会自动发生,但需要时间,通常为 10-40 秒。在这个新的leader选举期间,你的副本集宕机了,无法写入

是否出于同样的原因,据说 Mongo 是Consistent(因为写入没有发生,所以返回系统中的最新数据)而不是Available(不可用于写入)?

直到重新选举发生并且写操作处于挂起状态,从机返回是否可以执行读操作?选择 master 后,用户是否再次重新启动写入操作?

但我从另一个角度不明白为什么 Mongo 是highly consistent 如上所述mongodb 在 CAP 定理中的立场?,

Mongo 是consistent默认情况下所有读取都转到主服务器的情况。

但事实并非如此。如果在主/从模式下,所有读取都将转到主服务器,那么从服务器有什么用?它进一步说 If you optionally enable reading from the secondaries then MongoDB becomes eventually consistent where it's possible to read out-of-date results.这意味着 mongo 可能与主/从不一致(前提是我在返回之前没有配置对所有节点的写入)。如果所有读取和写入都进行主要操作,那么说 mongo 是一致的对我来说是没有意义的。在这种情况下,每个其他数据库(如 cassandra)也将是一致的。不是吗?

Cassandra 从这个资源 我明白为什么 CassandraA(Highly Available )基于下面的陈述 …

mongodb cassandra

6
推荐指数
2
解决办法
2530
查看次数

HTTP 响应代码 500、502、503?

浏览HTTP 响应代码.. 并了解这些响应代码(rcodes)代表什么

但我不确定在下面的情况下将向客户端/消费者(例如浏览器)发送什么 rcode。我使用 NGINX 作为反向代理,使用 Apache 作为 HTTP 服务器,在 NGINX 后面运行 Web 应用程序(例如应用程序)。

几个场景

  1. 应用程序中发生运行时错误,抛出 rcode 为 500(默认情况下运行时错误代码)。我的理解是nginx会继续抛出500而不将其转换为502?

  2. 应用程序已关闭或不可用。我的理解是 nginx 在这种情况下会抛出 503 而不是 502 ?

  3. 应用程序花费的时间比 nginx 默认连接超时时间还要长。我的理解是nginx在这种情况下会抛出504?

  4. 如果以上所有点都正确,不确定 nginx 何时会抛出 502 ?NGINX何时会认为从上游服务器收到的响应为无效响应?

web-applications nginx httpresponse http-response-codes nginx-reverse-proxy

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

具有依赖性的Maven jar?

我想构建项目,以便最终jar包含单个jar文件中的所有依赖项(如果不可能包括从jar文件中的依赖项的类)我跟随线程包含Maven的jar中的依赖项但是包含了依赖项我甚至没有在我的pom中提到过.这是我的POM,只有两个依赖项.

我希望在构建final时,它包含它在pom中提到的特定依赖项(在类或jar形式中)

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>com.myProject</groupId>
  <artifactId>utils</artifactId>
  <version>1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

java build maven

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

什么是JAXBContext.newInstance(String contextPath)?

我在项目中看到了以下方法的用法

JAXBContext jc = JAXBContext.newInstance("org.test.customer");
Run Code Online (Sandbox Code Playgroud)

org.test.customer软件包名称在哪里。

这是否意味着我们可以编组所属的班级org.test.customer

我的理解是基于 http://docs.oracle.com/javaee/5/api/javax/xml/bind/JAXBContext.html#newInstance(java.lang.String)

java jaxb marshalling

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

hibernate GenerationType.AUTO 在 Oracle 中如何工作?

使用 oracle/JPA Hibernate。我以下面的方式导入了在学生表下具有值的模式。这是例子

100
85
80
70
1
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
Run Code Online (Sandbox Code Playgroud)

现在,当插入新学生时,它不会插入最大值,即 101 (max + 1)。但是在两者之间插入一些可用的值,例如 90。我不确定它怎么可能?

Hibernate 是否在内部创建一些数据库序列并使用然后使用最后创建的值加 1

java oracle hibernate jpa auto-generate

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

在数据库中更新/插入/检索重音字符?

我用的是oracle 12G

\n\n

当我@F:\\update.sql从 sql plus 运行时,它显示重音字符\xc3\xa9运行时,当我从 sqlplus 或 sql Developer 检索时,它会将重音字符显示为垃圾字符

\n\n

当从 sql plus 运行单个语句时。现在,如果我从 sqlplus 检索它,它会显示正确的字符,但是当我从 sqldeveloper 检索它时,它再次显示垃圾字符。

\n\n

update.sql内容是这样的

\n\n
update employee set name =\'\xc3\xa9\' where id= 1;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要的是当我运行 @F:\\update.sql 时,它应该以正确的格式插入/更新/检索它,无论它是来自 sqlplus 还是任何其他工具?

\n\n

信息:- 当我跑步时

\n\n
   SELECT * FROM NLS_DATABASE_PARAMETERS  WHERE PARAMETER LIKE \'%CHARACTERSET%\' \n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到以下信息

\n\n
PARAMETER                      VALUE\n------------------------------ ----------------------------------------\nNLS_CHARACTERSET               WE8MSWIN1252\nNLS_NCHAR_CHARACTERSET         AL16UTF16\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我@.[%NLS_LANG%]从命令提示符运行时我看到

\n\n
SP2-0310: unable to open file ".[AMERICAN_AMERICA.WE8MSWIN1252]"\n
Run Code Online (Sandbox Code Playgroud)\n

sql oracle sqlplus

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

Cassandra中的无主模型与MongoDB中的主-从模型?

我知道在Mongo中,我们可以有一个主机和多个从机,其中主机将用于写操作,而从机将用于读取操作。假设M1,M2,M3是以M1作为主节点的节点

但是我读到Cassandra据说是一种无大师模式。据说每个节点都是主节点。我没有得到什么意思?

假设M1,M2,M3是Mongo中以M1作为主节点的节点,而M2,M3是Mongo中的从节点,我相信写入将始终进入M1,而读取将始终进入M2,M3

说C1,C2,C3是Cassandra中的节点,在这里我相信写入和读取请求可以到达任何节点。这就是为什么它被称为无主模型。

mongodb cassandra nosql

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

如何使现有 JWT 令牌过期?

在我的新公司中,这是我们的 OAuth 流程

  1. 用户输入用户名和密码。
  2. 密码服务对其进行身份验证并调用中央 Oauth 服务(内部开发)。
  3. Oauth服务生成一些access_token(AT)并将其存储在数据库中并指定到期时间。
  4. 下次用户到来时,AT 会在 cookie 中传输,应用程序会使用 DB 中的 Oauth 服务对其进行验证,并更新到期时间以在 DB 中增加它。

现在我计划将其转移到基于 JWT 的身份验证。根据我对不同教程的理解,JWT 令牌本身包含可以在没有任何存储(缓存或数据库)的情况下进行验证的签名。我的问题是关于到期时间增量的处理。由于每次用户访问站点时我都需要增加会话时间,这意味着我需要生成新的 JWT 令牌并使前一个令牌过期。生成新的 JWT 令牌很容易,不确定如何使现有的 JWT 令牌过期?

我可以将包含 user_id 和最新 JWT 令牌的地图保存在缓存中。其余代币将被视为无效。但这种基于缓存的方法违背了 JWT 令牌的目的,即不应有任何存储需求。

authentication web-applications oauth oauth-2.0 jwt

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

如何在ActiveMQ中创建队列?

以下是ActiveMQ HelloWorld的代码片段, 用于使用ActiveMQ创建队列

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");

   // Create a Connection
   Connection connection = connectionFactory.createConnection();
   connection.start();

   // Create a Session
   Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

   // Create the destination (Topic or Queue)
   Destination destination = session.createQueue("TEST.FOO");
Run Code Online (Sandbox Code Playgroud)

根据ActiveMQ文档

此工具适用于客户端需要动态操作队列标识的罕见情况

看起来开发人员不应该使用createQueue创建队列.如果是,开发人员应该如何创建队列?他应该用ui还是其他方式创造而不是用编程方式来做?

然后它进一步说

此方法不适用于创建物理队列.队列的物理创建是一项管理任务,不能由JMS API启动.

我没有得到上述声明的意思?根据我的理解,开发人员应该手动编写队列.通过web ui或命令提示符.createQueue方法只返回与手动创建的队列关联的对象?

java activemq-classic jms

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

是什么使Kafka的吞吐量高?

大多数文章描述了Kafka在读/写吞吐量方面比ActiveMQ等其他消息代理(MB)更好。每位矿工在偏移的帮助下理解读/写可以使其更快。但是我不清楚偏移量如何使它更快?

在阅读了Kafka架构之后,基于以下几点,我有了一些了解,但不清楚是什么使Kafka可扩展和高吞吐量:-

  1. 大概有了偏移量,客户端就知道需要读取的确切消息,这可能是使其具有较高性能的因素之一。

    在其他MB的情况下,经纪人需要在消费者之间进行协调,以便仅将消息传递给消费者。但这仅适用于队列,而不适用于主题。然后,是什么使Kafka主题比其他MB主题更快。

  2. Kafka提供分区以实现可伸缩性,但其他消息代理(MB)(例如ActiveMQ)也提供群集。那么Kafka如何适合大数据/高负载?

  3. 在其他MB中,我们可以有监听器。因此,一旦收到消息,代理将传递消息,但是如果是Kafka,我们需要进行轮询,这意味着代理/客户端双方都有更多负载?

apache-kafka

4
推荐指数
2
解决办法
1519
查看次数