Recently we announced the new cache service Pivotal Cloud Cache (PCC) for Pivotal Cloud Foundry (PCC). In short Pivotal Cloud Cache (PCC) is a opinionated, distributed, highly available, high speed key/value caching service. PCC can be easily horizontally scaled for capacity and performance.
In this post we will show how you would provision a service, login to the Pulse UI dashboard, connect using GFSH etc. I won't create a spring boot application to use the service at this stage BUT that will follow in a post soon enough.
1. First you will need the PCC service and if it's been installed it will look like this
2. Now let's view the current plans we have in place as shown below
pasapicella@pas-macbook:~$ cf marketplace -s p-cloudcache
Getting service plan information for service p-cloudcache as email@example.com...
service plan description free or paid
extra-small Plan 1 Description free
extra-large Plan 5 Description free
3. Now let's create a service as shown below
pasapicella@pas-macbook:~$ cf create-service p-cloudcache extra-small pas-pcc
Creating service instance pas-pcc in org pivot-papicella / space development as firstname.lastname@example.org...
Create in progress. Use 'cf services' or 'cf service pas-pcc' to check operation status.
4. At this point it will asynchronously create the GemFire cluster which is essentially what PCC is. For more Information on GemFire see the docs link here.
You can check the progress one of two ways.
1. Using Pivotal Apps manager as shown below
2. Using a command as follows
pasapicella@pas-macbook:~$ cf service pas-pcc
Service instance: pas-pcc
Description: Pivotal CloudCache offers the ability to deploy a GemFire cluster as a service in Pivotal Cloud Foundry.
Documentation url: http://docs.pivotal.io/gemfire/index.html
Status: create in progress
Message: Instance provisioning in progress
5. Once complete it will look as follows
6. Now in order to log into both GFSH and Pulse we are going to need to create a service key for the service we just created, which we do as shown below.
pasapicella@pas-macbook:~/pivotal/PCF/services/PCC$ cf create-service-key pas-pcc pas-pcc-key
Creating service key pas-pcc-key for service instance pas-pcc as email@example.com...
pasapicella@pas-macbook:~$ cf service-key pas-pcc pas-pcc-key
Getting key pas-pcc-key for service instance pas-pcc as firstname.lastname@example.org...
8. Now lets log into Pulse. The URL is available as part of the output above
Pulse Dashboard : You can see from the dashboard page it shows how many locators and cache server members we have as part of this default cluster
9. Now lets log into GFSH. Once again the URL is as per the output above
- First we will need to download Pivotal GemFire so we have the GFSH client, download the zip at the link below and extract to your file system
- Invoke as follows using the path to the extracted ZIP file
/ _____/ ______/ ______/ /____/ /
/ / __/ /___ /_____ / _____ /
/ /__/ / ____/ _____/ / / / /
/______/_/ /______/_/ /_/ 9.0.3
Monitor and Manage Pivotal GemFire
gfsh>connect --use-http --url=http://gemfire-yyyy.run.pez.pivotal.io/gemfire/v1 --user=operator --password=password
Successfully connected to: GemFire Manager HTTP service @ http://gemfire-yyyy.run.pez.pivotal.io/gemfire/v1
10. Now lets create a region which will use to store some cache data
$ create region --name=demoregion --type=PARTITION_HEAP_LRU --redundant-copies=1
gfsh>create region --name=demoregion --type=PARTITION_HEAP_LRU --redundant-copies=1 Member | Status ----------------------------------- | --------------------------------------------------------------------- cacheserver-PCF-PEZ-Heritage-RP04-1 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-1" cacheserver-PCF-PEZ-Heritage-RP04-0 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-0" cacheserver-PCF-PEZ-Heritage-RP04-2 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-2" cacheserver-PCF-PEZ-Heritage-RP04-3 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-3"
Note: Understanding the region types you can create exist at the Pivotal GemFire docs but basically in the example above we create a partitioned region where primary and backup data is stored among the cache servers. As you can see we asked for a single backup copy of each region entry to be placed on a separate cache server itself for redundancy
11. If we return to the Pulse Dashboard UI we will see from the "Data Browser" tab we have a region
12. Now lets just add some data , few entries which are simple String key/value pairs only
gfsh>put --region=/demoregion --key=1 --value="value 1" Result : true Key Class : java.lang.String Key : 1 Value Class : java.lang.String Old Value : <NULL> gfsh>put --region=/demoregion --key=2 --value="value 2" Result : true Key Class : java.lang.String Key : 2 Value Class : java.lang.String Old Value : <NULL> gfsh>put --region=/demoregion --key=3 --value="value 3" Result : true Key Class : java.lang.String Key : 3 Value Class : java.lang.String Old Value : <NULL>
13. Finally lets query the data we have in the cache
gfsh>query --query="select * from /demoregion" Result : true startCount : 0 endCount : 20 Rows : 3 Result ------- value 3 value 1 value 2 NEXT_STEP_NAME : END
13. We can return to Pulse and invoke the same query from the "Data Browser" tab as shown below.
Of course storing data in a cache isn't useful unless we actually have an application on PCF that can use the Cache BUT that will come in a separate post. Basically we will BIND to this service, connect as a GemFire Client using the locators we are given as part of the service key and then extract the cache data we have just created above by invoking a query.
Download PCC for PCF
Data Sheet for PCC