PostgreSQL是一个开源的对象-关系数据库系统,经过十多年的开发和改进,PostgreSQL已在可靠性、稳定性上已经十分强大,并且被应用的十分广泛。 很多云原生方向的产品例如开源镜像仓库Harbor、API网关Kong都使用了Postg……
阅读全文
上一节学习了如何为Pulsar开启基于JWT的身份认证。 Pulsar使用身份认证提供者(Authentication Provider)识别客户端,但如果只启用身份认证,那么只要客户端通过认证就可以访问集群中的所有资源,因此在启用身份认证的基……
阅读全文
作为一个Gopher在刚开始学习channel的时候,一定见过以下关于关闭channel会发生什么情况的总结: 关闭一个值为nil的channel将会panic 关闭一个已经关闭的channel将会panic 向一个已经关闭的channel发送数……
阅读全文
Pulsar支持可插拔的身份认证和授权机制,Pulsar Proxy或者Pulsar Broker都支持该机制。认证和授权机制一起保证了客户端对Pulsar Topic、命名空间、租户的访问权限。 默认情况下,Pulsar并不会启用加密、身份认证和……
阅读全文
分区Topic的概念 前面在学习Topic的时候,已经了解了分区Topic的基本概念。在Pulsar中一个Topic只能由一个Broker提供服务,而单个Topic的吞吐量受限于为其提供服务的Broker的计算能力,这限制了Topic的最大吞……
阅读全文
本节将学习从channel中接收数据的内部实现。 在Go中从channel中接收数据有两种方式: 1v <- ch 2v, ok <- ch 使用v <- ch从channel中接收数据时,会调用runtime.chanrecv1,chanrecv1调用了runtime.chan……
阅读全文
主流消息系统都会提供很多好用的特性支持各种业务场景,死信队列, 延迟队列这些词在使用这些消息系统时经常被提到。 Pulsar作为下一代云原生消息系统肯定也是支持这些特性的。Pulsar中没有队列的概念, 前面在学习使用Java和Go开发Pulsa……
阅读全文
前面学习了channel的底层数据结构hchan以及hchan是如何被创建的。 使用类似ch <- 3往channel中发送数据时,会调用runtime.chansend1,chansend1调用了chansend,本节将主要学习runtime.c……
阅读全文
channel是Go语言核心数据结构之一。Go提供了CSP(通信顺序进程Communicating sequential processes)的并发模型,关于Go并发的那句经典的谚语不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存,goroutin……
阅读全文
前面学习了Pulsar的架构,在本地开发环境中使用Docker运行了单机的Pulsar,并学习使用plusar-admin命令行工具管理集群、租户、命名空间和Topic,使用Java和Go开发Pulsar的Producer和Consumer……
阅读全文