2.1.1 逻辑隔离
逻辑隔离是通过在数据实体中置入压测特征来区分真实数据和压测数据的。压测特征可以表示为以下形式:
● 数据实体中的某个特定字段;
● 数据的特殊ID(如ID中带有特定的前缀或后缀);
● 数据的特殊内容(如含有“压测”字段的数据)。
举一个例子,如下面代码所示,针对用户这个数据实体,我们可以设置一个UserType(用户类型)字段,其中,枚举值为0代表普通用户,枚举值为1代表压测用户。应用服务可以根据这个字段来识别压测用户,决定是否执行相应的隔离工作。
enum UserType {
NORMAL = 0, //普通用户
PERF = 1, //压测用户
}
逻辑隔离实现简单、容易理解,无须改造中间件,但是它对业务代码的“侵入性”比较强,而且需要变更数据结构或数据内容。当然,它最大的风险在于压测数据和真实数据是写入同一张数据表的,一旦我们遗漏了某些压测数据的逻辑隔离,就会导致极大的数据污染风险,修复数据也比较麻烦。