框架设计|学习笔记

简介: 快速学习框架设计

开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:框架设计】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/624/detail/9477


框架设计

一、dubbo 原理

1.dubbo 原理-框架设计

image.png

上图解释了 dubbo 的整个框架设计分层结构

(1)business 是业务逻辑层,只有一层,第一行 service 服务层,对面向接口编程,写一个接口,写一个实现远程调用也只需要调接口的方法。对于用户编程来说,到这一层就结束了,剩下的都是 dubbo 的原理。

(2)rpc 层是完成远程过程调用的一层,分了很多种小层

①config 配置层,主要是来封装配置文件里边解析出来的信息,像 reference config,service config。也就是说每一个标签都有它对应的 config 来封装这个标签的信息。

②proxy 服务代理层,就是利用代理的方式,比如生成客户端的代理对象,服务端的代理对象,代理对象互相来调用方法。

③registry 是注册中心层,很多服务都要注册到注册中心。包括消费者要从注册中心订阅所需要的服务来调用。这一层就是完成注册中心的相关功能,比如服务的发现以及服务的注册。

④Cluster 是路由层,进行负载均衡。比如说 invokeer 调用者,要调用很多的服务,有可能同一个服务在五六台机器上都有,cluster 做负载均衡。

⑤Monica 监控层,每一次的调用信息等数据都会发给监控层,监控层收到数据以后以界面的方式展示出来,simple Monica 软件可以在界面上展示出所有的监控数据。

⑥Protocol 远程调用层,整个封装 rpc 调用,rpc 调用核心就是 invokeer、Protocol 和 importer,它们就可以完成一次远程调用。

(3)remoting 解决远程通信

①exchange 信息交换层,创建一个客户端,一个服务端,架起管道进行数据的互联互通,

②transport 传输层,传输数据是用 transport 来封装传输。

③Serialize 序列化层,就是在整个传输的过程中,数据要序列化出去。收到数据以后还要反序列化回来,对象才能获得数据。

(4)consumer,跟消费者相关的 API 在一边;provider 跟服务提供者有关的 API 在一边;凡是所有标注的绿色都是 double 的接口,蓝色都是实现,接口之间的继承关系实线是实现于接口的,所有的虚线箭头是启动时整个初始化的规律。红色是整个的调用逻辑,黑色的箭头是依赖顺序。

(5)这些层对应 double 的每一个分包,double 包里有 rpc 层、remoting 层、registry、monitor、config 等等

每一层大概都会有对应的一个分包,都是单项依赖,上层依赖下层。

2.double 原理-启动解析、加载配置信息

3.服务提供者是如何将服务暴露到注册中心的

4.服务消费者是如何引用远程服务的,

5.远程服务是如何调用执行的。

相关文章
|
5月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
4月前
|
人工智能 监控 BI
抖音电商 API 接口:开启抖音小店直播带货数据新洞察
在数字化电商浪潮中,抖音小店凭借直播带货迅速崛起。本文详解抖音电商 API 接口如何实现直播数据实时监控与深度分析,助力商家优化策略、提升转化,迈向数据驱动运营新时代。
529 29
|
3月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
395 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
2月前
|
监控 数据可视化 测试技术
16_LLM交互式调试:用Streamlit构建可视化工具
在大语言模型(LLM)的应用开发过程中,调试一直是一个复杂且具有挑战性的任务。传统的调试方法往往依赖于静态日志、断点调试和反复的命令行交互,这种方式在处理LLM这类黑盒模型时显得尤为低效。随着2025年LLM技术的普及和应用场景的多样化,开发人员迫切需要一种更加直观、高效的调试方式。
|
9月前
|
存储 安全 开发者
《探秘鸿蒙原生应用:分布式软总线如何开启跨设备协同新时代》
鸿蒙原生应用通过分布式软总线技术实现跨设备协同,带来便捷智能体验。该技术作为核心纽带,统一通信机制,整合多设备资源,支持自动发现连接、高效数据传输与设备抽象管理。实际应用场景涵盖多屏协同办公、智能家居控制及游戏跨设备对战等,极大提升生活与工作效率。尽管面临复杂环境稳定性及资源优化配置等挑战,未来分布式软总线将加速连接速度、强化安全性并优化资源管理,推动万物互联的智能生活发展。
519 0
|
4月前
|
存储 监控 安全
告别版本混乱!同步盘让团队协作不再成为噩梦
同步盘是一种支持多成员、跨设备实时文件同步的企业云存储产品。用户只需在电脑、手机等设备上安装同步盘客户端,所有指定资料便会自动上传至云端,且随时随地同步到任意终端,实现企业高效协同办公,减少了数据的传递和管理时间。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
《鸿蒙Next:让人工智能语音交互听懂每一种方言和口音》
鸿蒙Next系统通过丰富方言语音数据、优化语音识别模型、引入语音合成技术及用户反馈机制,大幅提升对不同方言和口音的识别能力。具体措施包括多渠道收集方言数据、建立动态数据库、采用深度学习算法、实现多任务学习与对抗训练、生成标准方言样本,并结合硬件如麦克风阵列技术优化语音输入质量。这些综合手段确保了语音交互的准确性和实时性,为用户提供更智能、便捷的服务。
755 16
|
Java Apache PHP
Apache
Apache
413 5
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
231 4
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
273 2