-
Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。
-
致力于提供高性能和透明化的RPC远程服务调用方索,以及SOA服务治理方案。
点击快速开始
节点角色说明:
-
Provider:暴露服务的服务提供方
-
Container:服务运行容器
-
Consumer:调用远程服务的服务消费方
-
Registry:服务注册与发现的注册中心
-
Monitor:统计服务的调用次数和调用时间的监控中心
1、Zookeeper安装和启动
. Dubbo官方推荐使用Zookeeper作为注册中心
下载安装Zookeeper,在这之前需要安装Java这里不演示
在这里我们使用的是虚拟机安装Zookeeper,在虚拟机当中的opt目录当中创建zookeeper目录
mkdir zookeeper
通过WinSCP将对应的Zookeeper安装包上次到Linux当中的opt/zookeeper目录当中
在终端当中解压对应的zookeeper
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
修改配置文件
进入配置文件的目录当中
进入
cd /opt/zookeeper/apache-zookeeper-3.5.6-bin/conf
复制zoo_sample.cfg 修改其文件名
cp zoo_sample.cfg zoo.cfg
编辑 zoo.cfg
vim zoo.cfg
我们需要修改dataDir=/tmp/zookeeper
开启另外一个终端窗口
进入到/opt/zookeeper
cd /opt/zookeeper
创建zkdata目录
mkdir zkdata
回到之前的终端修改dataDir,按i插入,然后设置对应的路径,/opt/zookeeper/zkdata
然后esc
->:
->wq
启动zookeeper
进入bin目录
启动zkServer.sh
./zkServer.sh start
停止zkServer.sh
./zkServer.sh stop
查看状态
./zkServer.sh status
2、Dubbo快速入门
(1)相关概念
实现步骤
(1)创建服务提供者Provider模块
(2)创建服务消费者Consumer模块
(3)在服务提供者模块编写UserServiceImpl提供服务
(4)在服务消费者中的UserController远程调用UserServiceImpl提供的服务
(5)分别启动两个服务,测试
3、搭建Web工程
(2)创建Java工程
创建了一个空项目
设置一下JDK
配置好Maven
(3)创建模块
创建模块一
创建成功
创建模块二
(4)引入依赖
1)在dubbo-web当中引入依赖
<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”>
4.0.0
cn.itbluebox
dubbo-web
1.0-SNAPSHOT
<spring.version>5.1.9.RELEASE</spring.version>
<dubbo.version>2.7.4.1</dubbo.version>
<zookeeper.version>4.0.0</zookeeper.version>
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
org.apache.dubbo
dubbo
${dubbo.version}
org.apache.curator
curator-framework
${zookeeper.version}
org.apache.curator
curator-recipes
${zookeeper.version}
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
8000
2)在dubbo-service当中引入依赖
<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”>
4.0.0
cn.itbluebox
dubbo-service
1.0-SNAPSHOT
<spring.version>5.1.9.RELEASE</spring.version>
<dubbo.version>2.7.4.1</dubbo.version>
<zookeeper.version>4.0.0</zookeeper.version>
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
org.apache.dubbo
dubbo
${dubbo.version}
org.apache.curator
curator-framework
${zookeeper.version}
org.apache.curator
curator-recipes
${zookeeper.version}
(5)编写Service和对应的实现类
package com.itbluebox.service;
public interface UserService {
public String sayHello();
}
package com.itbluebox.service.impl;
import com.itbluebox.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
public String sayHello() {
return “hello dubbo!~”;
}
}
(6)创建相关的配置文件
- applicationContext.xml
<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.itbluebox.service”/>
- log4j.properties
DEBUG < INFO < WARN < ERROR < FATAL
Global logging configuration
log4j.rootLogger=info, stdout,file
My logging configuration…
#log4j.logger.com.tocersoft.school=DEBUG
#log4j.logger.net.sf.hibernate.cache=debug
Console output…
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=…/logs/iask.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
(7)编写controller
1)修改一下配置文件
war
2)创建对应的目录和web.xml
<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns=“http://java.sun.com/xml/ns/javaee”
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
version=“2.5”>
contextConfigLocation
classpath*:spring/applicationContext*.xml
org.springframework.web.context.ContextLoaderListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
springmvc
*.do
设置一下依赖
dubbo-web 依赖dubbo-service
org.example
dubbo-service
1.0-SNAPSHOT
3)创建SpringMVC相关配置文件
- springmvc.xml
<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.itbluebox.controller”/>
- log4j.properties
DEBUG < INFO < WARN < ERROR < FATAL
Global logging configuration
log4j.rootLogger=info, stdout,file
My logging configuration…
#log4j.logger.com.tocersoft.school=DEBUG
#log4j.logger.net.sf.hibernate.cache=debug
Console output…
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=…/logs/iask.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
4)实现controller
@RestController
@RequestMapping(“/user”)
public class UserController {
//注入Service
@Autowired
private UserService service;
@RequestMapping(“/sayHello”)
public String sayHello(){
return service.sayHello();
}
}
(8)运行测试
安装service
安装web
双击运行
运行成功
访问测试
http://localhost:8000/user/sayHello.do
4、通过dubbo实现远程调用(服务提供者的创建)
(1)原理
(2)实现Service模块单独启动
- 引入依赖
在这之前我们已经引入过了依赖
将service改造成为war的项目
war
引入Tomcat的插件
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
9000
- 修改代码
dubbo-service当中的UserServiceImpl
注意这里的@Service
注解是Dubbo
的
package com.itbluebox.service.impl;
import com.itbluebox.service.UserService;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
9000
- 修改代码
dubbo-service当中的UserServiceImpl
注意这里的@Service
注解是Dubbo
的
package com.itbluebox.service.impl;
import com.itbluebox.service.UserService;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-5CLdM6RK-1714816408704)]
[外链图片转存中…(img-usZUopYC-1714816408704)]
[外链图片转存中…(img-aLnsqLBT-1714816408704)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!