1.Dubbo简介
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
2.zookeeper启动
由于做dubbo教程,所以直接在windows上启动zookeeper.
点击Download
进入下载详情页
2.2解压 启动zookeeper
*进入 zookeeper-3.4.5\zookeeper-3.4.5\conf
*复制zoo_sample.cfg 重命名为zoo.cfg
*进入zookeeper-3.4.5\zookeeper-3.4.5\bin
*先启动zkServer.cmd 再启动zkCli.cmd
zookeeper服务
zookeeper客户端
3.dubbo服务
dubbo 服务 做教程 直接用java项目
3.1dubbo服务项目结构
3.2 student.xml
package com.dubbo.entity;
import java.io.Serializable;
public class Student implements Serializable{
//序列化
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Integer age;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
3.3 IDubboService.java
package com.dubbo.service;
import java.util.List;
import com.dubbo.entity.Student;
public interface IDubboService {
//学生信息集合
public List<Student> getStudentList();
}<span style="color:#ff0000;">
</span>
3.4DubboServiceImpl.java
package com.dubbo.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Component;
import com.dubbo.entity.Student;
@Component("dubboServiceImpl")
public class DubboServiceImpl implements IDubboService {
@Override
public List<Student> getStudentList() {
List<Student> studentList = new ArrayList<Student>();
Student student = new Student();
student.setId(1);
student.setName("你是谁");
student.setAge(5);
student.setSex("男");
Student student1 = new Student();
student1.setId(2);
student1.setName("我是谁");
student1.setAge(15);
student1.setSex("女");
studentList.add(student);
studentList.add(student1);
return studentList;
}
}
3.5-dubbo.properties
dubbo.application.name=dubbo_server
dubbo.registry.address=127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.own.version=0.0.1
3.6-log4j.properties
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
3.7provider_registry.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://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dubbo_demo_provider" />
<!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />
<!-- 声明需要暴露的服务接口 服务 服务 服务 -->
<dubbo:service interface="com.dubbo.service.IDubboService"
ref="dubboServiceImpl" version="${dubbo.own.version}" />
</beans>
3.8-spring.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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:property-placeholder location="classpath*:*.properties" />
<context:component-scan base-package="com.dubbo.service" />
<context:annotation-config />
<import resource="classpath*:/provider_registry.xml"></import>
</beans>
3.9-DubboTest.java
package com.dubbo.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DubboTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
applicationContext.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
}
}
3.10-启动DubboTest.java
查看zookeeper注册中心 注册成功
项目结构
4.1
4.2-log4j.properties
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
4.3applicationContext.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://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="dubbo_consumer" />
<!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService 消费 消费 消费 -->
<dubbo:reference id="dubboService"
interface="com.dubbo.service.IDubboService" version="0.0.1" check="false" timeout="1000"/>
</beans>
4.4IDubboService.java
package com.dubbo.service;
import java.util.List;
import com.dubbo.entity.Student;
public interface IDubboService {
public List<Student> getStudentList();
}
4.5Student.java
package com.dubbo.entity;
import java.io.Serializable;
public class Student implements Serializable{
//序列化
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Integer age;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
4.6-DubboControllerTest.java
package com.dubbo.controller;
import java.io.IOException;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dubbo.entity.Student;
import com.dubbo.service.IDubboService;
public class DubboControllerTest {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.start();
IDubboService bean = (IDubboService) context.getBean("dubboService");
List<Student> studentList = bean.getStudentList();
for (Student student : studentList) {
System.out.println(student);
}
System.in.read();
}
}
4.7-启动 DubboControllerTest.java
输出