Skip to content

Commit 85c32dc

Browse files
authored
[DOC-11500]: Completely incorrect and misleading example. (#3707)
Fixed diagrams and text in services.adoc to reflect the recommended production configuration. Replaced LibreOffice diagrams with PlantUMl diagrams, which are better at scaling to different sizes.
1 parent 7ad1358 commit 85c32dc

File tree

2 files changed

+206
-19
lines changed

2 files changed

+206
-19
lines changed

modules/learn/pages/services-and-indexes/services/services.adoc

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Services are configured and deployed by the Full Administrator who initializes C
1212
The standard configuration-sequence allows a subset of services to be selected per node, with an individual memory-allocation for each.
1313
Each service supports a particular form of data-access.
1414
Services not required need not be deployed.
15-
Services intended to support a heavy workload can be deployed across multiple cluster-nodes, to ensure optimal performance and resource-availability.
15+
Services intended to support a heavy workload can be deployed across multiple cluster-nodes to ensure optimal performance and resource-availability.
1616

1717
In Couchbase Server Version 7.6 and later, you can add one or more arbiter nodes to your cluster.
1818
include::learn:partial$arbiter-node-benefits.adoc[]
@@ -21,14 +21,14 @@ include::learn:partial$arbiter-node-benefits.adoc[]
2121

2222
Couchbase Server provides the following services:
2323

24-
* *Data*: Supports the storing, setting, and retrieving of data-items, specified by key.
24+
* *Data*: Supports the storing, setting, and retrieving of data-items, specified by a key.
2525
* *Query*: Parses queries specified in the _N1QL_ query-language, executes the queries, and returns results.
2626
The Query Service interacts with both the Data and Index services.
2727
* *Index*: Creates indexes, for use by the Query and Analytics services.
28-
* *Search*: Create indexes specially purposed for _Full Text Search_.
28+
* *Search*: Create indexes specially purposed for _Full-Text Search_.
2929
This supports language-aware searching; allowing users to search for, say, the word `beauties`, and additionally obtain results for `beauty` and `beautiful`.
3030
* *Analytics*: Supports join, set, aggregation, and grouping operations; which are expected to be large, long-running, and highly consumptive of memory and CPU resources.
31-
* *Eventing*: Supports near real-time handling of changes to data: code can be executed both in response to document-mutations, and as scheduled by timers.
31+
* *Eventing*: Supports near real-time handling of changes to data: code can be executed both in response to document mutations and as scheduled by timers.
3232
* *Backup*: Supports the scheduling of full and incremental data backups, either for specific individual buckets, or for all buckets on the cluster.
3333
Also allows the scheduling of _merges_ of previously made backups.
3434

@@ -40,36 +40,41 @@ workload-requirements.
4040
[#setting-up-services]
4141
== Setting Up Services
4242

43-
Services are set up on a per node basis.
43+
Services are set up on a per-node basis.
4444
Each node can run at most one instance of a service.
4545
Each node can run any number of services, up to the maximum, which is seven.
4646
In Couchbase Enterprise Server Version 7.6+, a node can be configured to run _no_ service.
4747
The _Data Service_ must run on at least one node of the cluster.
48-
Some services are interdependent, and therefore require at least one instance of
49-
each of their dependencies to be running on the cluster (for example, the
48+
Some services are interdependent and therefore require at least one instance of
49+
each of their dependencies to be running on the cluster (for example, the
5050
_Query Service_ depends on the _Index Service_ and on the _Data Service_).
5151

5252
When the first node in a cluster is initialized, the services assigned to it become the default assignment for each other node subsequently to be added to the cluster.
53-
However, this default can be departed from, node by node; with one or more services omitted from the default, and one or more added.
53+
However, this default can be departed from, node by node, with one or more services omitted from the default, and one or more added.
5454

5555
When first allocated to a node, a service requires the assignment of a specific memory quota, which becomes standard for that service in each of its instances across the cluster.
5656
(The exceptions to this are the Query and Backup Services, which never require a memory quota.)
5757

58-
Service-allocation should be designed based on workload-analysis: if a particular service is expected to handle a heavy workload, it should be allocated with a larger memory quota, and potentially as the only service on the node.
59-
Alternatively, if a cluster is to be used for development purposes only, it may be convenient to allocate services in the quickest and most convenient way, with some quotas being equal.
58+
Service allocation should be designed based on workload-analysis:
59+
if a particular service is expected to handle a heavy workload,
60+
it should be allocated with a larger memory quota, and potentially as the only service on the node.
61+
Alternatively, if a cluster is to be used for development only,
62+
it may be convenient to allocate services in the quickest and most convenient way,
63+
with some quotas being equal.
6064

6165
For example, the following illustration shows how four services — Data, Index, Query, and Search — might be allocated evenly across the five nodes of a _development_ cluster:
6266

6367
[#cb_cluster_with_services_development]
64-
image::services-and-indexes/services/cbClusterWithServicesDevelopment.png[,720,align=left]
68+
include::partial$cluster-example-diagrams.adoc[tag="five-cluster-setup"]
6569

6670
This configuration might provide perfectly acceptable performance for each of the four services, in the context of development and testing.
67-
However, if a large amount of data needed, in production, to be intensively indexed, and addressed by means of Query and Search, the following configuration would be more efficient:
71+
However, if a large amount of data is required to be intensively indexed and addressed by means of Query and Search, the following production configuration would be more efficient:
6872

6973
[#cb_cluster_with_services_production]
70-
image::services-and-indexes/services/cbClusterWithServicesProduction.png[,720,align=left]
74+
include::partial$cluster-example-diagrams.adoc[tag="six-cluster-setup"]
7175

72-
In this revised configuration, the Data Service is the only service to run on two of the nodes; the Index Service the only service on two futher nodes; and the Query and Search Services share the fifth and final node.
76+
In this revised configuration, the Data Service is the only service to run on three of the nodes;
77+
the Index Service is running on two further nodes; and the Query and Search Services share the sixth and final node.
7378

7479
For a more detailed explanation of service memory quotas, see xref:buckets-memory-and-storage/memory.adoc[Memory].
7580
For information on the practical steps required to initialize a cluster, including the allocation of services to nodes, see
@@ -86,9 +91,9 @@ nodes can be removed, reconfigured to run the Search Service, and re-added to th
8691
cluster.
8792

8893
Alternatively, additional hardware-resources (CPU, memory, disk-capacity) can be
89-
added to targeted nodes in the cluster, in order to support the performance of
90-
key services. This ability to provision services independently from one another, and
91-
thereby
92-
scale their performance individually up and down as required, provides the greatest
93-
flexibility in terms of handling changing business requirements, and redeploying
94+
added to targeted nodes in the cluster to support the performance of
95+
key services.
96+
This ability to provision services independently of one another, and
97+
thereby scale their performance individually up and down as required, provides the greatest
98+
flexibility in terms of handling changing business requirements and redeploying
9499
existing resources to ensure continuously heightened efficiency.
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
// tag::five-cluster-setup[]
2+
[plantuml]
3+
.Couchbase Server Cluster for Development
4+
----
5+
@startuml
6+
7+
skinparam shadowing true
8+
skinparam nodesep 10
9+
skinparam ranksep 20
10+
11+
database "Node 1" as node1 {
12+
13+
component "Cluster\nManager" as cl1
14+
15+
component "Data\nService" as dl1
16+
17+
component "Index\nService" as ind1
18+
19+
component "Query\nService" as qry1
20+
21+
component "Search\nService" as ss1
22+
23+
}
24+
25+
cl1-[hidden]- dl1
26+
dl1-[hidden]- ind1
27+
ind1 -[hidden]- qry1
28+
qry1 -[hidden]- ss1
29+
30+
31+
32+
database "Node 2" as node2 {
33+
34+
component "Cluster\nManager" as cl2
35+
36+
component "Data\nService" as dl2
37+
38+
component "Index\nService" as ind2
39+
40+
component "Query\nService" as qry2
41+
42+
component "Search\nService" as ss2
43+
44+
}
45+
46+
cl2-[hidden]- dl2
47+
dl2-[hidden]- ind2
48+
ind2 -[hidden]- qry2
49+
qry2 -[hidden]- ss2
50+
51+
52+
53+
54+
database "Node 3" as node3 {
55+
56+
component "Cluster\nManager" as cl3
57+
58+
component "Data\nService" as dl3
59+
60+
component "Index\nService" as ind3
61+
62+
component "Query\nService" as qry3
63+
64+
component "Search\nService" as ss3
65+
66+
}
67+
68+
cl3-[hidden]- dl3
69+
dl3-[hidden]- ind3
70+
ind3 -[hidden]- qry3
71+
qry3 -[hidden]- ss3
72+
73+
database "Node 4" as node4 {
74+
75+
component "Cluster\nManager" as cl4
76+
77+
component "Data\nService" as dl4
78+
79+
component "Index\nService" as ind4
80+
81+
component "Query\nService" as qry4
82+
83+
component "Search\nService" as ss4
84+
85+
}
86+
87+
cl4-[hidden]- dl4
88+
dl4-[hidden]- ind4
89+
ind4 -[hidden]- qry4
90+
qry4 -[hidden]- ss4
91+
92+
93+
database "Node 5" as node5 {
94+
95+
component "Cluster\nManager" as cl5
96+
97+
component "Data\nService" as dl5
98+
99+
component "Index\nService" as ind5
100+
101+
component "Query\nService" as qry5
102+
103+
component "Search\nService" as ss5
104+
105+
}
106+
107+
cl5-[hidden]- dl5
108+
dl5-[hidden]- ind5
109+
ind5 -[hidden]- qry5
110+
qry5 -[hidden]- ss5
111+
112+
@enduml
113+
----
114+
// end::five-cluster-setup[]
115+
116+
117+
// tag::six-cluster-setup[]
118+
119+
[plantuml]
120+
.Couchbase Server Cluster for Production
121+
----
122+
@startuml
123+
124+
skinparam shadowing true
125+
skinparam nodesep 10
126+
skinparam ranksep 20
127+
128+
database "Node 1" as node1 {
129+
130+
component "Cluster\nManager" as cl1
131+
132+
component "Data\nService" as dl1
133+
}
134+
135+
database "Node 2" as node2 {
136+
137+
component "Cluster\nManager" as cl2
138+
139+
component "Data\nService" as dl2
140+
}
141+
142+
database "Node 3" as node3 {
143+
144+
component "Cluster\nManager" as cl3
145+
146+
component "Data\nService" as dl3
147+
}
148+
149+
database "Node 4" as node4 {
150+
151+
component "Cluster\nManager" as cl4
152+
153+
component "Index\nService" as ind1
154+
}
155+
156+
database "Node 5" as node5 {
157+
158+
component "Cluster\nManager" as cl5
159+
160+
component "Index\nService" as ind2
161+
}
162+
163+
database "Node 6" as node6 {
164+
165+
component "Cluster\nManager" as cl6
166+
167+
component "Query\nService" as qry1
168+
169+
component "Search\nService" as ss1
170+
}
171+
172+
cl1 -[hidden]- dl1
173+
cl2 -[hidden]- dl2
174+
cl3 -[hidden]- dl3
175+
cl4 -[hidden]- ind1
176+
cl5 -[hidden]- ind2
177+
cl6 -[hidden]- qry1
178+
qry1 -[hidden]- ss1
179+
@enduml
180+
----
181+
182+
// end::six-cluster-setup[]

0 commit comments

Comments
 (0)