网络通讯
SmartEDB 支持两种网络通信模式,分别是有状态和无状态协议。有状态通信协议会期待请求的响应,并跟踪相关信息;如果未收到响应,它还会尝试重新发送请求。相比之下,无状态应用程序则简单地向 SmartEDB 模块发送请求并接收响应,而不会保存任何中间信息。大多数情况下,SmartEDB 的通信架构采用的是有状态模式。而在 REST(表述性“状态”转移)服务中,则使用了无状态通信。
例如,SmartESQL、SmartEDB 高可用性模块、SmartEDB 集群扩展模块以及主动复制结构体等组件,都通过通信通道在 SmartEDB 网络节点之间建立远程连接。这些通道实现了节点之间的端到端通信,如主节点与副本节点或集群节点间的交互。通过抽象化的通信通道设计,SmartEDB 的网络组件可以独立于底层介质和操作系统环境工作。通道配置包括性能、安全性和其他参数,确保其按时可靠地传输数据。为了保障通信的安全性,我们采用了 SSL(安全套接层)加密技术,这是一种行业标准的加密方式,能够为通过 TCP/IP 运行的 SmartEDB 组件提供通信隐私和身份验证。
对于 SmartEDB 的 REST 服务,其通信是无状态的,即运行时不会保存客户端应用程序会话的状态信息。一个典型的基于 REST 的应用实例是 SmartEDB xPanel。尽管 REST 通信不依赖于通道,但所有通信仍然可以通过集成的第三方 SSL 软件进行可选的安全保护。
安全套接字层集成
为了确保安全通信、授权和认证,SmartEDB通过安全套接层(TLS/SSL)实现了网络传输层的安全性。目前,我们支持 OpenSSL 和 wolfSSL 的 TLS 实现,以满足不同应用场景的需求。
OpenSSL 是一个广泛使用的通用加密库,提供了 SSL 和 TLS 协议的开源实现。它是一个强大且功能丰富的工具包,适用于各种商业级加密和安全通信需求,是全球众多系统中不可或缺的一部分。
wolfSSL 则是一款专为嵌入式、实时操作系统和资源受限环境设计的轻量级 SSL/TLS 库,用 ANSI C 编写而成。由于其小巧的体积和高效的性能,wolfSSL 成为这些环境中理想的解决方案。它支持最新的 TLS 1.3 和 DTLS 1.3 协议标准,并由已通过 FIPS 140-2 认证的 wolfCrypt 加密库提供安全保障。
如需了解更多关于 wolfSSL 和 OpenSSL 之间的区别,请参考以下页面:https://www.wolfssl.com/docs/wolfssl-openssl
IPv6 网络地址
从 7.1.1795 版本开始,使用 IPv6 地址协议来指定节点地址。在网络地址以“<主机>:<端口>
”形式表示的地方,IPv6 地址必须用方括号括起来,例如:“[::1]:5000
”或“[fe80::21e:4fff:fe9c:5398%1]:5000
”。这是为了避免与 IPv6 地址中的 “:”
发生冲突。
本地语言应用接口
用于管理网络通信的应用程序编程接口(API)和方法取决于所使用的编程语言。请使用以下链接查看您开发环境的详细说明和示例:
开发语言 | 说明 |
---|---|
C / C++ | 用C / C++语言管理网络通信 |
Java | 用Java 语言管理网络通信 |
Python | 用Python 语言管理网络通信 |
C# | 用C# 语言管理网络通信 |