云原生应用的通信协议、模式与网关技术解析
1. 高级消息队列协议(AMQP)
高级消息队列协议(AMQP)是一种二进制协议,主要围绕消息传递设计,具备丰富的功能特性,包括可靠队列、基于主题的发布/订阅、路由、安全和事务等。不过,丰富的功能特性也使得它并非特别轻量级或快速的协议。不过,AMQP 经过了众多厂商的实战检验,可靠性极高。使用 AMQP 的一个主要原因是它在不同厂商之间具有互操作性。
1.1 协议适用场景
AMQP 和 MQTT 都可通过 TCP 与 WebSockets 结合使用,适用于限制端口 443(HTTPS)流量的环境。一般来说,如果需要简单可靠的消息传递,可使用 MQTT;如果需要关注互操作性以及超越简单消息传递的功能,则应选择 AMQP。
1.2 序列化考虑
除了协议,数据的序列化和反序列化也会影响整体性能,在最坏的情况下可能成为瓶颈。
1.2.1 JSON
JSON 是目前应用最广泛的格式,它具有可读性、自包含性且易于扩展,但内存占用较大,在处理大量数据时,序列化和反序列化的成本较高。
1.2.2 Protobuf
Protobuf 使用二进制格式,因此每种语言都需要一个生成器,而 JSON 只是一种字符串格式,能被所有现代语言理解。不过,几乎所有现代语言都有对应的 Protobuf 生成器。使用 Protobuf 时,需要事先在 proto 文件中声明模式,而不是像 JSON 那样在每条消息中传递模式。该 proto 文件会添加到每个需要序列化和反序列化数据的服务中,生成器会生成一个表示数据的对象,无需编写序列化代码。
超级会员免费看
订阅专栏 解锁全文
1051

被折叠的 条评论
为什么被折叠?



