Linux zookeeper
ZooKeeper is a cluster operator that stores values to be shared across multiply clients.
Shell Commands
The server works by using things called znodes, kind of like a file system /
This shell is very helpful for debugging issue and understand what Zoo Keeper does under the hood.
To Start the shell
./zkCli.sh -server localhost:2181
ls - list out the directory create /test - creates the znode test get /test - gets the data for the znode
Spring Cloud ZooKeeper
This framework helps manage the clients that connect to zookeeper. You can also use this for sharing values amongst a cluster.
To start, I followed the spring guide and created an empty application with @EnableDiscoveryClient
package com.example.zookeeper.zkexample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient @RestController public class ZkExampleApplication { @RequestMapping("/") public String hello() { return "hello"; } public static void main(String[] args) { SpringApplication.run(ZkExampleApplication.class, args); } }
After I create this, I ran it with the following command
mvn spring-boot:run -Dserver.port=8081
Then I check zookeeper cli and looked for the znode
ls /services/application
and what was returned was
[959427f8-5629-4dcb-a606-2ed310134f8f]
When I started up another server
mvn spring-boot:run -Dserver.port=8082
Then I ls the same location I found another znode.
[959427f8-5629-4dcb-a606-2ed310134f8f, 106e739e-7422-414d-8cca-8d57fb443290]
Resources
https://zookeeper.apache.org/doc/r3.3.3/zookeeperStarted.html https://cloud.spring.io/spring-cloud-zookeeper/