目录
1.什么是duboo
2.架构图
3.快速入门
4.浅浅理解
Dubbo是一个由阿里巴巴开发的基于Java的开源RPC框架。它提供了高性能、透明化的远程方法调用,以及服务自动注册和发现、负载均衡、容错、限流、监控等功能,使得分布式应用开发变得更加简单。Dubbo广泛应用于阿里巴巴内部服务化架构,也是国内外很多大型互联网公司的首选框架之一。
- Provider:暴露服务的服务提供方
- Container:服务运行容器
- Consumer:调用远程服务的服务消费方
- Registry:服务注册与发现的注册中心
- Monitor:统计服务的调用次数和调用时间的监控中心
基本步骤:
- ①创建服务提供者Provider模块
- ②创建服务消费者Consumer模块
- ③在服务提供者模块编写UserServicelmpl 提供服务
- ④在服务消费者中的UserController远程调用UserServicelmpl 提供的服务
- ⑤分别启动两个服务,测试
创建一个模块作为公共接口
public interface UserService {
public String say();
}
创建逻辑模块
1.引入user-api,
2.tomcat端口为9000
5.1.9.RELEASE
2.7.4.1
4.0.0
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.example
user-api
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
9000
/
配置zookeeper(注册中心)的 ip地址和端口
contextConfigLocation
classpath*:spring*.xml
org.springframework.web.context.ContextLoaderListener
@Service//将这个类提供的方法,对外发布,将访问的地址 ip 端口,注册到注册中心中
public class UserServiceImpl implements UserService {
@Override
public String say() {
return "hello xiaoZhang~";
}
}
创建一个模块,作为访问层接口
1.引入user-api,
2.tomcat端口为8000
5.1.9.RELEASE
2.7.4.1
4.0.0
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.example
user-api
1.0-SNAPSHOT
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
8000
/
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
springmvc
*.do
引入zookeeper(注册中心)的ip地址和端口,以及要扫描的包
- @Reference的作用:
- 1.从zookeeper(注册中心)获取userService的访问url
- 2.进行远程调用RPC
- 3.将结果封装为代理对象,给变量赋值
@RestController
@RequestMapping("/user")
public class UserController {
@Reference//远程注入
private UserService userService;
@RequestMapping("/say")
public String say(){
return userService.say();
}
}
注意:在启动插件时,一定要先clear 和install 父项目的,然后依次执行,最后在启动tomcat7-run
不然你会痛苦的~
至此~dubbo部署成功!!!
对于服务与消费的理解:相对于之前的dao,service,controller的三层架构,如今服务就是service,controller就是消费者;与此同时,每个服务都可以独立开发、部署和维护