当前位置: 首页 > news >正文

引擎系统设计思路 - 用户态与系统态隔离

用户态与系统态隔离

        a. 外部用户侧的对象或者逻辑,在外部创建使用。内部系统侧的对象或者逻辑,在内部创建使用。

        b. 用户状态下对内部系统的操作要立即响应,但是具体如何实际执行系统内部的机制,则是异步并行的。因为有异步,也可以或者提供保留同步机制。

        c. 用户态与系统态之间不会建立直接的依赖关系他们的关系是异步并行的。前者负责面向用户行为,后者负责面向引擎内部系统的管理行为(包括资源管控,算力使用,渲染机制的动态生成与调度等等)。总体来讲,前者是数据和行为约束的提供方,而后者会依据实际策略具体使用这些数据和实现预期的行为结果。

        d. 用户态的正确执行,并不会收到系统态的限制。

        情景类比说明:银行客户需要处理一个账户上的事情(此银行的相关业务),他将此事交给银行的一个客服。在处理过程中(不管是否此事已经在处理中),此客户持续告诉客服各种可能的调整。最终账户事宜处理完成,符合银行的需求进而正常接入相关财务事宜。这里的客户,可以看做是用户态。而客服以及银行则是系统态。整个事情的推进中,双方保持信息同步但是异步并行。

        误区:

                1. 将客户(业务)实现强关联到系统内,甚至在系统内去实现。这么做看似可行,实则。可能有人,实则可怕。可能有人会说因为敏捷需要而为之,实际上是不愿分析思考而且不顾及成本投入。一步错、步步错,就是这么来的。就像有的产品,所有需求都做完,产品也就作废了。

                2. 有人觉得这样一个好的系统实现,需要巨大的投入。恰恰相反,这只是需要一个"自律"的迭代过程,边开发边迭代是一起进行的。因为隔离,所以容易迭代,而迭代又促进了隔离。就如健身和减肥一样。明知道健康和身材是关键要素,所以注意健身就是日常,而不是等到健康和身材都成为难题了,才来关注和处理。重要的事情要持续关注和协调,而非靠感觉选择性无视。奇迹和神迹都是有严苛条件的,不可随意向往。魔鬼藏在细节中。圣人老子很早很早就说过,天下大事必作于细,天下难事必作于易, 可反过来行吗?

达到的目的:

        1. 使用的时候,各司其职,保持高效。

        2. 运行的时候, 各司其职,保持高效。

        3. 升级迭代的时候,各司其职,保持高效。

        4. 将相对复杂和重要的工作交给系统接管,而不需要用户负责。

        6. 将复杂而广泛的应用形式交给用户实现,尽量不干扰用户的使用自由度。

其他相关:

        1. 引擎系统设计思路 - 支撑高效能3D虚拟视觉系统的七个维度-CSDN博客

        2. 3D系统中可渲染实体容器(Renderable Entity Container)-CSDN博客

相关文章:

  • LeetCode 501. 二叉搜索树中的众数【二叉搜索树中序遍历+Morris遍历】简单
  • PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
  • diffusers-Load pipelines,models,and schedulers
  • #stm32整理(一)flash读写
  • pytorch 笔记:GRU
  • 0基础学习PyFlink——使用DataStream进行字数统计
  • Java操作word
  • 服务器遭受攻击如何处理(记录排查)
  • Redis入门02-基础概念
  • 分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测(自注意力机制)
  • 亲测解决Pytorch TypeError: object of type ‘numpy.int64‘ has no len()
  • 微服务框架SpringcloudAlibaba+Nacos集成RabbitMQ
  • C语言assert函数:什么是“assert”函数
  • 【Java 进阶篇】Java中的响应输出字节数据
  • MySQL - 覆盖索引、回表查询
  • [case10]使用RSQL实现端到端的动态查询
  • “大数据应用场景”之隔壁老王(连载四)
  • ➹使用webpack配置多页面应用(MPA)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • ES6 学习笔记(一)let,const和解构赋值
  • Java的Interrupt与线程中断
  • java小心机(3)| 浅析finalize()
  • MySQL用户中的%到底包不包括localhost?
  • php中curl和soap方式请求服务超时问题
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python学习之路16-使用API
  • react 代码优化(一) ——事件处理
  • springboot_database项目介绍
  • Travix是如何部署应用程序到Kubernetes上的
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 如何使用 JavaScript 解析 URL
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 在electron中实现跨域请求,无需更改服务器端设置
  • elasticsearch-head插件安装
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (145)光线追踪距离场柔和阴影
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (MATLAB)第五章-矩阵运算
  • (Ruby)Ubuntu12.04安装Rails环境
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Scala的“=”符号简介
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET MVC 验证码
  • .Net mvc总结