Featured image of post Java工程师 Apache Dubbo 2 Dubbo概念入门

Java工程师 Apache Dubbo 2 Dubbo概念入门

🌏Java工程师 Dubbo框架 🎯 这篇文章用于记录 对Dubbo框架的系统学习和实践

🎄Apache Dubbo概念入门

🍭概述

(1)Apache Dubbo是一款微服务开发框架 它帮助解决微服务开发中的通信问题 同时为构建企业微服务提供治理能力

(2)Dubbo不绑定开发语言 它的目标是为所有的主流语言提供对等的微服务开发体验

(3)Dubbo从架构图上分为数据面和控制面 :

在数据面,使用Dubbo开发的微服务进程间基于RPC协议通信 包括服务提供者和服务消费者

在控制面作为服务治理的抽象入口 由一系列可选的微服务治理组件构成 负责Dubbo集群的服务发现、流量管控策略、可视化检测等

(3)Dubbo用于解决阿里巴巴内部大规模微服务集群实践难题 当前已经被广泛应用于几乎所有的微服务实践中

(4)目前 阿里巴巴几乎所有的核心业务都跑在Dubbo3之上

🍭Dubbo提供了哪些核心能力?

(1)首先 Dubbo作为微服务治理框架 解决了业务应用中微服务定义暴露通信治理的问题 为业务开发定义了一套微服务编程范式

具体来说 Dubbo为业务应用提供了微服务开发API、PRC协议、服务治理三大核心能力 让开发者专注于实际的业务开发

(2)Dubbo不是应用编程框架的替代者 它可以很好地工作在每种语言的主流编程框架之上

例如:Dubbo可以很好地与Spring进行协作 并提供服务定义(IDL Interface)、编程模型(同步 异步 上下文)、服务发现(Nacos、Zookeeper)、负载均衡(随机、一致性hash)、流量管控(路由、动态配置)

(3)在通信方面 Dubbo区别于其他RPC框架的是它不绑定特定协议 我们可以在底层选用HTTP/2、TCP、gRPC、REST、Hession等任意的通信协议 同时享受统一的API、以及对等的服务治理能力

(4)Dubbo的另一个优势在于其可拓展性设计,从流量管控、协议编码、诊断调优、再到服务治理,我们都可以去拓展 这些可拓展性的优势可以满足企业微服务开发与运维的所有诉求

🍭四步构建企业级的Dubbo微服务

(1)使用官方脚手架快速创建项目模板 只需要选择依赖的版本、组件,点击“获取代码”

(2)将模板项目导入IDE开发环境&&定义Java接口作为Dubbo服务&&开发Dubbo服务端:实现接口并完成业务逻辑代码 通过一条简单的注解配置即可完成服务的发布 通过注解声明Dubbo服务 然后就可以发起远程调用了(至此 整个开发工作已经完成)

(3)部署应用(使用Kubernetes作为部署环境)

(4)流量管控 以一个线上环境的灰度隔离实例为例:

通过Dubbo流量管控机制 我们可以给每一个应用的一部分机器打上gray标签 对于入口为gray的流量 就可以通过控制确保它只在有gray标记的Dubbo实例内流转 从而实现全链路的逻辑隔离效果 这对于隔离多套开发环境线上灰度测试等场景都非常有用

(5)同区域调用场景

假设这里有两个应用做了多区域部署 紫色是杭州区域 蓝色是北京区域 部署在紫色区域的应用会优先调用访问同区域的应用 以此来降低访问延迟 蓝色区域部署的服务亦是如此

当应用在同区域部署的实例不可用时 调用会自动跨区域切换到其他可用区 以此来保证整体的可用性