Dubbo框架
Dubbo框架的介绍
Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架(SOA),使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
如何设用Dubbo
1 - Dubbo的依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2 - 工作原理
理论来说不符合同源测咯的两台服务器通过跨域来通信,但是这种方法导致不安全但是微服务Dubbo框架远程调用本地方法无障碍的情况下实现类两个服务器之间的通讯,也是安全性极强
Yml文件配置
#关于Dubbo配置
dubbo:
scan:
basePackages: com.jt #指定dubbo的包路径
application: #应用名称
name: provider-item #一个接口对应一个服务名称
registry:
address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
protocol: #指定协议
name: dubbo #使用dubbo协议(tcp-ip) web-controller直接调用sso-Service
port: 20880 #每一个服务都有自己特定的端口 不能重复.
zookeeper ---- 是注册中心(看相关的内容)
项目结构
1. service 接口 和 pojo 可以放公共模块里面
2. serviceImpl 放入 服务提供者(service的实现类)
3. controller 控制层放入消费者
interface被消费者/生产者(提供者)依赖
代码结构
公共模块
提供者
Mapper(Dao) 和 service的实现类(Impl)
Mapper(Dao)
使用mybatis-puls的情况下
public interface UserMapper extends BaseMapper<User>{
}
serviceImpl(service的实现类)
@Service(timeout=3000) //3秒超时 内部实现了rpc
//@org.springframework.stereotype.Service//将对象交给spring容器管理
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
System.out.println("我是提供者");
return userMapper.selectList(null);
}
消费者
@RestController
public class UserController {
利用dubbo的方式为接口创建代理对象 利用rpc调用
@Reference(loadbalance="roundrobin")
private UserService userService;
@RequestMapping("/findAll")
public List<User> findAll(){
//远程调用时传递的对象数据必须序列化.
return userService.findAll();
}
代码的改动
使用Dubbo后的代码变动
消费者中
@Autowired ———— @Reference(loadbalance=“roundrobin”) dubbo的注解
提供者中
@Service ———— @Service(timeout=3000) dubbo的注解