bolt 比 http 有什么优势,为什么我们更喜欢 bolt,

What advantage bolt gives over http and Why should we prefer bolt,

我正在后端使用 neo4j 和 Spring Data Neo4j (SDN) 开发图形数据库。 SDN 允许我使用 HTTP 或 BOLT 连接到 neo4j,SDN 还提供了我只需要提到的所有配置,包括属性和依赖项

#Replace http with bolt    
spring:
    data:
        neo4j:
            uri: http://localhost:7474
            username: neo4j
            password: nopassword

但是,在使用 HTTP 时,我不需要包含任何其他依赖项,只是 spring-boot-starter-data-neo4j 工作正常

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>

但是为了使用 BOLT,我需要包含一个额外的依赖项

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-neo4j</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.neo4j</groupId>
                <artifactId>neo4j-ogm-http-driver</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>4.2.2.BUILD-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j</groupId>
        <artifactId>neo4j-ogm-bolt-driver</artifactId>
        <version>2.1.2</version>
    </dependency>

所以让我把我的问题分解成更小的问题

  1. 为什么我们应该使用 bolt 而不是 HTTP?
  2. 它与 HTTP 有何不同?
  3. 它比 HTTP 有什么优势或劣势?
  4. 我应该使用它还是只使用 HTTP 就可以?

Bolt 是一种二进制协议,比 HTTP 更紧凑,吞吐量更高。您可能考虑将 HTTP 与当前版本的 SDN 一起使用的唯一原因是,如果您使用 HAProxy 前端的 HA 设置。 否则,Bolt 应该是您的默认选择。

有关螺栓的更多信息:https://neo4j.com/blog/neo4j-3-0-language-drivers/ https://dzone.com/articles/introducing-bolt-neo4js-upcoming-binary-protocol-p