Dubbo的入门 Springcloud和Dubbo的比较

Dubbo是在Springcloud的基础上继续开发完成的。

SpringcloudDubbo
是基于RestFul风格的微服务技术是基于RPC(远程过程调用协议)的微服务技术
是通过Eureka,服务注册中心      通过ZooKeep
有时候需要启动虚拟机一般要用到Linux系统
直接运行启动

第一步先在Linux系统启动zookeeper。

第二步启动tomcat。

Springcloud默认没有自己的界面。但Eureka插件有网页界面。Dubbo默认有自己的页面,注册
中心。Zookeeper默认没有自己的
页面
 

第一个Dubbo项目

此项目是Linux虚拟机和IDEA联合完成的。

 第一步:导入包

<?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:context="http://www.springframework.org/schema/context"
       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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!--对Dubbo进行配置-->

    <!-- 1.给当前项目起个别名 -->
    <dubbo:application name="wangxuanbo" />
    <!-- 2.把当前Dubbo中服务名。注册到Zookeeper中 -->
    <dubbo:registry address="zookeeper://192.168.0.120:2181" />
    <!-- 3.给Dubbo程序,分配一个端口号 指的的某个端口网站-->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 4.关联定义的好的接口 -->
    <dubbo:service interface="com.dobbo.service.DubboService" ref="demoService" />
    <!-- 5.关联接口的实现类 -->
    <bean id="demoService" class="com.dobbo.service.Impl.DubboImpl" />
</beans>

第二步:写启动类、接口,接口实现类(现在的接口和实现类都还是伪代码,以后会往里面补充)

 此处的启动类和Springcloud启动类不同需要注意

package com.dobbo;

import com.alibaba.dubbo.container.Main;

//启动类
public class Start {
    public static void main(String[] args) {
        Main.main(args);
    }
}
package com.dobbo.service;
//提供者项目测试接口
public interface DubboService {
    public void insertInfo();
    public void deleteInfo();
    public void updateInfo();
    public void selectInfo();
}
package com.dobbo.service.Impl;

import com.dobbo.service.DubboService;

public class DubboImpl implements DubboService {
    @Override
    public void insertInfo() {

    }

    @Override
    public void deleteInfo() {

    }

    @Override
    public void updateInfo() {

    }

    @Override
    public void selectInfo() {

    }
}

第三步:和虚拟机进行关联  

先补充虚拟机中的文件

1、将zookeeper-3.4.8.jar包放入/usr/local中

 2、 在zookeeper中新建data文件夹,做为zookeeper数据存储文件夹。

 3、复制zoo_sample.cfg,并给新起名的zoo.cfg

 4、在zoo.cfg中改变dataDir中的值                dataDir=/usr/local/zookeeper/data

5、启动效果:

 6、打开tomcat文件在里面导入

 7、点击bin启动命令行 ./startup.sh & tailf ../logs/catalina.out

8、在etc/sysconfig/iptables里面添加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20880 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

这是表示开启这两个端口服务。

最后的结果:

以上是提供者


下面来编写消费者项目
1.先创建一个Web版的Maven项目
2.导包
3.创建项目所需要的包+类+接口等
4.创建“消费者项目”的配置文件,
5.运行“提供者项目”,再运行“消费者项目”

 导包

<?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.Dubbo</groupId>
  <artifactId>Dubbo-consumer</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!-- 在以下位置引入Dubbo和Zookeeper相关坐标 -->
  <dependencies>
    <!-- Dubbo  -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.3</version>
      <!-- 删除Dubbo自带的Spring,避免与其它的SPring包冲突 -->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- Zookeeper(注册中心,相当于Springcloud中Eureka) -->
    <dependency>
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
    </dependency>

    <!-- 因为Dubbo自带的SPringJar包,版本过低,所以我们此处需要引入高版本的SPringJar包 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.6.RELEASE</version>
    </dependency>

    <!--关联提供者项目坐标依赖-->
    <dependency>
      <groupId>com.Dubbo</groupId>
      <artifactId>Dubbo-provider</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

  </dependencies>
  <build>
    <!-- 加载“资源文件夹(resources文件夹)中的配置文件” -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
    <!-- 配置tomcat插件,本质就是导个tomcat的jar包 -->
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>9092</port>
          <path>/Dubbo</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

扫包

 扫描实现类中的包

<?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:context="http://www.springframework.org/schema/context"
	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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
		
		<!-- 用此处名字找到提供者项目的微服务名 -->
		<dubbo:application name="wangxuanbo"/>
		<!-- 在Zookeeper找到已经添加号提供者项目 -->
		<dubbo:registry address="192.168.0.120:2181" protocol="zookeeper"></dubbo:registry>
		
		<dubbo:annotation package="com.consumer.biz.impl"/>


</beans>

扫描接口中的包

<?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:context="http://www.springframework.org/schema/context"
	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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

	<!-- 扫包 -->
	<context:component-scan base-package="com.consumer.biz.impl"/>

</beans>

加载驱动类的包

<?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: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/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<!-- 1.扫包 -->
	<context:component-scan base-package="com.consumer.action"/>
	<!-- 2.加载驱动 -->
	<mvc:annotation-driven/>
</beans>

消费者实现类必须要关联到提供者中的方法

package com.consumer.biz.impl;

import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.annotation.Service;
import com.consumer.biz.ConsumerService;
import com.dubbo.service.DubboService;
@Service
public class ConsumerImpl implements ConsumerService {

    //拿到提供者项目的接口对象
    @Reference //此处必须得用这个注解
    private DubboService service;
    @Override
    public void insertInfoConsumer() {
        service.insertInfo();
    }

    @Override
    public void deleteInfoConsumer() {
        service.deleteInfo();
    }

    @Override
    public void updateInfoConsumer() {
        service.updateInfo();
    }

    @Override
    public void selectInfoConsumer() {
        service.selectInfo();
    }
}

控制器                 跳转界面

package com.consumer.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.consumer.biz.ConsumerService;

/**
 * 控制层
 * @author Lenovo
 *
 */
@Controller
public class ConsumerController {

	
	//拿到业务逻辑层的接口对象
	@Autowired
	private ConsumerService cb;
	
	/**
	 * 查询方法
	 */
	@RequestMapping("showInfo")
	public String showInfo() {
		cb.insertInfoConsumer();
		cb.deleteInfoConsumer();
		cb.updateInfoConsumer();
		cb.selectInfoConsumer();
		return "index.jsp";
	}
	
}

web.xml                

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <!-- 加载Spring与Dubbo的配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:dubbo-*.xml</param-value>
  </context-param>
  <!-- 监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- SpringMVC前端控制器 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 字符编码过滤器 -->
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>ok.jsp</welcome-file>
  </welcome-file-list>
</web-app>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值