Dubbo入门
来源:互联网 发布:js怎么传值给jsp 编辑:程序博客网 时间:2024/06/07 09:48
dubbo结构图:
dubbo管理控制台安装(ubuntu)
必须使用jdk1.7(其他版本不行),否则报错
安装zookeeper(单节点)之后
在zookeeper根目录新建两个文件夹mkdir datamkdir logscd zookeeper-3.4.6/confcp zoo_sample.cfg zoo.cfg
- 修改zoo.cfg配置文件内容
syncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just# example sakes.dataDir=/home/xialonglei/zookeeper-3.4.6/datadataLogDir=/home/xialonglei/zookeeper-3.4.6/logs# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1server.1=xialonglei:2888:3888
- 启动zookeeper
./zkServer.sh start
表明zkServer启动成功!
安装tomcat
管理控制台部署代码下载地址:http://download.csdn.net/download/xia744510124/9988189
放到webapps下载解压unzip duubo-admin.war -d ROOThttp://127.0.01:8080
表明dubbo管理控制台部署成功!
dubbo监控中心的安装
- 监控中心的部署代码下载(dubbo-monitor-simple-2.8.4-assembly.tar.gz):http://download.csdn.net/download/xia744510124/9993813
- 解压 - cd 监控中心的conf文件夹下 - vim dubbo.properties(屏蔽掉广播地址,打开zookeeper注册中心地址,修改dubbo.jetty.port=9090) - cd 监控中心的bin目录下 - ./start.sh - 最好不要将zookeeper服务与监控中心部署在同一台机器上,避免机器挂掉后,注册中心和监控中心都挂掉了
- 访问http://localhost:9090
dubbo与spring整合
- 所需要的依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.5</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency></dependencies>
- provider.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://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-- 提供方应用信息,用于计算机依赖关系 --> <dubbo:application name="provider_1"/> <!-- 使用multicast广播注册中心暴露服务地址 --> <!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> --> <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper的所在服务器ip地址和端口号 --> <dubbo:registry address="zookeeper://192.168.2.121:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <!-- serializtion 协议序列方式,当协议支持多种序列化方式时使用,默认hessian2 比如:dubbo协议的dubbo,hessian2,java,compactedjava,以及http协议的json等 --> <dubbo:protocol name="dubbo" port="20880" serialization="json"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.xll.dubbo.DemoService" ref="demoService"/> <!-- 和本地bean一样实现服务 --> <bean id="demoService" class="com.xll.dubbo.provider.DemoServiceImpl"/></beans>
- consumer.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://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-- 提供方应用信息,用于计算机依赖关系 --> <dubbo:application name="consumer_1"/> <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper的所在服务器ip地址和端口号 --> <dubbo:registry address="zookeeper://192.168.2.121:2181" /> <dubbo:reference id="demoService" interface="com.xll.dubbo.DemoService"/></beans>
- 目录结构(intellij idea maven)
- dubbo-provider代码
1. DemoService(接口)代码:package com.xll.dubbo;/** * Created by lonely.xia on 2017/9/18. */public interface DemoService { String sayHello(String name);}2. DemoServiceImpl.java代码:package com.xll.dubbo.provider;import com.xll.dubbo.DemoService;/** * Created by lonely.xia on 2017/9/18. */public class DemoServiceImpl implements DemoService { public String sayHello(String name) { return "name->" + name; }}3. ProviderMain.java代码package com.xll.dubbo.provider;import com.xll.dubbo.DemoService;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;/** * Created by lonely.xia on 2017/9/18. */public class ProviderMain { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); classPathXmlApplicationContext.start(); System.in.read(); // 按任意键退出 }}
- dubbo-consumer代码
1. DemoService(接口)代码package com.xll.dubbo;/** * Created by lonely.xia on 2017/9/18. */public interface DemoService { String sayHello(String name);}2. ConsumerMain.java代码package com.xll.dubbo.consumer;import com.xll.dubbo.DemoService;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;/** * Created by lonely.xia on 2017/9/18. */public class ConsumerMain { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"}); classPathXmlApplicationContext.start(); DemoService demoService = (DemoService) classPathXmlApplicationContext.getBean("demoService"); String hello = demoService.sayHello("xialonglei"); System.out.println("RPC调用结果:" + hello); System.in.read(); // 按任意键退出 }}
- 启动服务者和消费者
dubbo过滤器的实现
- 在服务者中新建一个类
package com.xll.dubbo.filter;import com.alibaba.dubbo.rpc.*;/** * Created by lonely.xia on 2017/9/27.*/public class IpFilter implements Filter { public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String ip = RpcContext.getContext().getRemoteHost(); //如果是192.168.148.1机器发起的请求,则可以执行服务调用 if (ip.equals("192.168.148.1")) { return invoker.invoke(invocation); } else { return new RpcResult(); } }}
- 在resources文件夹中新建文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter(文件名必需为这个),文件内容如下
#name=value(name随意起,但value为过滤类路径)ipFilter=com.xll.dubbo.filter.IpFilter
- 结束
dubbo的文件上传和下载
- 新建file-facade服务接口模块(这样就可以使服务提供者和消费者共同依赖该模块)
- 新建file-service服务模块,作为服务提供者
- provider.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://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-- 提供方应用信息,用于计算机依赖关系 --> <dubbo:application name="provider_2"/> <!-- 使用multicast广播注册中心暴露服务地址 --> <!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> --> <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper的所在服务器ip地址和端口号 --> <dubbo:registry address="zookeeper://192.168.36.8:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <!-- serializtion 协议序列方式,当协议支持多种序列化方式时使用,默认hessian2 比如:dubbo协议的dubbo,hessian2,java,compactedjava,以及http协议的json等 --> <dubbo:protocol name="dubbo" port="20880" serialization="json"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.xll.service.IFileService" ref="fileService" protocol="hessian"/> <!-- 和本地bean一样实现服务 --> <bean id="fileService" class="com.xll.service.impl.FileServieImpl"/> <!-- 默认是以jetty作为服务容器,因此要下载jetty和hessian依赖 --> <dubbo:protocol name="hessian" port="20887"/></beans>
<dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.51</version></dependency><dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>6.1.26</version></dependency>
- 编写服务启动类
public class ProviderMain { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); classPathXmlApplicationContext.start(); System.in.read(); // 按任意键退出 }}
- 新建file-consumer消费者模块,作为服务的消费者
- 配置pom.xml文件
<dependency> <groupId>com.xll</groupId> <artifactId>file-facade</artifactId> <version>1.0-SNAPSHOT</version></dependency>
- 配置consumer.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://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <dubbo:application name="consumer_2"/> <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper的所在服务器ip地址和端口号 --> <dubbo:registry address="zookeeper://192.168.36.8:2181" /> <dubbo:reference id="fileService" interface="com.xll.service.IFileService" timeout="120000"/></beans>
- 启动服务者和消费者
阅读全文
0 0
- [dubbo入门] dubbo入门
- Dubbo入门
- dubbo入门
- dubbo入门
- Dubbo入门
- Dubbo入门
- dubbo入门
- Dubbo入门
- dubbo入门
- Dubbo入门
- dubbo入门
- Dubbo入门
- dubbo入门
- Dubbo入门
- Dubbo入门
- dubbo 入门
- Dubbo入门
- Dubbo入门
- spring cloud config
- STL_map
- 纯干货,Spring-data-jpa详解,全方位介绍。
- Cobbler全自动批量安装部署Linux系统
- [职业规划]年龄的重要性 Silicon Valley’s Dark Secret: It’s All About Age
- Dubbo入门
- C++ 初始化列表(转载)
- JSP小整理(一)
- 判断输入的二叉树是否是一致
- 并行执行(Callable和Future)一定比串行执行效率高吗?
- newFixedThreadPool线程池数量问题
- 临时用来存放图片的博客
- Optional源码分析和使用
- GKPolygonObstacle