AOP思想
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。
refs:
CAP原理
- Consistency(一致性), 数据一致更新,所有数据变动都是同步的
- Availability(可用性), 好的响应性能
- Partition tolerance(分区容错性) 可靠性
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
refs:
ACID模型
关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区:
- Atomicity 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
Consistency 一致性. 一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
Isolation 隔离性. 如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。事务将假定只有它自己在操作数据库,彼此不知晓。
- Durability 持久性. 在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
refs:
BASE思想
BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性:
- Basically Available 基本可用。基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。
- Soft state 软状态 状态可以有一段时间不同步,异步。软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。
- Eventually consistent 最终一致,最终数据是一致的就可以了,而不是时时高一致。最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
ACID和BASE代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
refs:
ASR
ASR:重要的架构需求,会对架构产生深远影响的需求;
ASR的几种获取方法:需求文档,采访利益相关者,理解商业目标,效应数;
SOA模型
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
SOA的精髓是严格的松散耦合,大家按照一个契约(service interface)来进行交流,不允许shared memory,不允许back door,不允许直接访问其它服务的数据。