This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f98bcca7f4347ec3a6bbf2a8e4325c5da29d8a6d Author: Benoit Tellier <[email protected]> AuthorDate: Thu Nov 19 16:20:18 2020 +0700 JAMES-3441 Document specialized instances setup --- .../assets/images/specialized-instances.png | Bin 0 -> 45878 bytes docs/modules/servers/nav.adoc | 1 + .../pages/distributed/architecture/index.adoc | 6 ++++ .../architecture/specialized-instances.adoc | 37 +++++++++++++++++++++ 4 files changed, 44 insertions(+) diff --git a/docs/modules/servers/assets/images/specialized-instances.png b/docs/modules/servers/assets/images/specialized-instances.png new file mode 100644 index 0000000..687cefe Binary files /dev/null and b/docs/modules/servers/assets/images/specialized-instances.png differ diff --git a/docs/modules/servers/nav.adoc b/docs/modules/servers/nav.adoc index 20c7360..7002b26 100644 --- a/docs/modules/servers/nav.adoc +++ b/docs/modules/servers/nav.adoc @@ -14,6 +14,7 @@ *** xref:distributed/objectives.adoc[] *** xref:distributed/architecture/index.adoc[] **** xref:distributed/architecture/consistency-model.adoc[] +**** xref:distributed/architecture/specialized-instances.adoc[] *** xref:distributed/run.adoc[] *** xref:distributed/run-docker.adoc[] *** xref:distributed/configure/index.adoc[] diff --git a/docs/modules/servers/pages/distributed/architecture/index.adoc b/docs/modules/servers/pages/distributed/architecture/index.adoc index 01f4961..0bbbb34 100644 --- a/docs/modules/servers/pages/distributed/architecture/index.adoc +++ b/docs/modules/servers/pages/distributed/architecture/index.adoc @@ -34,6 +34,12 @@ The following protocols should be considered experimental * *JMAP* (draft specification as defined link:https://github.com/apache/james-project/tree/master/server/protocols/jmap-draft/doc[here]) * *POP3* +== Topology + +While it is perfectly possible to deploy homogeneous James instances, with the same configuration and thus the same +protocols and the same responsibilities one might want to investigate in +xref:distributed/architecture/specialized-instances.adoc['Specialized instances']. + == Components This section presents the various components of the Distributed server, providing context about diff --git a/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc b/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc new file mode 100644 index 0000000..e13d75e --- /dev/null +++ b/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc @@ -0,0 +1,37 @@ += Distributed James Server — Specialized instances +:navtitle: Specialized instances + +While it is perfectly possible to deploy homogeneous James instances, with the same configuration and thus the same +protocols and the same responsibilities one might want to investigate in 'Specialized instances'. + +This deployment topology consists of Distributed James servers with heterogeneous configurations on top of shared +data-bases. Groups of James servers will thus handle various protocols and have different responsibilities. + +This approach limits cascading failures across protocols and services. Think of *OutOfMemoryErrors*, Cassandra driver +queue overuse, CPUs starvation, etc. + +However, we can't speak of micro-services here: all James instances runs the same code, James is still a monolith, and +databases need to be shared across instances. + +image::specialized-instances.png[Example of Specialized instances topology] + +We speak of: + + - **Front-line servers** serves protocols. James enables to easily turn protocols on and off. Typically, each protocol would + be isolated in its own group of James instances: james-imap, james-jmap, james-smtp, james-webadmin, etc... Refer to + protocols configuration files to learn more. + + - **Back-office servers** handles other services like: + - Mail processing. + - Remote delivery. + - Event processing. + - Task execution. + +Front-line servers will likely not handle back office responsibilities (but be sure to have back-office servers that do!). + - xref:distributed/configure/mailetcontainer.adoc[Mail processing can be switched off]. + - xref:distributed/configure/listeners.adoc[Mailbox event processing can be switched off]. + - xref:distributed/configure/rabbitmq.adoc[Task execution can be switched off]. + - Remote Delivery service is not started if the RemoteDelivery mailet is not positioned in mailetcontainer.xml. + +Of course, the above instances can be collocated at will, to reach some intermediate deployments with fewer +instances to mitigate costs. \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
