寓言故事
同一座楼里的许多商号
老算盘楼最初只服务一家布庄。账本、柜台、伙计和库房都属于同一个老板,怎么摆都不会串。
后来楼主把同一套账房服务卖给十几家商号。大家共用大厅、跑腿木偶、报表引擎和备份仓库,但各自有客户、价格、合同和账期。
第一周,为了省事,管理员给每家商号开了不同颜色的文件夹。木偶按颜色处理,看起来井井有条。
很快,一家茶商的续费报告里出现了布庄的客户名。原因不是黑客,而是报表模板缓存了上一个商号的筛选条件。
楼主先让伙计检查颜色。可共享的东西太多:搜索索引、流水、队列、临时记事本、计费表、临时文件,任何一处忘记带商号标记都会串味。
新架构师把整栋楼重新编号。每个请求进入时都带租户身份,数据、配置、权限、配额、流水、缓存和任务队列都按租户划线。共享能力可以共用,边界不能省略。商号越多,楼主越明白边界不是额外装饰。租户身份要像印章一样跟着每一次取数、写账、排活和收费走,哪怕背后共用同一批伙计,也不能把房门钥匙混在一起。
跑腿木偶替茶商工作时,只能看到茶商空间;调用工具、检索知识库、写流水和计费,都携带同一个租户标记。架构师还安排了演练。他故意让跑腿木偶拿着茶商钥匙去开布庄柜子,系统必须拒绝;让报表在两个商号之间切换,缓存必须重新清空。
楼里仍是一套平台,维护成本没有变成十几套系统。但每家商号像住在自己的房间,有自己的钥匙、账单和规则。楼主明白,多租户的难点不是让许多人共用一栋楼,而是让共用时仍像各自拥有一栋安全的小楼。