抽象思维、目标思维
什么是抽象
从事物中抽取共同的部分(属性)表面描述
每个共同的部分 代表事物的个性,原理性抽象
事物分
看得见的事物和看不见的事物
抽取事物内部的属性就是抽象思维
抽象就是抽象事物的属性和方法
抽象的过程就是
透过现象(变化)看本质(不变)
抽象就是一个分类过程
根据事物的属性分类
如何抽象
- 感性认识,看得到的一切,基本描述
分两类,对事物本身的外在描述,对事物之间的关系描述 - 分析
分开剖析,把事物拆分成零部件分析,
程序本身是一个树,每个节点 是一个组件,每个组件可替换说明架构扩展性强 - 分离
关注子组件 - 比较
比较事物的共同点 - 综合
推理、判断
总结
抽象事物本身存在,看不到,但是存在于每个具体的事物中
抽象对象必须从两个以上的事物对比得出,
只要有对象交互的地方就可以产生新事物
研究对象和对象的关系
什么是目标
系统、功能、需求、架构师。
希望达到的某一个结果,依靠人力,即想象力。
制定目标一定要具体化,不具体的目标很难实现。没有目标就没有方向。
架构师的目标
制定业务目标,
如何实现目标(电商系统)
- 感性认识
电商系统是什么
为什么要开发电商系统
给谁开发?
电商系统的核心:支付
能够解决核心问题叫做核心领域模型,
确定非核心领域模型,
订单、团购、商品
生成领域模型树
架构设计
设计模块,创建表
架构师
-
项目方面
- 如何分析需求?
- 需求只是一个方案
- 需求是谁提出来的?
- 需求的边界在哪里
- 需求的核心点在哪里
- 怎么去实现这个需求
- 举例子:项目:是否能够实践
- 业务,技术,架构之间的关系?
- 业务是一个目标
- 为了完成这个目标使用很多技术
- 对技术的整合就是业务架构
- 项目如何落地?
- 拆分
- 找到核心点
- 分清非核心点
- 文件夹拆分,一个是程序集拆分,项目方式拆分。
- 协调利益关系
- 项目是靠人完成
- 如果公司只有我一人,我会将架构文件夹拆分,自己开发
- 如果公司业务发展,增加了很多人,项目方式拆分。
- 如果项目里面有很通用的模块,那么使用程序集拆分
- 如何分析需求?
-
系统设计方面
- 如何设计一个高并发系统?
- [ ] 系统拆分 : 拆分子系统,形成集群,可以抗高并发。 - [ ] 缓存:都是读多写少,redis单机可以轻松搞定几万的并发。用缓存来抗高并发。 - [ ] MQ:数据库会频繁修改,进行增删改查。同步请求存在性能瓶颈,改成异步提供并发量 - [ ] 分库分表:讲查询数据尽量少一点,提供sql的性能 - [ ] 读写分离:读的流量很大的话,必须从从库里面读,性能会好 - [ ] Elasticsearch:本身就支持高并发量,可以让Elasticsearch承担读写的压力 - [ ] 细节:具体情况具体分析。提出具体的技术。
-
技术方面
- 负载均衡算法和实现
- 轮询算法
- 加权轮询
- 最少连接
- 随机算法
- Hash一致性
- 框架实现
-
基础方面
- 对象之间的关系有哪些?
- 继承关系 :集成抽象类和具体类
- 实现关系 :实现接口
- 依赖关系:方法局部变量,方法形参
- 关联关系
- [ ] 聚合 :成员变量表示 生命周期不一样
- [ ] 组合 :成员变量表示 生命周期一样 人