知识卡片
用统一服务层封装存储细节,实现实时计算和线上业务的彻底解耦
内容
大众点评的实时计算平台在Storm完成计算之后,如果需要和外部存储系统(Redis、HBase等)交互,并不是让每个业务方自己直接对接这些存储系统,而是统一通过一个叫data-service的服务、经由点评自己的RPC框架提供接口——业务方完全不需要关心计算结果实际存放在Redis还是HBase里,平台方可以根据SLA要求在不同存储系统之间自动切换,这个切换过程对业务方完全透明。计算的结果同样通过data-service反馈回线上系统:以搜索排序为例,用户再次发起搜索时,搜索业务会向data-service查询这个用户的最近浏览记录,用来重新排序结果再返回——这个查询过程和线上主业务系统是解耦的两个独立系统,实时计算这边一旦出现故障,只会导致这次排序拿不到实时反馈这一个具体特性受影响,不会连累到线上搜索服务本身的正常运转。这个设计给出了一条系统集成的重要原则:当一个新的能力(实时计算)需要被嵌入到已有的核心业务流程(搜索)里时,不应该让这个新能力和核心业务产生直接的强依赖关系,而应该在两者之间插入一层统一的服务接口,把”这个数据具体存在哪里、用什么技术实现”这类实现细节完全封装在这层接口背后——这样一来,新能力自身的故障、迭代、技术选型变化,都只会影响这层接口能不能提供数据这一件事,而不会传导成核心业务本身的不稳定;核心业务在拿不到这层新能力的数据时,也可以按照预设的降级逻辑(比如退回到没有个性化排序的默认结果)继续正常运转,而不是被这个本该是”锦上添花”的新能力拖垮。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.2 实时计算在点评"节,"6.2.3 点评如何构建实时计算平台"(源文件:_epub-src/OEBPS/Text/Chapter6_2_4.xhtml)
- 结论依据:原文说明"我们也提供了一个data-service服务,通过点评的RPC框架提供接口,用户不用关心实际Redis/HBase这些系统的细节和部署情况……这样的好处就是实时计算业务和线上其他业务完全解耦,实时计算这边出现问题,不会导致线上业务出现问题",直接支撑本卡片结论。
- 原始内容:我们也提供了一个data-service服务,通过点评的RPC框架提供接口,用户不用关心实际Redis/HBase这些系统的细节和部署情况……这样的好处就是实时计算业务和线上其他业务完全解耦,实时计算这边出现问题,不会导致线上业务出现问题。