架构师原则
原则1:没有原则
- 架构设计没有绝对的对与错,架构设计一定需要考虑场景,相同的功能需求,不同的场景下选择的设计方案也会是不一样的。
- 简单来说,项目和产品的做法是不一样的。
- 项目的目的是为了什么?关注什么?我觉得主要有两点:1、快速结项、2、最大利润。
- 首先说说 快速,也就是说,在项目中优先解决什么?首先要尽快能够实现初验和终验,能够把项目结了,能够快速回款,钱能快点儿到手。因为项目会受到各种外部因素影响,例如资金呀、用户人员调整呀、新技术呀、基本环境变化呀、客户需求变化呀等等,这些都会给项目带来新的风险。我们有的项目一做做了好几年,然后现在用户各种不满意,为啥呢,几年前的市场情况和现在的市场情况有了非常大的区别。用户用现在的市场和技术的标准和要求,对几年前的规划的项目做评价和验收,这想想都是很恐怖的事情。所以我们要尽量快的将项目给结掉,一定不能拖。
- 再说说利润吧。这个其实很好理解,我们希望使用更少成本,更少的费用去完成项目的结项验收。这里面我们可以考虑采用最熟悉的技术,成熟的组件来实现,也可以考虑采购第三方的软件或硬件来实现,不一定所有的需求都要我们自己实现,这个在意识上一定要有认知。只要评估一下时间、成本、风险都在可控范围内就行了,总体成本比我们自己实现划算就可以了。在项目中不要超前设计和过度设计,因为无论是硬件技术还是软件技术现在发展都非常之快。总的来说,要尽量保证实施的成本低,项目的利润要比较高。这样大家才能拿到更多的项目奖金。
- 产品要的注意的问题是什么呢?我觉得和项目来比的主要是突出的是两点:1、高质量、2、可扩展
- 首先说高质量:一个产品会用到很多的项目里面去。这样对产品质量的要求是就会比较高的。这个我想大家应该都能明白,我就不深入去讲了。
- 再说可扩展:因为我们的产品要考虑,产品的迭代升级、未来可能支持多场景使用。所以在产品的解耦和可扩展性上一定要多一些考虑,使用的技术需要是通用的技术组件,避免引入比较偏门的技术,这样不例如产品未来维护。当然也不能过度设计。
原则2:用好缓存
- 俗话说缓存为王,无论是操作系统层面,数据库设计、分布式系统设计、服务层面、前端页面等等。基本上只有涉及要性能优化就会考虑使用缓存。利用空间换时间。当然我们做设计的时候,一定要结合场景来考虑,离开场景谈设计,那就是只能是瞎设计。什么时候需要使用缓存,什么时候不要缓存?这个呢,一定是根据用户需求来确定的。我们要保证核心的业务和核心的功能性能最优。我们可以考虑使用多级缓存,各种缓存更新策略,使用数据缓存、链路缓存、页面缓存、视频缓存、针对场景的缓存,可以按需或者按时进行缓存。缓存要用好,其实需要对数据结构的基础理论要有充分的理解。对数组、堆、栈、队列、链表、树、散列表、图等等要有一定的理解。对于这些数据结构的增删改查需要有充分的认知。例如我们需要考虑B树、B+树、LSM树分别适用于哪些场景?哪些数据结构读性能好,适合查询业务频繁的场景,哪些数据结写性能比较好,适合海量数据实时存储场景。我们同时也要对于基本的硬盘、内存的操作性能要有一定的了解。例如批量写入、顺序写入和随机写入的性能差异情况?总之,在性能优化的时候,我们要时刻把空间换时间的理念记在心里。缓存和存储一定要根据场景选择合适的数据结构。用真正用好缓存,在架构设计层面就能成长一步。
–2020年7月28日–