前言

工作之后,发现有不少名词重复的,搞得我都不知道哪个是哪个了,这里记一下常用的名词以及相关术语,避免识词而不知其意,蛮尴尬的!

术语篇

SOA

面向服务的体系结构(英语:service-oriented architecture)并不特指一种技术,而是一种分布式运算的软件设计方法。软件的部分组件(调用者),可以透过网络上的通用协议调用另一个应用软件组件运行、运作,让调用者获得服务。SOA原则上采用开放标准、与软件资源进行交互并采用表示的标准方式。因此应能跨越厂商、产品与技术。一项服务应视为一个独立的功能单元,可以远程访问并独立运行与更新,例如在线查询信用卡账单。

SOA中的一项服务应有以下四个特性:

  • 针对某特定要求的输出,该服务就是运作一项商业逻辑
  • 具有完备的特性(self-contained)
  • 消费者并不需要了解此服务的运作过程
  • 可能由底层其他服务组成

以下指导原则是开发,维护和使用SOA的基本原则:

  • 可重复使用、粒度、模块性、可组合型、对象化原件、构件化以及具交互操作性
  • 匹配开放标准(通用的或行业的)
  • 服务的识别和分类,提供和发布,监控和跟踪。

下面是一些特定的体系架构原则:

  • 服务封装
  • 服务松耦合(Loosely Coupled) - 服务之间的关系最小化,只是互相知道。
  • 服务契约 - 服务按照服务描述文档所定义的服务契约行事。
  • 服务抽象 - 除了服务契约中所描述的内容,服务将对外部隐藏逻辑。
  • 服务的重用性 - 将逻辑分布在不同的服务中,以提高服务的重用性。
  • 服务的可组合性 - 一组服务可以协调工作并组合起来形成一个组合服务。
  • 服务自治 – 服务对所封装的逻辑具有控制权
  • 服务无状态 – 服务将一个活动所需保存的信息最小化。
  • 服务的可被发现性 – 服务需要对外部提供描述信息,这样可以通过现有的发现机制发现并访问这些服务。

除此以外,在定义一个SOA实现时,还需要考虑以下因素:

  • 生命周期管理
  • 有效使用系统资源
  • 服务成熟度和性能

ACID

我们知道事务有4个非常重要的特性,即我们常说的(ACID)

Atomicity(原子性): 是说事务是一个不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前的状态的话,那么之前已经执行的所有操作都是无效的,都应该回滚到开始前的状态。

Consistency(一致性): 是说事务执行前后,数据从一个状态到另一个状态必须是一致的,比如A向B转账(A、B的总金额就是一个一致性状态),不可能出现A扣了钱,B却没收到的情况发生。

Isolation(隔离性): 多个并发事务之间相互隔离,不能互相干扰。关于事务的隔离性,可能不是特别好理解,这里的并发事务是指两个事务操作了同一份数据的情况;而对于并发事务操作同一份数据的隔离性问题,则是要求不能出现脏读、幻读的情况,即事务A不能读取事务B还没有提交的数据,或者在事务A读取数据进行更新操作时,不允许事务B率先更新掉这条数据。而为了解决这个问题,常用的手段就是加锁了,对于数据库来说就是通过数据库的相关锁机制来保证。

Durablity(持久性): 事务完成后,对数据库的更改是永久保存的,不能回滚。

分布式事务

TCC

2PC


 目录


买个卤蛋,吃根冰棒