本文是关于个人对该文章阅读后总结的读书笔记以及要点总结。
作者及书记地址:http://www.luzexi.com/tag/Unity3D
架构的意义
作者认为,“架构”是一个非常抽象的概念,在计算机行业里很难去定义。而很多文章中经常会把架构与服务器端部署图联系在一起,而实际上并非如此。架构其实无处不在,它本质上是解决生活和工作中问题的一种方案。
下面我总结了一些软件系统架构中,作者所提到一些关于架构的特征:
● 架构承担了解决项目从研发到上线运营的方案。
1. 前端渲染引擎使用Unity还是Unreal还是其他。
2. 使用UGUI,FGUI,NGUI还是其他。
3. UI事件系统如何统一处理,AI行为使用状态机还是行为树?
4. 数据如何获取存储。
5. 场景如何拆分。
6. 资源如何分离。
7. 服务端使用什么语言。
8. 网路协议使用json还是xml等等。
优秀的架构师,需要对每个子系统决策方向深思熟虑,在架构中以下五项能力缺一不可,最宏观的整体架构,是由所有子系统的架构来支撑的,整体架构虽然比其他子系统的架构都更加重要,但再好的整体架构也并不能起到决定性作用,一个好的司令需要众多好的将领以及更多的好的士兵支撑。综合因素决定了成败,架构也同样如此,如何让所有的因素都朝着好的方向发展是所有架构师最终都需要思考和解决的问题。
● 承载力:承载多少个逻辑系统、多少个程序员共同工作、多少UI、多少模型、多少访问量等。
● 可扩展度:添加了子系统后不影响或少影响其他子系统运作。
● 易用性:最容易忽略的点。程序员容易上手,子系统容易对接。
● 可伸缩力:允许将架构内的功能、模块、系统化繁为简,既适合多人开发,也适合小团队个人开发。类似于服务端弹性服务器。
● 容错力以及错误感知力:服务端客户端的容灾能力,及时的错误日志保存发送、快速定位问题,数据错误不崩溃,程序出错也能运行。
架构的思维方式
- 分层思维:把整个系统划分成若干个层次,每一层专注解决某个领域的问题,并向上提供服务。纵向的是共享层。
- 分治思维:应对和管理复杂性的一般性方法,对于无法一次解决的大问题,会先把大问题分解成若干个子问题。
- 演化思维:渐进式地把单块架构拆分成微服务架构的思路,随着业务深入和团队扩大,不断应变环境变化。
架构的做法
- 目标:高可用、高能行、可扩展、可容错、安全。
- 前端用户体验:加载速度、响应速度、减少Drawcall、减少CPU负载等。
- Unity分层架构:UI框架、主逻辑框架、资源管理、数据管理、网络。
- 模块分治:对分层结构中的模块进行分治拆分,比如数据管理拆分为内存数据和外部数据。