基本概念
编程范式
结构化编程
限制了goto语句。对程序控制权的直接转移进行了限制和规范。
面向对象编程
函数式编程
软件框架
通常是为了实现某个业界标准或完成特定待定的基本任务的软件组件规范。例如,MVC(就是最常见的开发规范,还有MVP、MVVM、J2EE等
MVC(Model-View-Presenter)即模型-视图-表现层的缩写。
MVP:由MVC模式进化而来的,MVP改进了MVC中的控制器过于臃肿的问题。与MVC一样,MVP将应用程序的数据处理、数据显示和逻辑控制分开,用一种业务逻辑、数据显示和界面相分离的方法组织代码。MVVM:J2EE
为了实现某个组件规范,提供规范所要求的基础功能的软件产品。例如,Spring MVC 是MVC的开发框架。
软件架构
软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
系统架构能力
基本理论
可用性设计
可靠性设计
一致性设计
协议设计
接入层架构设计
反向代理
DNS轮询
LVS
动静态分离
逻辑层架构设计
通讯机制
同步与异步
RPC
MQ
Cron
RMI
数据层架构设计
读写分离
主从同步
缓存优化
常见的架构设计方法论
- 面向风险
- 《恰如其分的软件架构》
- 面向模式
- 《面向模式的软件架构——模式系统》
- 面向复杂度
- DDD(Domain-Driven Design领域驱动设计)
- 《中台架构与设计:基于 DDD 和微服务》、《领域驱动架构设计——软件核心复杂性应对之道》、《架构整洁之道》
- DDD核心目的降低业务负责度,提升可扩展能力。兼顾架构设计和方案设计,不关注存储和计算,关注业务,是可扩展架构的设计技巧,不是完整的架构设计方法论。
软件架构的诞生:
核心原因:软件系统规模增长,算法和数据结构不再是主要问题,整个系统的组成成为首要问题。
业务的复杂度是固有的,没有办法完全消除,软件架构是为了降低软件系统的复杂度。
支付的系统发业务复杂度最高
架构设计原则
- 合适原则:考虑资源、时间、业务
- 简单原则:奥卡姆剃刀(若无目标,勿增实体)、平衡内部复杂度和外部复杂度
- 演化原则:创造、迭代、重构重写
MangoDB没有事务,相对简单
MySQL比Oracle便宜
Nginx
