Mac 下ZooKeeper安装和使
Posted 倾锋落颖花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac 下ZooKeeper安装和使相关的知识,希望对你有一定的参考价值。
Mac 下ZooKeeper安装和使用
Apache ZooKeeper分布式协调系统是构建分布式应用程序的高性能服务。
1.下载ZooKeeper
环境要求:ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。
https://zookeeper.apache.org/releases.html
或者直接去资源包目录下载
https://archive.apache.org/dist/zookeeper/
2. 配置ZooKeeper
和Tomcat
一样,下载后,解压到你指定的目录即可。
进入conf文件夹中,copy一份配置文件,并指定你的存储数据data
目录
你可以使用
dataDir=../data
这样就可以在你的conf的上级目录创建data目录,用于存储数据
3. 启动ZooKeeper
进入bin目录
启动命令
./zkServer.sh start
查看状态
./zkServer.sh status
停止命令
./zkServer.sh stop
启动客户端
./zkCli.sh
4. 配置环境变量(可选)
打开终端输入以下命令,打开 .bash_profile
文件
sudo vi ~/.bash_profile
在.bash_profile
添加你的zkServer
所在目录。
这样你打开终端可以在任意目录下启动zkServer
zkServer.sh start
5. ZooKeeper在Spring中注册
新建Spring项目注册zookeeper服务,配合dubbo使用
-
在
pom.xml
添加如下配置<packaging>war</packaging> <properties> <dubbo.version>2.7.4.1</dubbo.version> <zookeeper.version>4.0.0</zookeeper.version> </properties> <!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>$dubbo.version</version> </dependency> <!--ZooKeeper客户端实现 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>$zookeeper.version</version> </dependency> <!--ZooKeeper客户端实现 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>$zookeeper.version</version> </dependency>
**注意:**注册
zookeeper
服务,Service模块
要打包方式要改为war包 -
在
applicationContext.xml
添加如下配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.example.service" /> <!--dubbo的配置--> <!--1.配置项目的名称,唯一--> <dubbo:application name="dubbo-service"> <dubbo:parameter key="qos.port" value="20282"/> </dubbo:application> <!-- 修改端口号--> <dubbo:protocol port="20281"/> <!--2.配置注册中心的地址--> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/> <!--3.配置dubbo包扫描--> <dubbo:annotation package="com.example.service.impl" /> </beans>
-
在Service的类上面改用
dubbo
下的@Service
注解import org.apache.dubbo.config.annotation.Service; //@Service @Service public class UserServiceImpl implements UserService public String sayHello() return "Hello DubboAndZookeeper"; public User getUser() User user = new User(1, "zhangsan", "123456"); return user;
**注意:**如果使用自定义对象,那么这个对象要实现
Serializable
接口
6. ZooKeeper在Spring中使用
-
在SpringWeb项目的
pom.xml
文件中添加如下依赖<packaging>war</packaging> <properties> <dubbo.version>2.7.4.1</dubbo.version> <zookeeper.version>4.0.0</zookeeper.version> </properties> <!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>$dubbo.version</version> </dependency> <!--ZooKeeper客户端实现 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>$zookeeper.version</version> </dependency> <!--ZooKeeper客户端实现 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>$zookeeper.version</version> </dependency>
-
在
applicationContext.xml
添加如下配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven/> <context:component-scan base-package="com.example.controller"/> <!--dubbo的配置--> <!--1.配置项目的名称,唯一--> <dubbo:application name="dubbo-web" > <dubbo:parameter key="qos.port" value="33333"/> </dubbo:application> <!-- 修改端口号--> <dubbo:protocol port="20282"/> <!--2.配置注册中心的地址--> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!--3.配置dubbo包扫描--> <dubbo:annotation package="com.example.controller" /> </beans>
-
在
Controller
类上面把@Autowired
注入改为@Reference
注入@RestController @RequestMapping("/user") public class UserController // @Autowired /* 1. 从zookeeper注册中心获取userService的访问url 2. 进行远程调用RPC 3. 将结果封装为一个代理对象。给变量赋值 */ @Reference//远程注入 public UserService userService; @RequestMapping("/sayHello") public String sayHello() return userService.sayHello(); @RequestMapping("/getUserById") public String getUserById() User user = userService.getUser(); System.out.println(user.toString()); return user.toString();
以上是关于Mac 下ZooKeeper安装和使的主要内容,如果未能解决你的问题,请参考以下文章