RSS

Posts in 2018

  • Dubbo 基础用法 - Provider 配置

    Tuesday, August 14, 2018 in 功能演示

    Dubbo基本用法 本章节主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。 按照功能角度进行划分,可以分为Dubbo Provider和Dubbo Consumer。接下来章节中,分别对dubbo provider和Dubbo consumer进行讲解。 Dubbo Provider配置 Provider 配置详解 配置Dubbo Provider有4种方式:XML配置,properties方式配置,API调用方 …

    更多

  • Dubbo 基本用法 - Dubbo Consumer 配置

    Tuesday, August 14, 2018 in 功能演示

    Dubbo Consumer配置 Consumer配置详解 配置Dubbo Consumer有3种方式:XML配置,API调用方式配置,注解方式配置。 XML配置 最简单的配置的样例: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" …

    更多

  • Dubbo 关于同步/异步调用的几种方式

    Tuesday, August 14, 2018 in 功能演示

    我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制;基于这种机制,Dubbo 实现了以下几种调用方式: 同步调用 异步调用 参数回调 事件通知 同步调用 同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止; 通常,一个典型的同步调用过程如下: Consumer 业务线程调用远程接口,向 Provider 发送请求,同时当前线程处于阻塞状态; Provider 接到 Consumer 的请求后,开 …

    更多

  • Dubbo的负载均衡

    Friday, August 10, 2018 in 功能演示

    背景 Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例。如何从多个服务 Provider 组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略。 几个概念 在讨论负载均衡之前,我想先解释一下这3个概念。 负载均衡 集群容错 服务路由 这3个概念容易混淆。他们都描述了怎么从多个 Provider 中选择一个来进行调用。那他们到底有什么区别呢?下面我来举一个简单的例子,把这几个概念阐述清楚吧。 有一个Dubbo的用户服务,在北京部署了10个,在上海 …

    更多

  • 在 Dubbo 中使用注解

    Tuesday, August 07, 2018 in 功能演示

    在 Dubbo 中使用注解 随着微服务架构的广泛地推广和实施。在 Java 生态系统中,以 Spring Boot 和 Spring Cloud 为代表的微服务框架,引入了全新的编程模型,包括: 注解驱动(Annotation-Driven) 外部化配置(External Configuration) 以及自动装配(Auto-Configure) 新的编程模型无需 XML 配置、简化部署、提升开发效率。为了更好地实践微服务架构,Dubbo 从 2.5.8 版本开始, 分别针对了上述的三个场景,提 …

    更多

  • 使用jdk17编译运行dubbo 2.7.14项目

    Tuesday, August 07, 2018 in 功能演示

    概述 java 17是java目前最新的长期支持(LTS)版本,但是由于其强封装 JDK 的内部 API的新特性,导致dubbo项目无法直接使用jdk17编译运行。通过参考openjdk的说明,可以发现只需要添加相应参数即可绕开java 17的限制 对于普通的dubbo项目,只需要在运行时添加 --add-opens java.base/java.lang=ALL-UNNAMED --add-opens …

    更多

  • 第一个 Dubbo 应用

    Tuesday, August 07, 2018 in 功能演示

    Java RMI 简介 Java RMI (Remote Method Invocation)- 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Procedure Call)的完善,用户无需依靠 IDL 的帮助来完成分布式调用,而是通过依赖接口这种更简单自然的方式。 Java RMI 工作原理 一个典型的 RMI 调用如下图所示: 服务端向 RMI 注册服务绑定自己的地址, 客户端通过 RMI 注册服务 …

    更多

  • Dubbo 注解驱动

    Tuesday, August 07, 2018 in 功能演示

    注解驱动(Annotation-Driven) @DubboComponentScan 起始版本: 2.5.7 <dubbo:annotation> 历史遗留问题 1. 注解支持不充分 在 Dubbo 2.5.7之前的版本 ,Dubbo 提供了两个核心注解 @Service 以及 @Reference,分别用于Dubbo 服务提供和 Dubbo 服务引用。 其中,@Service 作为 XML 元素 <dubbo:service>的替代注解,与 Spring …

    更多

  • Dubbo 2.7.x repackage 后的兼容实现方案

    Sunday, July 22, 2018 in 功能演示

    Dubbo至加入Apache孵化器以来,一个很强的诉求就是需要rename groupId和package name,这两项工作在项目毕业前需要完成。其中rename package相对来说复杂一些,除了要修改所有类的包名为org.apache.dubbo外,更多的是需要考虑如何老版本的兼容性。 常见的兼容性包括但不限于以下几种情况: 用户API 编程API Spring注解 扩展SPI 扩展Filter 2.7.x里就是通过增加了一个新的模块dubbo-compatible来解决以上兼容性问 …

    更多

  • Dubbo 上下文信息

    Thursday, July 12, 2018 in 功能演示

    简介 上下文信息是一次 RPC 调用过程中附带的环境信息,如方法名、参数类型、真实参数、本端/对端地址等。这些数据仅属于一次调用,作用于 Consumer 到 Provider 调用的整个流程。 提供上下文信息是 RPC 框架很重要的一个功能,使用上下文不仅可以为单次调用指定不同配置,还能在此基础上提供强大的上层功能,如分布式链路追踪。其实现原理就是在上下文中维护一个span_id,Consumer 和 Provider 通过传递span_id来连接一次RPC调用,分别上报日志后可以在追踪系统中 …

    更多