🎄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)同区域调用场景
假设这里有两个应用做了多区域部署 紫色是杭州区域 蓝色是北京区域 部署在紫色区域的应用会
优先调用访问同区域的应用
以此来降低访问延迟 蓝色区域部署的服务亦是如此当应用在同区域部署的实例不可用时 调用会自动跨区域切换到其他可用区 以此来保证整体的可用性