您好、欢迎来到现金彩票网!
当前位置:星彩网 > 分布式存储器 >

如何快速开发一个Dubbo应用?

发布时间:2019-05-26 15:37 来源:未知 编辑:admin

  阿里妹导读:在分布式系统中,远程调用是最基础也是最重要的基石。历史上,曾经先后出现过 CORBA、RMI、EJB、WebService 等技术和规范,在服务化以及微服务日趋流行的今天,更多的被广泛使用的是包括 gRPC、Finagle、以及国内的 Dubbo 为代表的轻量级框架。

  由于这些框架多半与服务注册中心、配置中心等配套设施结合使用,用来作为系统分布式服务化的场景,因此这类框架又被统称为服务框架。本文将以 Dubbo 为例,介绍如何快速开发一个 Dubbo 应用。

  同时,阿里妹也要告诉上海朋友一个好消息:6月23号下午(周六),Dubbo 团队将会在上海举办开发者沙龙,详细信息、活动报名,点击 Dubbo开发者沙龙(上海站) 了解。

  本文将以 Dubbo 为例,介绍如何快速开发一个 Dubbo 应用 。为了便于读者理解:

  Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Procedure Call)的完善,用户无需依靠 IDL 的帮助来完成分布式调用,而是通过依赖接口这种更简单自然的方式。

  Java RMI 是 Java 领域创建分布式应用的技术基石。后续的 EJB 技术,以及现代的分布式服务框架,其中的基本理念依旧是 Java RMI 的延续。在 RMI 调用中,有以下几个核心的概念:

  对于第一点,客户端需要依赖接口,而服务端需要提供该接口的实现。对于第二点,在 J2SE 1.5 版本之前需要通过 rmic 预先编译好客户端的 Stub 对象和服务端的 Skeleton 对象。在之后的版本中,不再需要事先生成 Stub 和 Skeleton 对象。

  通过 UnicastRemoteObject.exportObject 生成可以与服务端通讯的 Stub 对象;

  创建一个本地的 RMI 注册服务,监听端口为 1099。该注册服务运行在服务端,也可以单独启动一个注册服务的进程;

  将 Stub 对象绑定到注册服务上,这样,客户端可以通过 Hello 这个名字查找到该远程对象。

  理解 RMI 的工作原理和基本概念,对掌握现代分布式服务框架很有帮助,建议进一步的阅读 RMI 官方教材 [1]。

  现代的分布式服务框架的基本概念与 RMI 是类似的,同样是使用 Java 的 Interface 作为服务契约,通过注册中心来完成服务的注册和发现,远程通讯的细节也是通过代理类来屏蔽。具体来说,Dubbo 在工作时有以下四个角色参与:

  服务提供者:启动时在指定端口上暴露服务,并将服务地址和端口注册到注册中心上。

  服务消费者:启动时向注册中心订阅自己感兴趣的服务,以便获得服务提供方的地址列表。

  注册中心 :负责服务的注册和发现,负责保存服务提供方上报的地址信息,并向服务消费方推送。

  监控中心:负责收集服务提供方和消费方的运行状态,比如服务调用次数、延迟等,用于监控。

  Dubbo 的应用一般都是通过 Spring 来组装的。为了快速获得一个可以工作的 Dubbo 应用,这里的示例摒弃了复杂的配置,而改用面向 Dubbo API 的方式来构建服务提供者和消费者,另外,注册中心和监控中心在本示例中也不需要安装和配置。

  在生产环境,Dubbo 的服务需要一个分布式的服务注册中心与之配合,比如,ZooKeeper。为了方便开发,Dubbo 提供了直连[2]以及组播[3]两种方式,从而避免额外搭建注册中心的工作。在本例中,将使用组播的方式来完成服务的注册和发现。

  在完整的示例中,由于配置了 exec-maven-plugin,可以很方便的在命令行下通过 maven 的方式执行。当然,您也可以在 IDE 里直接执行,但是需要注意的是,由于使用了组播的方式来发现服务,运行时需要指定:

  当看到 BUILD SUCCESS 的时候表明构建完成,下面就可以开始进入运行阶段了。

  Dubbo 还提供了一个公共服务快速搭建基于 Spring Boot 的 Dubbo 应用。访问 并按照下图所示来生成示例工程:

  在本例中展示的是服务提供者,同样的,通过在生成界面选取 client 来生成对应的服务消费者。

  用 IDE 打开生成好的工程,可以发现应用是一个典型的 Spring Boot 应用。程序的入口如下所示:

  生成工程的时候如果选择了激活 qos 的话,就可以通过 telnet 或者 nc 来管理服务、查看服务状态。

  在本文中,从 RMI 开始,介绍了 Java 领域分布式调用的基本概念,也就是基于接口编程、通过代理将远程调用伪装成本地、通过注册中心完成服务的注册和发现。

  然后为了简单起见,使用简单的组播注册方式和直接面向 Dubbo API 编程的方式介绍了如何开发一个 Dubbo 的完整应用。深入的了解 ServiceConfig 和 ReferenceConfig 的用法,对于进一步的使用 Spring XML 配置、乃至 Spring Boot 的编程方式有这很大的帮助。

  此外,6月23号下午(周六),Dubbo 团队将会在上海浦东新区纳贤路800号张江国际创新港 一楼(国际路演厅)举办开发者沙龙,为大家带来产品路线图、云原生、服务注册配置、以及案例分析等内容,与上海的 Dubbo 开发者们进行近距离互动和交流。

http://emeklishop.net/fenbushicunchuqi/397.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有