How to decouple

Foundationdb decoupling is very good. Can the transaction layer 、log layer 、storage layer in the paper be placed on different machines? For example, I have a cluster composed of three machines with different geographical locations, one of which is used as the transaction processing of Foundationdb, one as the log, and one as the storage。

what’s more,I also see the architecture diagram of Foundationdb on the official website. Can the three parts in the diagram be placed on three physical machines? Or, although it is decoupled, it only runs on one machine as different processes and cannot be allocated to different machines

Can you tell me what to do if it can be configured

  1. Why do I want to test the communication cost of different modules on different machines? I have a system to compare with Foundationdb,thank you

In other words, for example, I feel that the transaction processing ability is weak. Can I extend the transaction process independently? I feel that the log service is not enough. I can extend the log service independently

The different roles (e.g. storage server, transaction log, resolver, commit proxy, etc) can all run on arbitrary processes on arbitrary machines in your cluster, but I’ll note a few caveats.

  • Coordinator, Storage Server, and Transaction Log are all stateful. Use the exclude command to safely remove the machines (Moving a Cluster to New Machines — FoundationDB 7.2)

  • In order for FoundationDB to recover and be available, it needs to have enough resources from enough fault domains in order to satisfy its configured redundancy policy (Configuration — FoundationDB 7.2)

  • See Configuration — FoundationDB 7.2 for a discussion of how to configure process class.

  • Commit latency is sensitive to the network latency between roles involved in the commit process, and there’s no availability benefit to having your stateless processes far from each other / transaction logs

Hope that helps

1 Like

@atn34 Thank you for your help! But I still have some questions to ask you

I am currently a stand-alone database with only one process. At this time, this process is both a Storage class, Transaction class, and Stateless class? Did he do all these tasks?


It mentions the given preference, so it is possible that one of my processes has set class=Storage, but it may be a transaction log role, as this link says
Building a FoundationDB Cluster: Roles, Classes, and Processes | Nikita Melkozerov
3. I can set fdb>configure grv_ Proxies=1, what command can I use to view the current grv_ ProxiesWhat is the default number of proxies

Thank you very much for helping me resolve these questions

  1. Yup. Every role is running on that one process.

  2. FoundationDB can recruit a process for a role different than its class if it’s necessary to do so to become available.