博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo
阅读量:6471 次
发布时间:2019-06-23

本文共 2417 字,大约阅读时间需要 8 分钟。

一、dubbo介绍

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。简单地说,dubbo是一个基于Spring的RPC(远程过程调用)框架,能够实现服务的远程调用、服务的治理

最主要就是服务之间的治理(治理基本上要做成运行时治理)

如果要用dubbo必须要用spring,非常大的前提

二、dubbo架构

调用关系说明:

1. 服务容器负责启动,加载,运行服务提供者。

2. 服务提供者在启动时,向注册中心注册自己提供的服务。

3. 服务消费者在启动时,向注册中心订阅自己所需的服务。

4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败, 再选另一台调用。

6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

总结:

生产者启动时把接口注册到注册中心,消费者启动时从注册中心获取生产者的接口列表放到本地,当有请求过来时,从消费者的本地获取生产者的接口列表选择一个生产者使用底层的调用协议(http、rmi、netty(dubbo))去调用,dubbo同时还能对服务进行监控

三、dubbo的官网入门使用demo

1. 服务提供者

1.1 定义服务接口DemoService.java

package com.alibaba.dubbo.demo;public interface DemoService {    String sayHello(String name);}

1.2 在服务提供方实现接口DemoServiceImpl.java

package com.alibaba.dubbo.demo.provider; import com.alibaba.dubbo.demo.DemoService; public class DemoServiceImpl implements DemoService {    public String sayHello(String name) {        return "Hello " + name;    }}

1.3 用Spring配置声明暴露服务provider.xml

1.4 加载Spring配置Provider.java

import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider {    public static void main(String[] args) throws Exception {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/provider.xml"});        context.start();        System.in.read(); // 按任意键退出    }}

2. 服务消费者

2.1 通过Spring配置引用远程服务consumer.xml

2.2 加载Spring配置,并调用远程服务Consumer.java

import org.springframework.context.support.ClassPathXmlApplicationContext;import com.alibaba.dubbo.demo.DemoService; public class Consumer {    public static void main(String[] args) throws Exception {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/consumer.xml"});        context.start();        DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理        String hello = demoService.sayHello("world"); // 执行远程方法        System.out.println( hello ); // 显示调用结果    }}

3. 总结

3.1 该接口需单独打包,在服务提供方和消费方共享

3.2 对服务消费方隐藏实现
3.3 也可以使用IoC注入

 

 参考文章:

dubbo官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

转载地址:http://jocko.baihongyu.com/

你可能感兴趣的文章
插件编译 版本问题
查看>>
android中TextView的阴影设置
查看>>
core dump相关
查看>>
MySQL如何导出带日期格式的文件
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
[LintCode] Longest Substring Without Repeating Characters
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
iOS快速清除全部的消息推送
查看>>
java单例模式深度解析
查看>>
什么是堆、栈?
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>