2024学习
随想_构建组装模型
【转载】如何精确评估开发时间
使用全局变量实现动态模块注册的设计方案
python中的interfaces
Django 中的 MailServiceRegistry 设计模式解析
Technical Article: Understanding the Design Patterns in Django's `MailServiceRegistry`
contextvars 介绍
Powered by MrDoc
-
+
随想_构建组装模型
--- UID: 20230617103415 创建时间: 2023-06-17 10:34 修改时间: 2023-06-17 10:34:10 星期六 tags: --- # 思路来源 [【2023版】系统架构设计师精讲班视频教程_希赛网 构件组装模型](https://wangxiao.xisaiwang.com/wangxiao2/c250005634/sp100324139.html) # 构建组装模型 示例:方舱医院、乐高积木 先把*构件*构建出来,然后将构件通过*标准接口*组装起来。 优点:易扩展、易重用、降低成本、安排任务更灵活 缺点:构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其它指标(如性能)、第三方构件质量难控制。 前提:有构件库,进行构件的获取、管理,初期需要花费大量精力构建构件库、统一标准 标准化:标准必须统一 *构件标准* # 与工作相结合 当前进行的一部分工作可以应用构建组装模型,将一些通用能力封装成构件 ## 前端构件: 现状:存在多个前端项目,标准不统一、能力不互通 由于缺失信息共享机制,每个人在开发功能时,如果没有在第一时间找到需要的组件,就会按自己的理解重新封装组件,导致同样的功能有多种不同的实现,代码维护成本高 ### 标准不统一 由于历史原因,团队的各个前端项目是从 0 开始起步一步步发展完善的, 现存的项目按时间顺序分类: - 最初 odoo 框架内 js 框架 - 公司内部 dtd 框架 - antd 3.0、antd 4.0、antd 5.0 转到 reac 框架后,开发的组件风格分为两类: - class 组件 - hook 组件 > Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 > [React Hooks 完全使用指南 - 掘金 (juejin.cn)](https://juejin.cn/post/7041551402048421901) > [react hooks与class组件对比🚀 - 掘金 (juejin.cn)](https://juejin.cn/post/6844904179136200712) 项目间代码基本不互通,在创建新项目时从历史某个项目中复制一批代码放到新项目中,后期手动在不同项目间复制粘贴代码 ### 目标 - [ ] 与团队内负责前端的几位同事沟通,梳理现有的组件 - [ ] 将最常用、最通用的几个组件按照约定的*统一标准*进行封装 - [ ] 创建公共组件库,以 antd 5.0 为基础封装通用组件 - [ ] 新的项目以引用第三方组件的形式使用这些组件,解决项目代码更新不及时的问题 - [ ] 在团队内推广使用公共组件库 目标组件:Many2one 组件、Many2many 组件、Many2ManyTag 组件、Attachment 组件、Attachments 组件 ## 接口构件: 每个接口就是一个服务,一个复杂的系统被自动拆分成一个个的接口,只要保证每一个接口可用,就可以保证最终的系统可用 将各个系统看作一个个接口,通过 api 网关对请求的分流,接口对应的代码运行在哪里也不重要了,最终实现真正的前后端分离:一个前端项目无感的调用多个后端的接口 后期可以进行接口的自动化模糊测试 统一接口风格: - 简化前端组件的逻辑 - 便于 api 网关按预定的规则将请求转发到目标服务上 - 通过 api 网关在前端无感的情况下发起对多个不同系统的调用 - 各个系统可以订阅其他系统的调用请求 场景 1: partner 前端直接访问 dodo 内的项目、产品、子版本等资源 (已实现) 场景 2: partner 前端发起创建生态商机的请求调用成功时,api 网关自动将该请求同步转发给 dodo `/rest/partner/private/server_desk/1` - rest: 标识当前请求时 restful 请求,便于 api 网关识别处理 - partner: 资源所在的系统,告诉 api 网关将该请求转发给 partner 服务 - private:私有资源,告诉 api 网关对当前请求进行权限认证后再转发 - server_desk: 本次要请求的资源类型 - 1:本地要请求的资源 id ### 新项目 - 新项目原则上仅对外暴露 `rest` 风格的接口,自动生成的 `fastapi` 文档可以清晰的看到系统公开的所有接口 ### apiserver 新项目原则上禁止直接调用其他系统,必须通过 apiserver 调用其他系统 在 apiserver 中可以进行类似于 #服务网格 的各种操作: - 权限鉴定 - 日志记录 - 行为分析 - 数据缓存 - 协议转换 - … - [ ] 调研服务网格的部署于使用,是否有必要使用服务网格
幻翼
June 17, 2023, noon
转发文档
Favorites
Last
Next
Scan the QR Code
Copy link
Scan the QR code to share.
Copy link
Markdown file
PDF document (print)
share
link
type
password
Update password