Tuesday, August 14, 2018 在 功能演示
QoS,全称为Quality of Service, 是常见于网络设备中的一个术语 ,例如在路由器中,可以通过Qos动态的调整和控制某些端口的权重,从而优先的保障运行在这些端口上的服务质量。 在Dubbo中,QoS这个概念被用于动态的对服务进行查询和控制。例如对获取当前提供和消费的所有服务,以及对服务进行动态的上下线,即从注册中心上进行注册和反注册操作。 QoS工作机制 从Dubbo 2.5.8开始,默认引入了Qos功能,默认处于启动状态。所有的QoS功能被抽象成一个个的命令,通过执行这些命 …
Tuesday, August 14, 2018 在 功能演示
背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发。同时也整合了 Spring Boot 特性: 自动装配 (比如: 注解驱动, 自动装配等). Production-Ready (比如: 安全, 健康检查, 外部化配置等). DubboConsumer启动分析 你有没有想过一个问题?dubbo-spring-boot-project中的DubboConsumerDemo应用就一行代码,main方法执行完之后,为什么不会直 …
Tuesday, August 14, 2018 在 功能演示
以下几种场景可以考虑使用泛化调用: 服务测试平台 API 服务网关 泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,参数及返回值中的所有 POJO 均用 Map 表示。泛化调用对于服务端无需关注,按正常服务进行暴露即可。 下面来看看消费端如何使用泛化调用进行服务调用。 通过 Spring XML 配置进行泛化调用 在 Spring 配置申明 generic="true",如: …
Tuesday, August 14, 2018 在 功能演示
背景 对于任何一个线上应用,如何在服务更新部署过程中保证客户端无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求。理想条件下,在没有请求的时候再进行更新是最安全可靠的,然而互联网应用必须要保证可用性,因此在技术层面上优化应用更新流程来保证服务在更新时无损是必要的。 传统的解决方式是通过将应用更新流程划分为手工摘流量、停应用、更新重启三个步骤,由人工操作实现客户端无对更新感知。这种方式简单而有效,但是限制较多:不仅需要使用借助网关的支持来摘流量,还需要在停应用 …
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调用方 …
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" …
Tuesday, August 14, 2018 在 功能演示
我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制;基于这种机制,Dubbo 实现了以下几种调用方式: 同步调用 异步调用 参数回调 事件通知 同步调用 同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止; 通常,一个典型的同步调用过程如下: Consumer 业务线程调用远程接口,向 Provider 发送请求,同时当前线程处于阻塞状态; Provider 接到 Consumer 的请求后,开 …
Friday, August 10, 2018 在 功能演示
背景 Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例。如何从多个服务 Provider 组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略。 几个概念 在讨论负载均衡之前,我想先解释一下这3个概念。 负载均衡 集群容错 服务路由 这3个概念容易混淆。他们都描述了怎么从多个 Provider 中选择一个来进行调用。那他们到底有什么区别呢?下面我来举一个简单的例子,把这几个概念阐述清楚吧。 有一个Dubbo的用户服务,在北京部署了10个,在上海 …
Tuesday, August 07, 2018 在 功能演示
在 Dubbo 中使用注解 随着微服务架构的广泛地推广和实施。在 Java 生态系统中,以 Spring Boot 和 Spring Cloud 为代表的微服务框架,引入了全新的编程模型,包括: 注解驱动(Annotation-Driven) 外部化配置(External Configuration) 以及自动装配(Auto-Configure) 新的编程模型无需 XML 配置、简化部署、提升开发效率。为了更好地实践微服务架构,Dubbo 从 2.5.8 版本开始, 分别针对了上述的三个场景,提 …
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 …