Skip to content

Commit 53b1f56

Browse files
Tim Middletonmsfussell
andauthored
Add Coherence state store component docs - v1.16 (#4702)
* Add Coherence state store component docs v2 Signed-off-by: Tim Middleton <[email protected]> * Update daprdocs/content/en/reference/components-reference/supported-state-stores/setup-coherence.md Signed-off-by: Mark Fussell <[email protected]> * Remove Coherence from generic.yaml, still in Oracle.yaml Signed-off-by: Tim Middleton <[email protected]> --------- Signed-off-by: Tim Middleton <[email protected]> Signed-off-by: Mark Fussell <[email protected]> Co-authored-by: Mark Fussell <[email protected]>
1 parent aed874b commit 53b1f56

File tree

2 files changed

+170
-0
lines changed

2 files changed

+170
-0
lines changed
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
---
2+
type: docs
3+
title: "Coherence"
4+
linkTitle: "Coherence"
5+
description: Detailed information on the Coherence state store component
6+
aliases:
7+
- "/operations/components/setup-state-store/supported-state-stores/setup-coherence/"
8+
---
9+
10+
## Component format
11+
12+
To setup Coherence state store, create a component of type `state.coherence`. See [this guide]({{< ref "howto-get-save-state.md#step-1-setup-a-state-store" >}}) on how to create and apply a state store configuration.
13+
14+
```yaml
15+
apiVersion: dapr.io/v1alpha1
16+
kind: Component
17+
metadata:
18+
name: <NAME>
19+
spec:
20+
type: state.coherence
21+
version: v1
22+
metadata:
23+
- name: serverAddress
24+
value: <REPLACE-WITH-GRPC-PROXY-HOST-AND-PORT> # Required. Example: "my-cluster-grpc:1408"
25+
- name: tlsEnabled
26+
value: <REPLACE-WITH-BOOLEAN> # Optional
27+
- name: tlsClientCertPath
28+
value: <REPLACE-WITH-PATH> # Optional
29+
- name: tlsClientKey
30+
value: <REPLACE-WITH-PATH> # Optional
31+
- name: tlsCertsPath
32+
value: <REPLACE-WITH-PATH> # Optional
33+
- name: ignoreInvalidCerts
34+
value: <REPLACE-WITH-BOOLEAN> # Optional
35+
- name: scopeName
36+
value: <REPLACE-WITH-SCOPE> # Optional
37+
- name: requestTimeout
38+
value: <REPLACE-WITH-REQUEST-TIMEOUT> # Optional
39+
- name: nearCacheTTL
40+
value: <REPLACE-WITH-NEAR-CACHE-TTL> # Optional
41+
- name: nearCacheUnits
42+
value: <REPLACE-WITH-NEAR-CACHE-UNITS> # Optional
43+
- name: nearCacheMemory
44+
value: <REPLACE-WITH-NEAR-CACHE-MEMORY> # Optional
45+
```
46+
47+
{{% alert title="Warning" color="warning" %}}
48+
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
49+
{{% /alert %}}
50+
51+
## Spec metadata fields
52+
53+
| Field | Required | Details | Example |
54+
|--------------------|:--------:|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------|
55+
| serverAddress | Y | Comma delimited endpoints | `"my-cluster-grpc:1408"` |
56+
| tlsEnabled | N | Indicates if TLS should be enabled. Defaults to false | `"true"` |
57+
| tlsClientCertPath | N | Client certificate path for Coherence. Defaults to "". Can be `secretKeyRef` to use a [secret reference]({{< ref component-secrets.md >}}). | `"-----BEGIN CERTIFICATE-----\nMIIC9TCCA..."` |
58+
| tlsClientKey | N | Client key for Coherence. Defaults to "". Can be `secretKeyRef` to use a [secret reference]({{< ref component-secrets.md >}}). | `"-----BEGIN CERTIFICATE-----\nMIIC9TCCA..."` |
59+
| tlsCertsPath | N | Additional certificates for Coherence. Defaults to "". Can be `secretKeyRef` to use a [secret reference]({{< ref component-secrets.md >}}). | `"-----BEGIN CERTIFICATE-----\nMIIC9TCCA..."` |
60+
| ignoreInvalidCerts | N | Indicates if to ignore self-signed certificates for testing only, not to be used in production. Defaults to false | `"false"` |
61+
| scopeName | N | A scope name to use for the internal cache. Defaults to "" | `"my-scope"` |
62+
| requestTimeout | N | ATimeout for calls to the cluster Defaults to "30s" | `"15s"` |
63+
| nearCacheTTL | N | If non-zero a near cache is used and the TTL of the near cache is this value. Defaults to 0s | `"60s"` |
64+
| nearCacheUnits | N | If non-zero a near cache is used and the maximum size of the near cache is this value in units. Defaults to 0 | `"1000"` |
65+
| nearCacheMemory | N | If non-zero a near cache is used and the maximum size of the near cache is this value in bytes. Defaults to 0 | `"4096"` |
66+
67+
### About Using Near Cache TTL
68+
69+
The Coherence state store allows you to specify a near cache to cache frequently accessed data when using the DAPR client.
70+
When you access data using `Get(ctx context.Context, req *GetRequest)`, returned entries are stored in the near cache and
71+
subsequent data access for keys in the near cache is almost instant, where without a near cache each `Get()` operation results in a network call.
72+
73+
When using the near cache option, Coherence automatically adds a MapListener to the internal cache which listens on all cache events and updates or invalidates entries in the near cache that have been changed or removed on the server.
74+
75+
To manage the amount of memory used by the near cache, the following options are supported when creating one:
76+
77+
- nearCacheTTL – objects expired after time in near cache, for example 5 minutes
78+
- nearCacheUnits – maximum number of cache entries in the near cache
79+
- nearCacheMemory – maximum amount of memory used by cache entries
80+
81+
You can specify either High-Units or Memory and in either case, optionally, a TTL.
82+
83+
The minimum expiry time for a near cache entry is 1/4 second. This is to ensure that expiry of elements is as
84+
efficient as possible. You will receive an error if you try to set the TTL to a lower value.
85+
86+
## Setup Coherence
87+
88+
{{< tabs "Self-Hosted" "Kubernetes" >}}
89+
90+
{{% codetab %}}
91+
Run Coherence locally using Docker:
92+
93+
```
94+
docker run -d -p 1408:1408 -p 30000:30000 ghcr.io/oracle/coherence-ce:25.03.1
95+
```
96+
97+
You can then interact with the server using `localhost:1408`.
98+
{{% /codetab %}}
99+
100+
{{% codetab %}}
101+
The easiest way to install Coherence on Kubernetes is by using the [Coherence Operator](https://docs.coherence.community/coherence-operator/docs/latest/docs/about/03_quickstart):
102+
103+
**Install the Operator:**
104+
105+
```
106+
kubectl apply -f https://github.com/oracle/coherence-operator/releases/download/v3.5.2/coherence-operator.yaml
107+
```
108+
109+
> Note: Change v3.5.2 to the latest release.
110+
111+
This installs the Coherence operator into the `coherence` namespace.
112+
113+
**Create a Coherence Cluster yaml my-cluster.yaml**
114+
115+
```yaml
116+
apiVersion: coherence.oracle.com/v1
117+
kind: Coherence
118+
metadata:
119+
name: my-cluster
120+
spec:
121+
coherence:
122+
management:
123+
enabled: true
124+
ports:
125+
- name: management
126+
- name: grpc
127+
port: 1408
128+
```
129+
130+
**Apply the yaml**
131+
132+
```bash
133+
kubectl apply -f my-cluster.yaml
134+
```
135+
136+
To interact with Coherence, find the service with: `kubectl get svc` and look for service named '*grpc'.
137+
138+
```bash
139+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
140+
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9m
141+
my-cluster-grpc ClusterIP 10.96.225.43 <none> 1408/TCP 7m3s
142+
my-cluster-management ClusterIP 10.96.41.6 <none> 30000/TCP 7m3s
143+
my-cluster-sts ClusterIP None <none> 7/TCP,7575/TCP,7574/TCP,6676/TCP,30000/TCP,1408/TCP 7m3s
144+
my-cluster-wka ClusterIP None <none> 7/TCP,7575/TCP,7574/TCP,6676/TCP 7m3s
145+
```
146+
147+
For example, if installing using the example above, the Coherence host address would be:
148+
149+
`my-cluster-grpc`
150+
{{% /codetab %}}
151+
152+
{{< /tabs >}}
153+
154+
## Related links
155+
- [Basic schema for a Dapr component]({{< ref component-schema >}})
156+
- Read [this guide]({{< ref "howto-get-save-state.md#step-2-save-and-retrieve-a-single-state" >}}) for instructions on configuring state store components
157+
- [State management building block]({{< ref state-management >}})
158+
- [Coherence CE on GitHub](https://github.com/oracle/coherence)
159+
- [Coherence Community - All things Coherence](https://coherence.community/)

daprdocs/data/components/state_stores/oracle.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99
etag: true
1010
ttl: true
1111
query: false
12+
- component: Coherence
13+
link: setup-coherence
14+
state: Alpha
15+
version: v1
16+
since: "1.16"
17+
features:
18+
crud: true
19+
transactions: false
20+
etag: false
21+
ttl: true
22+
query: false
1223
- component: Object Storage
1324
link: setup-oci-objectstorage
1425
state: Alpha

0 commit comments

Comments
 (0)