框架设计|学习笔记

简介: 快速学习框架设计

开发者学堂课程【阿里巴巴分布式服务框架 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.远程服务是如何调用执行的。

相关文章
|
2月前
|
存储 XML 开发工具
探索安卓应用开发:从基础到进阶
在这篇文章中,我们将一起踏上安卓应用开发的旅程。不论你是编程新手还是希望提升技能的开发者,这里都有你需要的东西。我们会从最基础的概念开始,逐步深入到更复杂的主题。文章将涵盖开发环境设置、用户界面设计、数据处理以及性能优化等方面。通过理论与实践的结合,你将能够构建出既美观又高效的安卓应用。让我们一起开启这段技术之旅吧!
|
4月前
|
存储 XML 前端开发
探索Android应用开发:从基础到进阶
【8月更文挑战第57天】在这篇文章中,我们将深入探讨Android应用开发的奥秘。无论你是新手还是有经验的开发者,本文都将为你提供有价值的见解和技巧。我们将从基本的UI设计开始,逐步介绍数据存储、网络请求等高级主题,并展示一些实用的代码示例。让我们一起踏上这段激动人心的旅程吧!
|
5月前
|
监控 安全 测试技术
自动化测试框架设计:从理论到实践
【8月更文挑战第28天】在软件开发的快节奏世界中,自动化测试是保证产品质量和提升开发效率的关键。本文将引导读者深入理解自动化测试的理论,并展示如何将这些理论应用到实践中去。我们将一起探索构建一个高效、可维护的自动化测试框架所需的步骤,并通过实际代码示例来加深理解。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,帮助你在自动化测试的道路上更进一步。
|
5月前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
137 0
|
5月前
|
存储 API 数据库
深入浅出理解后端开发:从概念到实践
【8月更文挑战第31天】本文将带您走进后端开发的神秘世界,一步步解析后端开发的核心概念、技术栈选择、以及实际开发中的代码实践。我们将通过一个简易的待办事项列表API的开发过程,展示如何从零开始构建一个后端服务,包括数据库设计、RESTful API实现及部署流程。无论您是初学者还是希望深化理解,这篇文章都将为您提供清晰的指导和实用的知识。
|
8月前
|
存储 移动开发 前端开发
【Uniapp 专栏】Uniapp 架构设计与原理探究
【5月更文挑战第12天】Uniapp是一款用于跨平台移动应用开发的框架,以其高效性和灵活性脱颖而出。它基于HTML、CSS和Vue.js构建视图层,JavaScript处理逻辑层,管理数据层,实现统一编码并支持原生插件扩展。通过抽象平台特性,开发者能专注于业务逻辑,提高开发效率。尽管存在兼容性和复杂性挑战,但深入理解其架构设计与原理将助力开发者创建高质量的跨平台应用。随着技术进步,Uniapp将继续在移动开发领域扮演重要角色。
273 1
【Uniapp 专栏】Uniapp 架构设计与原理探究
|
7月前
|
算法 安全 Java
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
|
Web App开发 缓存 JSON
前端工程化_知识点精讲
常见脚手架 Source Map 推荐阅读指数 ⭐️⭐️⭐️⭐️ Webpack 打包过程 推荐阅读指数 ⭐️⭐️⭐️ 微前端 Webpack Loader vs Plugin 推荐阅读指数 ⭐️⭐️⭐️⭐️ Webpack 生命周期 Webpack编译阶段提效 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ Webpack打包阶段提效 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ Webpack 缓存优化 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️
148 0
|
自然语言处理 数据管理 Java
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
252 0
|
存储 安全 NoSQL
由浅入深理解SpringSecurityOauth2框架原理
由浅入深理解SpringSecurityOauth2框架原理
由浅入深理解SpringSecurityOauth2框架原理