• 什么是Dubbo?

    • Dubbo能做什么?
  • 在Crystal框架下,如何开发基于Dubbo RPC的服务?
  • 在Crystal框架下,如何调用Dubbo RPC服务?
  • 相关的文章

什么是Dubbo?

Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

其核心部分包含:

  • 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  • 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  • 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

Dubbo能做什么?

  • 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  • 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

想了解跟多关于Dubbo的信息,请查看:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm

在Crystal框架下,如何开发基于Dubbo RPC的服务?

第一步:定义接口

  1. 创建接口Jar项目,如:test-dubbo-service-api;
  2. 创建接口类和接口方法,和通常的接口定义没有什么区别,如:

    public interface TestService {
    /**
    *
    * @param a
    * @return
    */
    public String test(String a);
    }

第二步:实现并发布服务

  1. 创建服务实现项目,如:test-dubbo-service-impl;
  2. 引入接口项目(test-dubbo-service-api)、Crystal框架dubbo服务支持包(crystal-remote-server-dubbo),如:

    <dependency>
    <groupId>com.gsoft.test</groupId>
    <artifactId>test-dubbo-service-api</artifactId>
    </dependency>
    <dependency>
    <groupId>com.gsoft.crystal</groupId>
    <artifactId>crystal-remote-server-dubbo</artifactId>
    </dependency>
  3. 实现服务接口,如:

    @Service
    public class TestServiceImpl implements TestService {
    @Value("${crystal.application.name}")
    private String name;
    /*
    * (non-Javadoc)
    *
    * @see com.gsoft.test.dubbo.TestService#test(java.lang.String)
    */
    @Override
    public String test(String a) {
    return "Hello, " + a + "! " + " I'm " + name + " " + System.getenv("LOGONSERVER") + ".";
    }
    }
  4. 在实现类上添加注解@Service,此处Service为dubbo服务的声明注解com.alibaba.dubbo.config.annotation.Service,到此,基于Dubbo发布的服务已经开发并发布完成。

    Icon

    Crystal框架封装并提供了Dubbo的默认配置,因此开发Dubbo服务非常简单。 当需要调整配置时,可根据Crystal框架参数加载顺序,采用项目中profile/config.properties文件中参数,调整配置,如下:
    
    crystal.application.name = crystal_framework
    
    crystal.application.owner = Crystal
    
    dubbo.registry.address = zookeeper://127.0.0.1:2181
    
    dubbo.protocol.port = 20880

在Crystal框架下,如何调用Dubbo RPC服务?

第一步:项目中引用Dubbo服务接口包和Crystal框架dubbo客户端支持包(crystal-remote-client-dubbo),如

<dependency>
<groupId>com.gsoft.test</groupId>
<artifactId>test-dubbo-service-api</artifactId>
</dependency>
<dependency>
<groupId>com.gsoft.crystal</groupId>
<artifactId>crystal-remote-client-dubbo</artifactId>
</dependency>

第二步:在需要使用Dubbo RPC服务的类中,添加服务的引用,并添加@Reference注解:(此处Reference为dubbo服务的声明注解com.alibaba.dubbo.config.annotation.Reference

public class TestCostumer {
@Reference
private TestService s;
private int i = 0;
@Value("${crystal.application.name}")
private String name;
public void hello() {
System.out.println(s.test(name + " " + System.getenv("LOGONSERVER") + "-" + ++i));
}
}
Crystal框架封装并提供了Dubbo的默认配置,因此开发Dubbo服务非常简单。 当需要调整配置时,可根据Crystal框架参数加载顺序,采用项目中profile/config.properties文件中参数,调整配置,如下:

crystal.application.name = crystal_framework

crystal.application.owner = Crystal

dubbo.registry.address = zookeeper://127.0.0.1:2181

如何开发基于Dubbo RPC的分布式服务?的更多相关文章

  1. 基于Dubbo框架构建分布式服务(一)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  2. 基于Dubbo框架构建分布式服务

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  3. [转载] 基于Dubbo框架构建分布式服务

    转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务 ...

  4. 基于Dubbo框架构建分布式服务(集群容错&负载均衡)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  5. 基于Dubbo框架构建分布式服务(二)

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> ...

  6. 基于Dubbo框架构建分布式服务(三)

    我们将上面开发的服务提供方服务,部署到2个独立的节点上(192.168.14.1和10.10.4.125),然后可以通过Dubbo管理中心查看对应服务的状况,如图所示: 上图中可以看出,该服务有两个独 ...

  7. 微服务痛点-基于Dubbo + Seata的分布式事务(AT)模式

    前言 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案. ...

  8. 微服务痛点-基于Dubbo + Seata的分布式事务(TCC模式)

    前言 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案. ...

  9. Dubbo 是一个分布式服务框架

    Dubbo 是一个分布式服务框架-----http://www.cnblogs.com/chanshuyi/p/5144288.html

随机推荐

  1. vmware中的bridge、nat、host-only的区别

    概述: VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模 ...

  2. Android学习笔记之Broadcast Receiver

    可程序间通信 注册通信,注销通信,发送消息 package com.jiahemeikang.helloandroid; import com.jiahemikang.service.EchoServ ...

  3. 【poj解题】1308

    判断一个图是否是一个树,树满足一下2个条件即可:1. 边树比node数少12. 所有node的入度非0即1 节点数是0的时候,空树,合法树~ 代码如下 #include <stdio.h> ...

  4. ActiveMQ讯息传送机制以及ACK机制

    http://blog.csdn.net/lulongzhou_llz/article/details/42270113 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息 ...

  5. php中print_r 和var_dump 打印变量的区别。

    <?php $arr = array(true); var_dump($arr); echo "<br/>"; print_r($arr); 结果如下: 说明 p ...

  6. git使用系列(一)

    git commit 的时候出现了问题: change not staged for commit. no changes added to commit(use "git add" ...

  7. Go Runtime hashmap实现

    努力学习go中,看到skoo博客内容很不错, 所以转载学习下 前两天有小伙伴问道是否看过 Go 语言 map 的实现,当时还真没看过,于是就花了一点时间看了一遍 runtime 源码中的 hashma ...

  8. jquery.validate.js 一个jQuery验证格式控件

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  9. iOS开发——获取手机当前WiFi名和MAC地址

    获取手机WiFi信息. iOS9以前的方法,还是能用,警告就警告吧!iOS9以后使用的是苹果最新的API框架,NetworkExtension/NEHotspotHelper.h,这个框架,第一次开放 ...

  10. Android SDK开发包国内下载地址(转)

    想了解Android 应用开发,但可恨开发环境安装就困难重重,这里找到一个国内下载地址,特转来记录 Android SDK开发包国内下载地址