diff options
author | Anders Svensson <[email protected]> | 2013-02-24 17:39:46 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2013-03-17 15:07:00 +0100 |
commit | d70a02e7415caccd13fad8dda417d0d18a112a83 (patch) | |
tree | 6b3aa51ad544e74459e5bb6c4a2fcd1d74f080ee /lib/diameter/doc | |
parent | 63e21fa7d8aa6761640f9cf357663b03578a5446 (diff) | |
download | otp-d70a02e7415caccd13fad8dda417d0d18a112a83.tar.gz otp-d70a02e7415caccd13fad8dda417d0d18a112a83.tar.bz2 otp-d70a02e7415caccd13fad8dda417d0d18a112a83.zip |
More flexible distribution config
Allow both share_peers and use_shared_peers to be a list of nodes, or a
function that returns a list of nodes.
Diffstat (limited to 'lib/diameter/doc')
-rw-r--r-- | lib/diameter/doc/src/diameter.xml | 75 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_app.xml | 8 |
2 files changed, 56 insertions, 27 deletions
diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index df9e03b2da..8ad4af85a3 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -43,7 +43,7 @@ under the License. <approved></approved> <checked></checked> <date></date> -<rev>%VSN%</rev> +<rev></rev> <file>diameter.xml</file> </header> @@ -774,8 +774,8 @@ Application-Id AVP's in particular.</p> | evaluable()}</c></tag> <item> <p> -Specifies the degree to which multiple transport connections to the -same peer are accepted by the service.</p> +Specifies the degree to which the service allows multiple transport +connections to the same peer.</p> <p> If type <c>[node()]</c> then a connection is rejected if another already @@ -831,40 +831,60 @@ outgoing requests.</p> </warning> </item> -<tag><c>{share_peers, boolean()}</c></tag> +<tag><c>{share_peers, boolean() | [node()] | evaluable()}</c></tag> <item> <p> -Specifies whether or not peer connections on the local Erlang node -are shared with services on visible nodes (as returned by &nodes;). -Peers shared from remote nodes become available in the candidates list -passed as the second argument to &app_pick_peer; callbacks.</p> +Specifies nodes to which peer connections established on the local +Erlang node are communicated. +Shared peers become available in the remote candidates list passed to +&app_pick_peer; callbacks on remote nodes whose services are +configured to use them: see <c>use_shared_peers</c> below.</p> <p> -Defaults to <c>false</c>.</p> +If <c>false</c> then peers are not shared. +If <c>[node()]</c> then peers are shared with the specified list of +nodes. +If <c>evaluable()</c> then peers are shared with the nodes returned +by the specified function, evaluated whenever a peer connection +becomes available or a remote service requests information about local +connections. +The value <c>true</c> is equivalent to <c>fun &nodes;</c>. +The value <c>node()</c> in a node list is ignored, so a collection of +services can all be configured to share with the same list of +nodes.</p> -<note> <p> -Peers are only shared with other services of the same name. -Since the value of the &application_opt; <c>alias</c> is the handle -for identifying a peer, both local and remote, as a candidate for an -outgoing request, services that share peers should use the same -aliases for identifying their supported applications.</p> -</note> +Defaults to <c>false</c>.</p> <note> <p> -Services that share peers can do so in order to distribute the -implementation of a Diameter node across multiple Erlang nodes, in -which case the participating services should typically be configured -with identical &capabilities;.</p> +Peers are only shared with services of the same name for the purpose +of sending outgoing requests. +Since the value of the &application_opt; <c>alias</c>, passed to +&call;, is the handle for identifying a peer as a suitable +candidate, services that share peers must use the same aliases to +identify their supported applications. +They should typically also configure identical &capabilities;, since +by sharing peer connections they are distributing the implementation +of a single Diameter node across multiple Erlang nodes.</p> </note> </item> -<tag><c>{use_shared_peers, boolean()}</c></tag> +<tag><c>{use_shared_peers, boolean() | [node()] | evaluable()}</c></tag> <item> <p> -Specifies whether or not the service makes use of peer connections -shared by identically named services on other Erlang nodes.</p> +Specifies nodes from which communicated peers are made available in +the remote candidates list of &app_pick_peer; callbacks.</p> + +<p> +If <c>false</c> then remote peers are not used. +If <c>[node()]</c> then only peers from the specified list of nodes +are used. +If <c>evaluable()</c> then only peers returned by the specified +function are used, evaluated whenever a remote service communicates +information about an available peer connection. +The value <c>true</c> is equivalent to <c>fun &nodes;</c>. +The value <c>node()</c> in a node list is ignored.</p> <p> Defaults to <c>false</c>.</p> @@ -874,6 +894,15 @@ Defaults to <c>false</c>.</p> A service that does not use shared peers will always pass the empty list as the second argument of &app_pick_peer; callbacks.</p> </note> + +<warning> +<p> +Sending a request over a peer connection on a remote node is less +efficient than sending it over a local connection. +It may be preferable to make use of the &service_opt; +<c>restrict_connections</c> and maintain a dedicated connection on +each node from which requests are sent.</p> +</warning> </item> </taglist> diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index d094e1bade..d4fb792787 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -37,7 +37,7 @@ under the License. <approved></approved> <checked></checked> <date></date> -<rev>%REV%</rev> +<rev></rev> <file>diameter_app.xml</file> </header> @@ -297,9 +297,9 @@ The return values <c>false</c> and <c>{false, State}</c> (that is, <note> <p> -<c>RemoteCandidates</c> is the empty list if the service has been -configured with the (default) &mod_service_opt; -<c>{use_shared_peers, false}</c>.</p> +The &mod_service_opt; <c>use_shared_peers</c> determines whether or +not a service uses peers shared from other nodes. +If not then <c>RemoteCandidates</c> is the empty list.</p> </note> <warning> |