From dev-return-48888-archive-asf-public=cust-asf.ponee.io@couchdb.apache.org Tue Nov 19 17:11:10 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 18FFB180638 for ; Tue, 19 Nov 2019 18:11:09 +0100 (CET) Received: (qmail 37375 invoked by uid 500); 19 Nov 2019 17:11:08 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 37363 invoked by uid 99); 19 Nov 2019 17:11:08 -0000 Received: from Unknown (HELO mailrelay1-lw-us.apache.org) (10.10.3.42) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Nov 2019 17:11:08 +0000 Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by mailrelay1-lw-us.apache.org (ASF Mail Server at mailrelay1-lw-us.apache.org) with ESMTPSA id 9B58E1003 for ; Tue, 19 Nov 2019 17:11:08 +0000 (UTC) Received: by mail-qt1-f178.google.com with SMTP id y10so25442131qto.3 for ; Tue, 19 Nov 2019 09:11:08 -0800 (PST) X-Gm-Message-State: APjAAAWcoXyq1Yt5QEfoSmcCg3w4sSraoAYUkoLGDBtujvHg7e9Fe+VK feK1yJDvpUUw/KyvBJUYufr6ni3MP64/HZ0FOGU= X-Google-Smtp-Source: APXvYqyMU5IvdwvccX9jU3E/9lfUliASjGlEkytD6NyHVS+bNn/nPlqHxTSK9CM8Y+ctE42RyBWYy9j9ODh3pRviZZ8= X-Received: by 2002:aed:2a75:: with SMTP id k50mr34623145qtf.346.1574183468377; Tue, 19 Nov 2019 09:11:08 -0800 (PST) MIME-Version: 1.0 From: Nick Vatamaniuc Date: Tue, 19 Nov 2019 12:10:57 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: [DISCUSS] Node types in CouchDB 4.x To: dev@couchdb.apache.org Content-Type: text/plain; charset="UTF-8" Hi everyone, I'd like to discuss the ability to have heterogeneous nodes types in CouchDB 4. In CouchDB 2 and 3 the nodes in the cluster are usually similar, and functionality is uniformly distributed amongst the nodes. That is all nodes can accept HTTP requests, run replication jobs, build indices etc. They are typically deployed such that they similar hardware requirements. In an FDB-based CouchDB 4, CRUD operations, on the Erlang nodes, wouldn't require as many resources, so it would be possible to have a set of nodes, performing just CRUD operations that are much smaller than the equivalent CouchDB 2 and 3 nodes. However, indexing and replication might still require heavy resource usage. So the proposal is to add configuration to CouchDB 4 to allow some nodes to perform only a subset of their current functionality. For example, it would be possible to have 6 1-CPU nodes with 512MB accepting API requests, and, 2 4-CPU node with 4GB of memory each running replication and indexing jobs only, or any other such combinations. By default, with any extra configuration, the behavior would stay as is today -- all nodes will run all the functionality. I created an RFC exploring how it might look like: https://github.com/apache/couchdb-documentation/pull/457 There is a comment there how it could be implemented. So far it looks like it could be fairly trivial since it would build on the couch_jobs work already in place. What does everyone think? Cheers, -Nick