学习笔记--Dubbo

Dubbo学习笔记

Dubbo是什么

Dubbo是:

  • 一款分布式服务框架
  • 高性能和透明化的RPC远程服务调用方案
  • SOA服务治理方案

ZooKeeper服务注册中心

下载 ZooKeeper ,地址 http://www.apache.org/dyn/closer.cgi/zookeeper
解压,修改zoo_sample.cfg 重命名为zoo.cfg

tar zxvf zookeeper-3.4.8.tar.gz
cd zookeeper-3.3.6/conf
vim zoo.cfg

zoo.cfg主要配置

tickTime=2000
dataDir=/javaee/zookeeper/data 
dataLogDir=/javaee/zookeeper/log
clientPort=2181

启动zookeeper

cd zookeeper-3.3.6/bin
./zkServer.sh start

搭建Dubbo Admin,Dubbo的管理界面

从GitHub下载源码,位置https://github.com/apache/incubator-dubbo-ops
只需要dubbo-admin项目,导入工程,打成war包放到tomcat下跑

创建服务提供者

创建SpringBoot项目
pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qyluo</groupId><artifactId>dubbo-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>dubbo-demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- Spring Boot Dubbo 依赖 --><dependency><groupId>io.dubbo.springboot</groupId><artifactId>spring-boot-starter-dubbo</artifactId><version>1.0.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.6</version></dependency><!-- Spring Boot Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Test 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- Junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

application.properties

## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.qyluo.dubbodemo.service

实体类Person

package com.qyluo.dubbodemo.service;import com.qyluo.dubbodemo.entity.Person;public interface FindPerson {Person findPersonByName(String name);
}

服务接口FindPerson

package com.qyluo.dubbodemo.service;import com.qyluo.dubbodemo.entity.Person;public interface FindPerson {Person findPersonByName(String name);
}

FindPerson实现类

package com.qyluo.dubbodemo.service;import com.alibaba.dubbo.config.annotation.Service;
import com.qyluo.dubbodemo.entity.Person;/*** @author qiyao.luo* @create 2018/7/27*/
@Service
public class FindPersonImpl implements FindPerson {@Overridepublic Person findPersonByName(String name) {return new Person(name, 10);}
}

启动应用

创建服务消费者

SpringBoot项目
pom.xml和服务提供者依赖一样
application.properties

server.port=8081## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.qyluo.dubbodemo.service
spring.dubbo.protocol.name=dubbo

需要在和服务提供者接口相同的包路径下创建FindPerson接口

package com.qyluo.dubbodemo.service;import com.qyluo.dubbodemo.entity.Person;public interface FindPerson {Person findPersonByName(String name);
}

服务调用的类FindPersonConsumer

package com.qyluo.dubbodemo.service.impl;import com.alibaba.dubbo.config.annotation.Reference;
import com.qyluo.dubbodemo.service.FindPerson;
import org.springframework.stereotype.Service;/*** @author qiyao.luo* @create 2018/7/27*/
@Service
public class FindPersonConsumer {@ReferenceFindPerson findPerson;public void printPerson() {String name = "xiaoli";System.out.println(findPerson.findPersonByName(name));}
}

创建controller

package com.qyluo.dubbodemo.controller;import com.qyluo.dubbodemo.service.impl.FindPersonConsumer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author qiyao.luo* @create 2018/7/27*/
@RestController
public class SampleController {@AutowiredFindPersonConsumer findPersonConsumer;@RequestMapping("/test")public void testDubbo() {findPersonConsumer.printPerson();}
}

访问http://localhost:8081/test

转载于:https://www.cnblogs.com/kioluo/p/9516688.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache hive_通过6个简单的步骤在Windows上运行Apache Hive

apache hive注意 &#xff1a;您需要安装cygwin才能运行本教程&#xff0c;因为Hadoop&#xff08;Hive所需&#xff09;需要cygwin才能在Windows上运行。 至少&#xff0c;系统中必须存在Basic&#xff0c;Net&#xff08;OpenSSH&#xff0c;tcp_wrapper软件包&#xff09;和…

java remove(index)_方法removeElementAt(int index)在Java中做什么?

removeElementAt(INT指数)方法用于指定索引处删除的组件。该向量中具有大于或等于指定索引的索引的每个分量都向下移动&#xff0c;以使其索引比以前具有的值小一个&#xff0c;并且此向量的大小减小1。示例public class VectorDemo {public static void main(String[] args) {…

C++的营养

上一篇《C的营养——RAII》中介绍了RAII&#xff0c;以及如何在C#中实现。这次介绍另一个重要的基础技术——swap手法。swap手法 swap手法不应当是C独有的技术&#xff0c;很多语言都可以实现&#xff0c;并且从中得到好处。只是C存在的一些缺陷迫使大牛们发掘&#xff0c;并开…

git rm -r --cached 去掉已经托管在git上的文件

1.gitignore文件 在git中如果想忽略掉某个文件&#xff0c;不让这个文件提交到版本库中&#xff0c;可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如&#xff1a; # 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !l…

Gradle技巧–显示buildscript依赖项

在Gradle中如何显示和分析buildscript依赖项&#xff08;例如插件&#xff09;的简单方法 介绍 这是我的Gradle技巧迷你系列的第三部分&#xff0c;该系列与可视化和依赖性分析有关。 在第一篇文章中&#xff0c;我介绍了一种如何显示多项目构建中所有子项目的依赖关系的方法。…

Java购物车swing_JAVA课程设计--购物车

1.码云GIT提交2.设计思路1&#xff0c;使用数据库对购物车的数据进行处理2.分别使用sql语句来实现对购物车和商城物品的增删改查。3.代码package Main;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import j…

[python] 列表解析式的高效与简洁

方法一&#xff08;列表解析式&#xff09;&#xff1a; list1 ["abc","efg","hij"] list2 [i[0] for i in list1] print list2方法二&#xff08;普通写法&#xff09;&#xff1a; list1 ["abc","efg","hij"…

c++异常处理机制示例及讲解

&#xfeff;&#xfeff;这两天我写了一个测试c异常处理机制的例子&#xff0c;感觉有很好的示范作用&#xff0c;在此贴出来&#xff0c;给c异常处理的初学者入门。本文后附有c异常的知识普及&#xff0c;有兴趣者也可以看看。 下面的代码直接贴到你的console工程中&am…

mysql数据库char类型长度_mysql数据库设计字符类型及长度

1.数字类型小数的我就不聊了&#xff0c;因为有小数点的一般都是用字符串保存。关于整数&#xff0c;有几种可以选TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT&#xff0c;分别占1、2、4、8字节。如果无符号&#xff0c;则其最大为255、65535、16777215、4294967295和184467440…

隐藏响应的server,X-Powered-By

隐藏X-Powered-By 修改 php.ini 文件 设置 expose_php Off apache 隐藏 server 修改httpd.conf 设置 ServerSignature Off ServerTokens Prod nginx 隐藏 server 修改nginx.conf 在http里面设置 server_tokens off;转载于:https://www.cnblogs.com/ouruola863/p/9519500.ht…

javaone_JavaOne 2012:掌握Java部署

javaone在为另一场JavaOne 2012午餐吃了意大利经典组合后&#xff0c;我前往希尔顿帝国宴会厅B观看了演示“掌握Java部署”。 来自Oracle的发言人是Mark Howe和Igor Nekrestyano Howe表示&#xff0c;部署团队的目标是帮助Java开发人员将其应用程序部署到所选平台。 他首先讨论…

C++异常处理机制详解

&#xfeff;&#xfeff;异常处理是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况(异常exception)时相互通信的机制。本文总结了19个C异常处理中的常见问题&#xff0c;基本涵盖了一般C程序开发所需的关于异常处理部分的细节。 1. throw可以抛出哪些种类…

Github pull request 工作流总结

github 上面有很多非常不错的开源项目&#xff0c;我们也可以向其贡献自己的代码&#xff0c;那么我们如何提交自己的代码给开源项目呢&#xff1f;这里就要用到 pull request 的提交方式。当然&#xff0c;基于 git 的其他平台也是类似的用法。 假设源仓库为&#xff1a;https…

[MEGA DEAL] Java编程-硕士课程(85%折扣)

获得有关Java所有事物的高级分步指导 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的Java编程–硕士课程 仅售29美元&#xff0c;而不是原始价格149美元 &#xff0c;是的&#xff0c;可享受…

java中对象别名使用_JAVA中的别名现象

问题的提出&#xff1a;在java中&#xff0c;对基本数据类型的赋值时&#xff0c;是将数据从一个地方复制到另外一个地方&#xff0c;当ab时&#xff0c;将b的内容复制给a,若修改a时&#xff0c;b并不会受到这种修改的影响。在对对象进行赋值时&#xff0c;当我们对一个对象进行…

C/C++中的运算符优先级总结

C语言中的运算符 说明 运算符 结合性 初等运算符 () [] -> . -> 单目运算符 ! ~ -- - (类型) * & sizeof <- 算术运算符 * / % -> 算术运算符 - -> 移位运算符 << >> -> 关系运算符 > > < < -> 关系运算符 ! -> 按位与…

nginx 直接在配置文章中设置日志分割

直接在nginx配置文件中&#xff0c;配置日志循环&#xff0c;而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_iso8601格式如下&#xff1a;2015-08-07T18:12:0202:00。然后使用正则表达式来获取所需时间的数据。 按天分割日志 使用下面…

javaone_JavaOne 2012:JavaOne技术主题演讲

javaoneMark Reinhold从JavaOne 2012技术主题演讲开始。 他说&#xff0c;今年的版本将有所不同&#xff0c;因为它将使用大致相同的示例来说明Java的各个方面&#xff0c;而不是对Java的每个组件进行单独的单独介绍。 JavaFX团队的Richard Bair和Jasper Potts &#xff08;并与…

java sqlserver 死锁_sqlserver数据库发生死锁处理

SQLSERVER数据库锁表1. 查看被锁的表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableNamefrom sys.dm_tran_locks where resource_typeOBJECT2. 解除表的锁定declare spid intSet spid 57 --锁表进程declare sql varchar(1000)set sqlk…

setjump和longjump

int setjmp( jmp_buf env );void longjmp( jmp_buf env, int value );# setjmp(j)设置“jump”点&#xff0c;用正确的程序上下文填充jmp_buf 对象j。这个上下文包括程序存放位置、栈和框架指针&#xff0c;其它重要的寄存器和内存数据。当初始化完jump 的上下文&#xff0c;se…