欢迎光临
我们一直在努力

neo4j的几个端口7474、7473、7687都是做什么用的

在构建知识图谱(Knowledge Graph)或图特征存储(Graph Feature Store)时,Neo4j是核心组件。理解其服务端口对于安全部署和高效连接至关重要。Neo4j默认开放了几个关键端口,它们各自承担着不同的职责,确保了Web管理、安全连接和高性能驱动通信。

1. 7474 和 7473:HTTP/Web API 访问

这两个端口主要用于Neo4j的基于Web的交互和管理。

端口 7474:默认 HTTP

这是非安全的HTTP端口,主要用途包括:
1. Neo4j Browser 访问: 默认情况下,您通过 http://:7474 访问Neo4j的Web管理界面,即Neo4j Browser。
2. REST API 交互: 允许通过标准的HTTP/REST请求与数据库进行交互,执行Cypher查询或进行数据库管理操作。虽然现代驱动程序更推荐使用 Bolt 协议,但 REST API 在自动化脚本或轻量级集成中仍有应用。

端口 7473:默认 HTTPS

这是安全的HTTPS端口,用于加密的Web访问。在生产环境中,出于安全考虑,强烈推荐关闭 7474 端口,并强制使用 7473 端口进行管理界面和 REST API 的访问。

2. 7687:高性能 Bolt 协议

端口 7687 是 Neo4j 最重要的端口,它承载了现代 Neo4j 客户端驱动程序的默认通信协议——Bolt 协议

Bolt 协议的优势

  1. 效率: Bolt 是一个优化的、轻量级的、基于二进制的协议,专为高性能图数据传输设计。
  2. 原生支持: 所有的官方 Neo4j 驱动(Python、Java、JavaScript、Go 等)都默认通过 7687 端口连接和通信。
  3. 事务性: Bolt 协议是事务性的,并支持双向消息传递。

在AI应用中,无论是通过Python驱动将模型预测结果写入图数据库,还是从图数据库中提取特征数据供模型训练,都将依赖 7687 端口。

3. 端口配置与实践示例

所有的端口配置都在 Neo4j 的主配置文件 neo4j.conf 中定义。以下是关键配置项:

Neo4j 配置(neo4j.conf

如果您需要修改这些端口,或限制哪些网络接口可以访问它们,需要修改以下配置:


1
2
3
4
5
6
7
# 允许 HTTP/HTTPS 绑定到所有接口(默认仅限 localhost)
# 生产环境请务必配置防火墙限制访问
# dbms.connector.http.listen_address=:7474
# dbms.connector.https.listen_address=:7473

# Bolt 协议配置
dbms.connector.bolt.listen_address=0.0.0.0:7687

Python 连接 Bolt 端口示例

以下 Python 代码展示了如何使用官方 neo4j 驱动通过 7687 端口连接到数据库并执行查询:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from neo4j import GraphDatabase

# URI 格式必须使用 'bolt' 协议,默认端口为 7687
URI = "bolt://localhost:7687"
USERNAME = "neo4j"
PASSWORD = "password"

class Neo4jConnector:
    def __init__(self, uri, user, password):
        self.driver = GraphDatabase.driver(uri, auth=(user, password))

    def close(self):
        self.driver.close()

    def print_greeting(self, message):
        with self.driver.session() as session:
            greeting = session.execute_write(self._create_and_return_greeting, message)
            print(greeting)

    @staticmethod
    def _create_and_return_greeting(tx, message):
        # 这是一个简单的 Cypher 查询示例
        result = tx.run("CREATE (a:Greeting) "
                        "SET a.message = $message "
                        "RETURN a.message + ', from Neo4j DB'", message=message)
        return result.single()[0]

# 实例化并连接 (依赖 7687 端口的开放)
greeter = Neo4jConnector(URI, USERNAME, PASSWORD)
greeter.print_greeting("Hello AI Infra")
greeter.close()

总结与安全建议

端口 协议 用途 部署建议
7687 Bolt 核心数据连接(驱动程序) 必须开放,但应受网络ACL或防火墙保护
7474 HTTP Web Browser/REST API (非安全) 生产环境应禁用或严格限制访问
7473 HTTPS Web Browser/REST API (安全) 推荐使用此端口进行管理访问

在部署 Neo4j 服务时,请确保防火墙(如 AWS Security Groups 或 Linux Iptables)只允许受信任的应用程序和管理员 IP 访问这些端口,特别是 7687 和 7473。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » neo4j的几个端口7474、7473、7687都是做什么用的
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址