撰写于 2018
  • Dubbo 现有心跳方案总结以及改进建议

    Sunday, August 19, 2018 在 功能演示

    1 前言 设计一个好的心跳机制并不是一件容易的事,就我所熟知的几个 RPC 框架,它们的心跳机制可以说大相径庭,这篇文章我将探讨一下如何设计一个优雅的心跳机制,主要从 Dubbo 的现有方案以及一个改进方案来做分析。 2 预备知识 因为后续我们将从源码层面来进行介绍,所以一些服务治理框架的细节还需要提前交代一下,方便大家理解。 2.1 客户端如何得知请求失败了? 高性能的 RPC 框架几乎都会选择使用 Netty 来作为通信层的组件,非阻塞式通信的高效不需要我做过多的介绍。但也由于非阻塞的特性, …

    更多

  • Dubbo2.7 三大新特性详解

    Wednesday, August 15, 2018 在 功能演示

    1 背景介绍 自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的 Incubator Dubbo。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache 的顶级项目。 2 分支介绍 Dubbo 目前有如图所示的 5 个分支, …

    更多

  • 通过QoS对服务进行动态控制

    Tuesday, August 14, 2018 在 功能演示

    QoS,全称为Quality of Service, 是常见于网络设备中的一个术语 ,例如在路由器中,可以通过Qos动态的调整和控制某些端口的权重,从而优先的保障运行在这些端口上的服务质量。 在Dubbo中,QoS这个概念被用于动态的对服务进行查询和控制。例如对获取当前提供和消费的所有服务,以及对服务进行动态的上下线,即从注册中心上进行注册和反注册操作。 QoS工作机制 从Dubbo 2.5.8开始,默认引入了Qos功能,默认处于启动状态。所有的QoS功能被抽象成一个个的命令,通过执行这些命 …

    更多

  • 从跨语言调用到dubbo2.js

    Tuesday, August 14, 2018 在 生态集成

    dubbo2.js 是 千米网 贡献给 dubbo 社区的一款 nodejs dubbo 客户端,它提供了 nodejs 对原生 dubbo 协议的支持,使得 nodejs 和 java 这两种异构语言的 rpc 调用变得便捷,高效。 微服务跨语言调用 微服务架构已成为目前互联网架构的趋势,关于微服务的讨论,几乎占据了各种技术大会的绝大多数版面。国内使用最多的服务治理框架非阿里开源的 dubbo 莫属,千米网也选择了 dubbo 作为微服务治理框架。另一方面,和大多数互联网公司一样,千米的开发 …

    更多

  • Spring Boot Dubbo应用启停源码分析

    Tuesday, August 14, 2018 在 功能演示

    背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发。同时也整合了 Spring Boot 特性: 自动装配 (比如: 注解驱动, 自动装配等). Production-Ready (比如: 安全, 健康检查, 外部化配置等). DubboConsumer启动分析 你有没有想过一个问题?dubbo-spring-boot-project中的DubboConsumerDemo应用就一行代码,main方法执行完之后,为什么不会直 …

    更多

  • 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 的请求后,开 …

    更多