2024学习
随想_构建组装模型
【转载】如何精确评估开发时间
使用全局变量实现动态模块注册的设计方案
python中的interfaces
Django 中的 MailServiceRegistry 设计模式解析
Technical Article: Understanding the Design Patterns in Django's `MailServiceRegistry`
contextvars 介绍
本文档使用 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 中可以进行类似于 #服务网格 的各种操作: - 权限鉴定 - 日志记录 - 行为分析 - 数据缓存 - 协议转换 - … - [ ] 调研服务网格的部署于使用,是否有必要使用服务网格
幻翼
2023年6月17日 12:00
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码