张贴在 2018

  • Dubbo的泛化调用

    Tuesday, August 14, 2018 在 功能演示

    以下几种场景可以考虑使用泛化调用: 服务测试平台 API 服务网关 泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,参数及返回值中的所有 POJO 均用 Map 表示。泛化调用对于服务端无需关注,按正常服务进行暴露即可。 下面来看看消费端如何使用泛化调用进行服务调用。 通过 Spring XML 配置进行泛化调用 在 Spring 配置申明 generic="true",如: …

    更多

  • Dubbo 优雅停机

    Tuesday, August 14, 2018 在 功能演示

    背景 对于任何一个线上应用,如何在服务更新部署过程中保证客户端无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求。理想条件下,在没有请求的时候再进行更新是最安全可靠的,然而互联网应用必须要保证可用性,因此在技术层面上优化应用更新流程来保证服务在更新时无损是必要的。 传统的解决方式是通过将应用更新流程划分为手工摘流量、停应用、更新重启三个步骤,由人工操作实现客户端无对更新感知。这种方式简单而有效,但是限制较多:不仅需要使用借助网关的支持来摘流量,还需要在停应用 …

    更多

  • Dubbo 基础用法 - Provider 配置

    Tuesday, August 14, 2018 在 功能演示

    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 在 功能演示

    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 在 功能演示

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

    更多

  • Dubbo的负载均衡

    Friday, August 10, 2018 在 功能演示

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

    更多

  • 在 Dubbo 中使用注解

    Tuesday, August 07, 2018 在 功能演示

    在 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 在 功能演示

    概述 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 在 功能演示

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

    更多

  • Dubbo 注解驱动

    Tuesday, August 07, 2018 在 功能演示

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

    更多