-->
进入 serverless 时代,所有的 serverless 数据库厂商都推出了基于 HTTP 协议的新 API。
例如:
最直接的原因是,在 serverless 应用中,保持一个持久连接太难了。引用自 AWS 博客:
Traditionally, applications that communicate with relational databases use drivers that provide a persistent connection between the application and the database server. With the advent of serverless applications, including those created using AWS Lambda, persistent connections from the application are no longer practical because serverless applications are, by nature, stateless.
可见,之前在服务中习以为常的连接池在 serverless 时代已不复存在。 最简单的描述就是你需要有一个进程持有 TCP 的 socket 来应对请求,但是这本身就是违背 serverless 精神的浪费。
除了保持连接的困难性,HTTP 相比 TCP 还有很多显著的优点。
HTTP 是普遍支持和标准化的,使其与各种设备、平台和编程语言兼容。这种普遍的支持促进了不同系统和服务之间更容易的集成和互操作性。
老旧的 TCP 协议可能需要为每个新系统或应用程序进行特定实现或定制解决方案,增加了复杂性并限制了互操作性。
HTTP 本质上是无状态的,这意味着每个客户端到服务器的请求是独立的。这简化了服务器设计,因为它不需要维护会话状态。然而,当需要时,HTTP 允许通过 cookie、header 和其他机制进行会话控制。
老旧的 TCP 协议通常在协议层管理状态,这可能会增加服务器端的复杂性和资源消耗,尤其是长连接情况下。
HTTP 可以通过 HTTPS(HTTP security)轻松实现安全,HTTPS 集成了 TLS(传输层安全)加密,确保了客户端和服务器之间的数据保密性和完整性。HTTPS 被广泛采用和支持。
老旧的 TCP 协议可能需要实现额外的安全层,这可能比HTTPS更复杂且标准化程度较低。
基于 HTTP 的 API 通常由于有众多支持 HTTP 的工具、库和框架而更容易开发、调试和维护。现代开发实践和微服务架构通常原生支持 HTTP API。
老旧的 TCP 协议可能需要更专业的知识来实现和调试,且工具可能较少或更复杂。
设计为通过 HTTP/HTTPS 工作的数据API自然适合Web生态系统,更容易与 Web 应用、云服务和其他 API 集成。JSON 和 CSV 是易于通过 HTTP 传输的文本格式,可以使用 zstd 等压缩算法快速压缩,然后非常快速地解析。
老旧的 TCP 协议必须设计和实现定制的二进制格式,这在整个行业的努力下仍然很难做到更好。
JSON 因为其是前端的原生数据格式,最终成为了前后端已经应用间通讯的事实标准。而且 JSON 之前广受诟病的性能问题也因为最近几年问世的高性能实现而得到有效的解决,比如 simdjson, 其处理数据的性能已经超过 protobuf。
虽然 HTTP/1.1 相比原始 TCP 连接引入了一些开销(由于 header 和基于文本的格式),但向 HTTP/2 和 HTTP/3 的演进显著提高了效率、延迟和并发性,减少了性能差距,同时保留了 HTTP 的优点。
老旧的 TCP 协议在特定用例中可能高效,尤其是在开销最小化至关重要的情况下,但它们缺乏 HTTP/2 和 HTTP/3 中的现代增强功能,如 header 压缩和多路复用。
现代 HTTP Client 都已经支持了 ZSTD, 能明显的降低传输数据规模,提高响应时间。
HTTP 支持客户端和网络级别的缓存机制(通过代理),这可以显著减少服务器负载并提高数据检索时间。
老旧的 TCP 协议通常没有标准化的缓存机制,这可能导致带宽和服务器负载增加。总结而言,虽然 HTTP 和 TCP 在网络通信中各有其地位,但通过 HTTP 使用数据 API 提供了一种更标准化、灵活和安全的方法,与现代 Web 技术和开发实践高度契合。这使其成为许多应用程序的首选,尤其是那些需要广泛兼容性和易开发性的应用程序。
云原生应用程序应本质上是分布式和高度可用的,但基于 TCP 的会话机制的协议自然会阻碍应用程序实现分布和高可用性。
基于 HTTP 的数据 API 协议是现代云原生架构的最佳选择:无状态。
ClapDB 优先支持 HTTP/HTTPS,来追求更高的性能,更便宜的成本,以及更安全的通讯方式。