Dubbo
Dubbo 是Java RPC 框架
默认端口20880
远程过程方法调用
高性能的RPC框架,解决分布式中的调用问题
最关键、最耗时的两个方面:序列化 网络通信
提供三大核心能力:面向接口的远程方法调用;智能容错和负载均衡;服务自动注册和发现
Container(容器)
Provider(提供者)
Registry(注册中心)
Consumer(消费者)
Monitor(监控中心)dubbo-admin(需要导入jar) 不用去自己设置
1、Container 提供容器给Provider
2、Consumer 到Registry 订阅服务
3、Registry 把服务地址给Consumer
4、Consumer 通过地址去Provider 调用服务
5、Consumer调用服务 和Provider提提供服务时 Monitor会监控
Dubbo直连(在没有注册中心的情况下使用Dubbo)
一、Dubbo直连(没有注册中心)范例1(服务打包到本地仓库)
1、服务提供者
1)创建一个maven web工程:服务的提供者
2)添加依赖
<?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.qifengle</groupId>
<artifactId>Dubbo</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- <packaging>war</packaging>-->
<dependencies>
<!-- Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- dubbo依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- jdk1.8编译插件-->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
3)创建一个实体
package com.qifengle.dubbo.model;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String username;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
4)提供一个服务接口
package com.qifengle.dubbo.service;
import com.qifengle.dubbo.model.User;
import org.springframework.stereotype.Service;
@Service
public interface UserService {
//根据用户标识获取用户信息
User queryUserById(Integer id);
}
5)服务接口的实现类
package com.qifengle.dubbo.service.impl;
import com.qifengle.dubbo.model.User;
import com.qifengle.dubbo.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public User queryUserById(Integer id) {
User user = new User();
user.setId(id);
user.setUsername("hexialiang");
user.setAge(22);
return user;
}
}
6)配置dubbo服务提供者的核心配置文件
a、声明dubbo服务提供者的名称:保证唯一
<dubbo:application
name="Dubbo01-link-userservice-provider">
</dubbo:application>
b、声明dubbo使用的协议和端口号
<dubbo:protocol name="dubbo" port="20880"/>
c、暴露服务,使用直连方式
registry:如果不使用注册中心,则值为N/A
<dubbo:service
interface="com.qifengle.dubbo.service.UserService"
ref="userService"
registry="N/A">
</