CentOS的配置:

1.给CentOS安装Zookeeper:

网络配置成仅主机

上传tar.gz:比如用FTP

tar -xvzf ...

cd zookeeper

mkdir data

cd conf

mv zoo_sample.cfg zoo.cfg

vi zoo.cfg

修改这一行:

dataDir=/soft/zookeeper-3.4.6/data

然后就可以运行了:

cd bin

./zkServer.sh start

下面做一个最基本的Demo,返回一个固定的名称即可:

服务提供方:

Maven新建项目:

搭建一个基本的Maven架构:

目录结构:

pom.xml:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>org.dreamtech.demo</groupId>
  5. <artifactId>dubboxdemo-service</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>war</packaging>
  8. <properties>
  9. <spring.version>4.2.4.RELEASE</spring.version>
  10. </properties>
  11.  
  12. <dependencies>
  13. <!-- Spring -->
  14. <dependency>
  15. <groupId>org.springframework</groupId>
  16. <artifactId>spring-context</artifactId>
  17. <version>${spring.version}</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring-beans</artifactId>
  22. <version>${spring.version}</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework</groupId>
  26. <artifactId>spring-webmvc</artifactId>
  27. <version>${spring.version}</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-jdbc</artifactId>
  32. <version>${spring.version}</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework</groupId>
  36. <artifactId>spring-aspects</artifactId>
  37. <version>${spring.version}</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework</groupId>
  41. <artifactId>spring-jms</artifactId>
  42. <version>${spring.version}</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework</groupId>
  46. <artifactId>spring-context-support</artifactId>
  47. <version>${spring.version}</version>
  48. </dependency>
  49.  
  50. <!-- dubbo相关 -->
  51. <dependency>
  52. <groupId>com.alibaba</groupId>
  53. <artifactId>dubbo</artifactId>
  54. <version>2.8.4</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.apache.zookeeper</groupId>
  58. <artifactId>zookeeper</artifactId>
  59. <version>3.4.6</version>
  60. </dependency>
  61. <dependency>
  62. <groupId>com.github.sgroschupf</groupId>
  63. <artifactId>zkclient</artifactId>
  64. <version>0.1</version>
  65. </dependency>
  66.  
  67. <dependency>
  68. <groupId>javassist</groupId>
  69. <artifactId>javassist</artifactId>
  70. <version>3.11.0.GA</version>
  71. </dependency>
  72.  
  73. </dependencies>
  74. <build>
  75. <plugins>
  76. <plugin>
  77. <groupId>org.apache.maven.plugins</groupId>
  78. <artifactId>maven-compiler-plugin</artifactId>
  79. <version>2.3.2</version>
  80. <configuration>
  81. <source>1.7</source>
  82. <target>1.7</target>
  83. </configuration>
  84. </plugin>
  85. <plugin>
  86. <groupId>org.apache.tomcat.maven</groupId>
  87. <artifactId>tomcat7-maven-plugin</artifactId>
  88. <configuration>
  89. <!-- 指定端口 -->
  90. <port>8081</port>
  91. <!-- 请求路径 -->
  92. <path>/</path>
  93. </configuration>
  94. </plugin>
  95. </plugins>
  96. </build>
  97. </project>

新建web-inf目录然后加入web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. version="2.5">
  6. <!-- 加载spring容器 -->
  7. <context-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>classpath:applicationContext*.xml</param-value>
  10. </context-param>
  11. <listener>
  12. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  13. </listener>
  14. </web-app>

然后Spring配置文件applicationxxx.xml,先写一个空架子:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. </beans>

正式开始写个Demo:

  1. package org.dreamtech.demo.service;
  2.  
  3. public interface UserService {
  4. public String getName();
  5. }
  1. package org.dreamtech.demo.service.impl;
  2.  
  3. import org.dreamtech.demo.service.UserService;
  4.  
  5. import com.alibaba.dubbo.config.annotation.Service;
  6.  
  7. @Service
  8. public class UserServiceImpl implements UserService {
  9.  
  10. @Override
  11. public String getName() {
  12. return "dreamtech";
  13. }
  14.  
  15. }

修改配置文件:zookeeper配为CentOS的IP

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <dubbo:application name="dubboxdemo-service"/>
  11. <dubbo:registry address="zookeeper://192.168.25.100:2181"/>
  12. <dubbo:annotation package="org.dreamtech.demo.service.impl"/>
  13. </beans>

运行:Maven Build

运行之后,需要再配置服务消费方

和上边一样的新建方式,不过取名为dubboxdemo-web

pom.xml文件有一个地方不一致,需要注意:

  1. <plugin>
  2. <groupId>org.apache.tomcat.maven</groupId>
  3. <artifactId>tomcat7-maven-plugin</artifactId>
  4. <configuration>
  5. <!-- 指定端口 -->
  6. <port>8082</port>
  7. <!-- 请求路径 -->
  8. <path>/</path>
  9. </configuration>
  10. </plugin>

web.xml配置就不一样了,需要SpringMVC的东西:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. version="2.5">
  6. <!-- 解决post乱码 -->
  7. <filter>
  8. <filter-name>CharacterEncodingFilter</filter-name>
  9. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  10. <init-param>
  11. <param-name>encoding</param-name>
  12. <param-value>utf-8</param-value>
  13. </init-param>
  14. <init-param>
  15. <param-name>forceEncoding</param-name>
  16. <param-value>true</param-value>
  17. </init-param>
  18. </filter>
  19. <filter-mapping>
  20. <filter-name>CharacterEncodingFilter</filter-name>
  21. <url-pattern>/*</url-pattern>
  22. </filter-mapping>
  23.  
  24. <servlet>
  25. <servlet-name>springmvc</servlet-name>
  26. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  27. <!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 -->
  28. <init-param>
  29. <param-name>contextConfigLocation</param-name>
  30. <param-value>classpath:springmvc.xml</param-value>
  31. </init-param>
  32. </servlet>
  33.  
  34. <servlet-mapping>
  35. <servlet-name>springmvc</servlet-name>
  36. <url-pattern>*.do</url-pattern>
  37. </servlet-mapping>
  38. </web-app>

然后就是在src/main/resources中写入SpringMVC的配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <mvc:annotation-driven >
  11. <mvc:message-converters register-defaults="false">
  12. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  13. <constructor-arg value="UTF-8" />
  14. </bean>
  15. </mvc:message-converters>
  16. </mvc:annotation-driven>
  17. </beans>

接下来就是编码:

目录结构如下

  1. package org.dreamtech.demo.controller;
  2.  
  3. import org.dreamtech.demo.service.UserService;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.ResponseBody;
  7.  
  8. import com.alibaba.dubbo.config.annotation.Reference;
  9.  
  10. @Controller
  11. @RequestMapping("/user")
  12. public class UserController {
  13. @Reference
  14. private UserService userService;
  15. @RequestMapping("/showName")
  16. @ResponseBody
  17. public String showName(){
  18. return userService.getName();
  19. }
  20. }
  1. package org.dreamtech.demo.service;
  2.  
  3. public interface UserService {
  4. public String getName();
  5. }

注意,只是复制过来了接口,没有复制实现类

SpringMVC配置稍作修改:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  10. <mvc:annotation-driven>
  11. <mvc:message-converters register-defaults="false">
  12. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  13. <constructor-arg value="UTF-8" />
  14. </bean>
  15. </mvc:message-converters>
  16. </mvc:annotation-driven>
  17. <dubbo:application name="dubboxdemo-web" />
  18. <dubbo:registry address="zookeeper://192.168.25.100:2181" />
  19. <dubbo:annotation package="org.dreamtech.demo.controller" />
  20. </beans>

接下来开始测试:

首先要确保CentOS服务器的Zookeeper正常运行

然后先启动服务提供方

再启动服务消费方

访问http://localhost:8082/user/showName

实际上,遇到了三个大坑,查阅很多资料之后才解决:

1.CentOS端口并没有开放,开启命令如下:

firewall-cmd --add-port=2181/tcp

验证是否成功开启:

firewall-cmd --query-port=2181/tcp

2.注意这个类,这里的@Service注解不能导入Spring的!

  1. package org.dreamtech.demo.service.impl;
  2.  
  3. import org.dreamtech.demo.service.UserService;
  4.  
  5. import com.alibaba.dubbo.config.annotation.Service;
  6.  
  7. @Service
  8. public class UserServiceImpl implements UserService {
  9.  
  10. @Override
  11. public String getName() {
  12. return "dreamtech";
  13. }
  14.  
  15. }

3.JDK版本必须是1.7,如果是1.8可能会报错

正确情况如下:

Dubbox管理中心部署:

使用MVN命令对源码进行编译:

mvn package -Dmaven.skip.test=true

编译后得到一个dubbo-admin.war

在CentOS上部署Tomcat,并在webapps放入dubbo-admin.war

启动Tomcat: ./startup.sh

开防火墙:

firewall-cmd --add-port=8080/tcp

后来发现这个dubbo-admin无法运行

排错之后发现是Linux的JDK版本太高

降低版本,之前在etc/profile里面export的是一个软链接,所以直接删掉软链接再新建就像

这样就可以方便地在JDK1.7到1.8之间切换

一切配完,就可以打开[CentOS IP]/dubbo-admin

输入默认账户名,密码root,进入,即可查看详情:

配置Zookeeper、Dubbox的更多相关文章

  1. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  2. Ubuntu环境下手动配置zookeeper

    配置zookeeper 注意:因为是单机伪分布式配置,故同一机器上有3个server zookeeper文件格式如下 home---zookeeper---server0---zookeeper | ...

  3. Ubuntu 16下单机安装配置zookeeper和kafka

    网上其他的没有一个能直接照做完成的,我这个也是看了些帖子,整出来的怕以后忘记 建议连接工具:Bitvise SSH Client 一.安装配置zookeeper 下载zookeeper 3.4.13: ...

  4. 怎样在本地windows安装和配置zookeeper

    Zookeeper是什么?有什么用? Zookeeper是一个分布式协调服务. 作用:为用户的分布式应用程序提供协调服务.  zookeeper在底层其实只提供了两个功能: 1.管理(存储,读取)用户 ...

  5. 配置zookeeper集群

    创建3台服务,不同ip,相同端口 1.先安装jdk1.8 解压: tar -zxvf jdk-8u11-linux-x64.tar.gz 重新命名文件夹名字: mv jdk1..0_11/ jdk8 ...

  6. window安装配置 zookeeper 单机模式

    1.zookeeper简单介绍 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,我所了解到的主要的使用场景有两个 (1).微服务注册中心(Dubbo较常用Zookeeper做注册中 ...

  7. 安装配置ZooKeeper及基本用法

    要想学习分布式应用,ZooKeeper是一个绕不过去的基础系统.它为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册. 今天先介绍系统的安装和基本使用,后续会推一些基本的Java使用代码. ...

  8. linux教程:[3]配置Zookeeper开机启动

    ZooKeeper是Hadoop的正式子项目: Hadoop是一个分布式系统基础架构,由Apache基金会所开发: Zookeeper能够用来leader选举:也就是你有N+1台同样的服务器的时候又z ...

  9. Hadoop集群搭建-02安装配置Zookeeper

    Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS  Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...

  10. Linux配置zookeeper 和zookeeper简单介绍

    一.zookeeper介绍? 一.zookeeper 简单介绍? 1.什么是集群? // 很多台服务器保持连接通讯状态,并且所有的服务器做同一件事就称之为集群 2.什么是zookeeper? 注册中心 ...

随机推荐

  1. Linux密码重置

    在启动菜单选择启动内核: 按e编辑,编辑修改两处:ro改为rw,和找到rhgb quiet一行: 把rhgb quiet替换为init=/bin/bash(临时生效): 按CTRL+X进入单用户模式: ...

  2. C#生成COM组件

    1.类库代码 1.1暴露的方法必须以接口的方式实现 1.2类需要GUID编号 using System; using System.Runtime.InteropServices; //COM组件 n ...

  3. Webpack3 从入门到放弃

    我是网络的搬运工,具体请看:Webpack 3,从入门到放弃

  4. 工具系列-idea破解

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  5. Python 官方文档解读(1):66 个内置函数

    Python 解释器 (CPython 3.7)内置有 66 个函数,这些函数在任何时刻都是可用的.此文是为了对这 66 个函数进行简单的梳理,便于以后可能用到它们时能想到. 1. abs(x) 返回 ...

  6. DCDC设计指南二

    DCDC电源设计指导:二 这一讲以一款SOP-8封装的Synchronous Step-Down Converter(同步降压转换器)电源IC为例,讲下电源的PCB设计. 如第一讲中所说,开始设计时就 ...

  7. Pandas 0 数据结构Series

    # -*- encoding:utf-8 -*- # Copyright (c) 2015 Shiye Inc. # All rights reserved. # # Author: ldq < ...

  8. SPFA板子 (背景:Luogu P3371 单源最短路径)

    Luogu P3371 单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数 ...

  9. BZOJ 4455

    树的点到图的点是双射 枚举哪些点可以映射到 然后dp容斥 复杂度 $2^n*n^3$ #include<bits/stdc++.h> using namespace std; #defin ...

  10. python基础知识总结(一)

    学完python很久了,一直想着写个学习总结,奈何懒癌晚期,现在才开始写.以下是我总结的一小部分python基础知识点的总结: 1.什么是解释型语言?什么是编译型编程语言? ''' 解释型语言:无需编 ...