剖析框架代码结构的系统方法(下)

当面对Dubbo、Spring Cloud、Mybatis等开源框架时,我们可以采用一定的系统性的方法来快速把握它们的代码结构。这些系统方法包括对架构演进过程、核心执行流程、基础架构组成和可扩展性设计等维度的讨论。


在上一讲中,我们已经讨论了架构演进过程和核心执行流程这两个系统方法,今天的内容将围绕基础架构组成和可扩展性设计这两个维度展开讨论。

基础架构组成与代码结构

正如任何一个框架都存在一个核心流程一样,任何一个框架也都有一个作为内核的基础架构。正如前面提到的以Dubbo为代表的RPC框架或以MyBatis为代表的ORM框架,可以认为前者的基础架构就是网络通信、序列化、传输协议等组件,而后续则包含数据库连接管理、SQL执行等基础架构组件。Dubbo和MyBatis等框架只不过是对这些组件在不同层次上的封装。而这些组件在技术发展的过程中并没有发生重大变化,所以我们只需要掌握它们的实现原理,就可以做到触类旁通。一旦遇到基于这些组件构建的开源框架,也就可以掌握对应的设计思路和方法。

那么,如何把基础架构与现实中的具体实现框架对应起来呢?接下来,我们同样也是以RPC架构为例展开讨论。

RPC基础架构

到现在为止,RPC架构已经足足存在和发展了40余年,最早是作为RFC 674草案在1974年发布的。RPC是一种非常基础的架构,诸如Dubbo等框架都是RPC架构的一种具体实现方式。在学习这些框架的代码结构时,我们可以基于RPC基础架构来逐步进行理解。在此之前,我们先来看一下RPC基础架构的组成。

RPC基础架构包括一个服务器端组件和一个客户端组件,如下图所示。


从上图中,我们发现RPC基础架构呈现一种非常对称的结构,其中,可以看到客户端组件与职责包括如下图所示。


而对应的,服务端组件与职责则包括如下图所示。


RPC基础架构的特点在于概念和语义清晰明确,过程调用简洁且提供通用的通信机制和可扩展的序列化方式。

<

相关推荐

  1. 微前端框架主流方案剖析

    2024-06-17 13:52:05       33 阅读
  2. pytorch框架逻辑回归代码解读

    2024-06-17 13:52:05       36 阅读
  3. WPF 结合 MVVM模式SqlSugar ORM框架使用

    2024-06-17 13:52:05       49 阅读
  4. Linux系统修改MySQL用户权限方法

    2024-06-17 13:52:05       55 阅读
  5. 获取字典树形结构框架代码

    2024-06-17 13:52:05       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 13:52:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 13:52:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 13:52:05       87 阅读
  4. Python语言-面向对象

    2024-06-17 13:52:05       96 阅读

热门阅读

  1. UVa1516/LA5906 Smoking gun

    2024-06-17 13:52:05       34 阅读
  2. tf-idf算法

    2024-06-17 13:52:05       29 阅读
  3. 大数据开发语言Scala入门 ,如何入门?

    2024-06-17 13:52:05       37 阅读
  4. Kubernetes面试整理-Kubernetes的主要组件有哪些?

    2024-06-17 13:52:05       32 阅读
  5. 【学习笔记8】阅读StyleID论文源码

    2024-06-17 13:52:05       27 阅读
  6. 终极Python备忘单:日常任务的实用Python

    2024-06-17 13:52:05       31 阅读
  7. vue和jQuery有什么区别

    2024-06-17 13:52:05       24 阅读
  8. 关于软件交付质量度量标准 这里是一些建议

    2024-06-17 13:52:05       29 阅读
  9. Mybatis的面试题

    2024-06-17 13:52:05       31 阅读
  10. Milvus 二

    2024-06-17 13:52:05       22 阅读
  11. go协程的栈

    2024-06-17 13:52:05       33 阅读