go-queue icon indicating copy to clipboard operation
go-queue copied to clipboard

dq example 疑问

Open withseid opened this issue 2 years ago • 1 comments

NewProducer 方法里面要求 Endpoint 必须大于 2 且 Endpoints 必须是多个不同的实例,那是不是需要一个 beanstalkd 集群呢?

func NewProducer(beanstalks []Beanstalk) Producer {
	if len(beanstalks) < minWrittenNodes {
		log.Fatalf("nodes must be equal or greater than %d", minWrittenNodes)
	}
	var nodes []Producer
	producers := make(map[string]lang.PlaceholderType)
	for _, node := range beanstalks {
		if _, ok := producers[node.Endpoint]; ok {
			log.Fatal("all node endpoints must be different")
		}

		producers[node.Endpoint] = lang.Placeholder
		nodes = append(nodes, NewProducerNode(node.Endpoint, node.Tube))
	}

	return &producerCluster{nodes: nodes}
}

看了一下,好像没有 beanstalkd 集群部署方式? 都是多个 beanstalkd 实例,那假如某个 beanstalkd 实例宕机了,数据不就丢失了吗

withseid avatar Jun 22 '22 03:06 withseid

beanstalkd的集群是客户端指定的,也即服务端不做配置,相互不感知存在,客户端配了哪些,哪些就属于这个集群。

chenkaiwei avatar Jul 04 '22 11:07 chenkaiwei