Only老K说-一文了解dubbo2.7(2020最新)

许久未见各位神仙,小编也是许久都没有写代码过了。。。很多都不熟悉了,所以花了时间为各位写了这篇dubbo来表达我的歉意

dubbo入门

  • dubbo简介
  • dubbo环境搭建
    • Zookeeper安装(注册中心)
    • (监控中心admin)前提zookeeper需要是启动的
  • 环境搭建
    • 数据监控
    • 后续还有dubbo整合SpringBoot不要错过哦

dubbo简介

Apache Dubbo是一款高性能的java RPC框架,其前身是阿里巴巴公司开源的一个高性能、轻量级的开源java RPC框架,可以和Spring框架无缝集成。

RPC全称:自己去搜索下...意思即使远程过程调用。
(比如两个服务器A和B,A服务器上面部署了一个应用,B服务器上部署了一个应用,A服务器上面的应用想调用B服务器上面的应用提高的方法,由于两个应用不在同一个内存空间,不能直接调用,所以就需要通过网络来表达调用的语义和传达调用的数据)
RPC并不是一个具体的技术,而是整个网络远程调用过程

提供Dubbo中文文档地址

dubbo环境搭建

贴一张Dubbo架构图片,后期也是以这个架构进行扩展
Only老K说-一文了解dubbo2.7(2020最新)_第1张图片

Registry:服务的注册中心(类似与SpringCloud里面的Eureka)
Provider:服务提供方
Consumer:服务消费端
Monitor:监控平台
虚线代表:异步操作
实现代表:同步操作
蓝色代表:在启动时候完成的操作
红色代表:在程序运行过程中的操作

Zookeeper安装(注册中心)

Zookeeper结构:
Only老K说-一文了解dubbo2.7(2020最新)_第2张图片
提高Zookeeper下载地址
下载3.4版本(3.5版本的很多都是内测的,暂时不稳定) 随意就好
下载后解压…
进入bin目录下面进入cmd窗口,运行zkServer.cmd文件
第一次启动bin目录下面的zkServer.cmd会报错(大概意思就是配置文件找不到)
Only老K说-一文了解dubbo2.7(2020最新)_第3张图片
解决方案。将conf目录下的zoo_sample.cfg复制一个改成zoo.cfg
Only老K说-一文了解dubbo2.7(2020最新)_第4张图片

简单说下配置文件里面的内容zoo.cfg
clientPort:端口号默认2181
dataDir:临时数据的存放地方  自己创建个文件夹来存放 ../data

搞定之后重新启动zkServer.cmd没有问题了
Only老K说-一文了解dubbo2.7(2020最新)_第5张图片
测试一下使用zkClient.cmd
Only老K说-一文了解dubbo2.7(2020最新)_第6张图片

(监控中心admin)前提zookeeper需要是启动的

进入到Dubbo的gitHub里面
Only老K说-一文了解dubbo2.7(2020最新)_第7张图片
Only老K说-一文了解dubbo2.7(2020最新)_第8张图片
Only老K说-一文了解dubbo2.7(2020最新)_第9张图片

下载好之后解压 查看自己的配置文件端口号是不是正确的2181

小编是安装在D盘的:每个人安装不同路径不同
D:\Zookeeper\dubbo-admin-develop\dubbo-admin-server\src\main\resources
找到里面的application.properties查看里面的端口号是不是2181

Only老K说-一文了解dubbo2.7(2020最新)_第10张图片
然后根据个人情况是否使用端口号8080了,如果是的话就改成8081(默认是8080)
Only老K说-一文了解dubbo2.7(2020最新)_第11张图片
然后开始打包

进入到D:\Zookeeper\dubbo-admin-develop的cmd页面输入mvn clean package

等待时间是非常漫长的,然后中途会有什么WANING,ERROR这些都不用管,只要结果是下面这个SUCCESS就完事了
Only老K说-一文了解dubbo2.7(2020最新)_第12张图片
然后在D:\Zookeeper\dubbo-admin-develop\dubbo-admin-distribution\target里面有一个jar包
Only老K说-一文了解dubbo2.7(2020最新)_第13张图片
然后自己找个地方运行这个jar包在运行这个jar包之前要保证zookeeper是在运行的
图方便直接在之前的地方运行就好了…
Only老K说-一文了解dubbo2.7(2020最新)_第14张图片
输入地址测试。。。账号和密码默认都是root
Only老K说-一文了解dubbo2.7(2020最新)_第15张图片

环境搭建

创建三个Maven项目以及做到数据向上抽取
Only老K说-一文了解dubbo2.7(2020最新)_第16张图片

向上抽取方法:
大概就是procider和consumer中的公共部分放入到common里面。并且在两个子项目中写入common的引入

<dependencies>
  	<dependency>
  		<groupId>com.onlyKing</groupId>
  		<artifactId>user-service-common</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  </dependencies>

提供代码:链接:https://pan.baidu.com/s/1hdCV2NOwQILlrblYongzyA
提取码:q7p0

---------------------我是分割线哦,上面的是没有Dubbo之前的哦-----------------------------
开始导入Dubbo(都是按照dubbo文档去一步步操作) 去Maven仓库中找到相关依赖

先写user-service-provider

<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>
小提示:2.6版本之前是使用zkclient操作zookeeper
       2.6版本之后是使用curator操作zookeeper
这里小编提供2.6之后的
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
</dependency>

再编写相关配置文件
Only老K说-一文了解dubbo2.7(2020最新)_第17张图片
provide.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 1.指定当前的服务/当前应用的名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="user-service-provider"></dubbo:application>
<!-- 2.指定注册中心的位置 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!-- 3.指定通信规则(大概就是消费端需要怎么来访问这个生产端这个意思) -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 4.暴露服务 interface服务的接口 ref服务的真正实现-->
<dubbo:service interface="com.onlyk.service.UserService" ref="userServiceImpl"></dubbo:service>
<!-- 服务的实现 -->
<bean id="userServiceImpl" class="com.onlyk.service.impl.UserServiceImpl"></bean>
</beans>

MainApplication.java

package com.onlyk.service.impl;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApplication {
	 public static void main(String[] args) throws Exception {
	        System.setProperty("java.net.preferIPv4Stack", "true");
	        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"provider.xml"});
	        context.start();
	        System.out.println("Provider started.");
	        System.in.read(); // press any key to exit
	    }
}

运行后监控平台看结果…

再来user-service-consumer
步骤相同就不多说…
Only老K说-一文了解dubbo2.7(2020最新)_第18张图片
consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
		<!-- 包扫描 -->
<context:component-scan base-package="com.onlyk.service.impl"></context:component-scan>

<dubbo:application name="user-service-consumer"></dubbo:application>

<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!-- 声明需要调用的远程服务的接口,生成远程服务代理 -->
<dubbo:reference interface="com.onlyk.service.UserService" id="userService"></dubbo:reference>
</beans>

MainApplication.java

package com.onlyk;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.onlyk.service.OrderService;

public class MainApplication {
 public static void main(String[] args) {
	ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
	OrderService orderService = applicationContext.getBean(OrderService.class);
	orderService.initOrder("1");
}
}

Only老K说-一文了解dubbo2.7(2020最新)_第19张图片
提供代码:链接:https://pan.baidu.com/s/1jat_U6iyEH2tqylCeNJknA
提取码:bsr8

数据监控

在数据生产端和消费端加入如下代码:

<dubbo:monitor protocol="registry"></dubbo:monitor>
大概意思就是有点类似与Eureka一样,把自己的一些数据什么的交给监控平台来管理

嗯,这里懒得重新发一次代码了,加进去就好了

启动provide中的main
Only老K说-一文了解dubbo2.7(2020最新)_第20张图片
启动comsumer中的main方法
Only老K说-一文了解dubbo2.7(2020最新)_第21张图片

后续还有dubbo整合SpringBoot不要错过哦

了解Dubbo续集----Dubbo与SpringBoot整合

你可能感兴趣的:(分布式,老K有话说)