桥接模式 - Bridge
背景
桥接(bridge)模式首先的场景是内部实现逻辑分为多个模块,每个模块又可能对应多种实现
在桥接内部,这些不同类型的模块按照组合或聚合的方式组织在一起,将逻辑模块抽象部分与实现部分相分离
目的 降低内部多种类型逻辑模块的耦合,扩展变成以各模块为单位,更为灵活
现实世界类比 Vans自由定制鞋_Vans(范斯)中国官方网站
桥接(bridge)模式首先的场景是内部实现逻辑分为多个模块,每个模块又可能对应多种实现
在桥接内部,这些不同类型的模块按照组合或聚合的方式组织在一起,将逻辑模块抽象部分与实现部分相分离
目的 降低内部多种类型逻辑模块的耦合,扩展变成以各模块为单位,更为灵活
现实世界类比 Vans自由定制鞋_Vans(范斯)中国官方网站
特征 or 全部
在实际需求中,往往存在类似需求:
最容易想到的,就是通过一个集合例如 Map、List 等结构将数据存储起来,判断是否存在于集合中
管道模式(Pipeline Pattern)是责任链模式(Chain of Command Pattern)的变体;区别在于责任链是将处理器按照链条组织起来,待处理的上下文按照链条找到能够处理自己的处理器,一般只有唯一的一个处理器;而管道模式是链条中的每一个处理器都需要对上下文进行处理
目的 降低业务逻辑流程的耦合性,将整个过程中所有的处理器隔离开,更方便扩展流程上新的业务逻辑
现实世界类比 工厂的生产流水线,车架 -> 发送机 -> 外壳 -> 内饰 -> 总装 -> 质检,整辆车在传送带又一个环节运输至另一个环节,每个处理环节都对汽车处理自己的部分,最终产出成品
在 RocketMQ 中,Topic 和 Tag 都是业务上用来归类的标识,通过合理的使用 Topic 和 Tag 可以让业务结构清晰,更可以提高效率
Topic 是消息主题,通过 Topic 对不同的业务消息进行分类 Tag 是消息标签,用来进一步区分某个 Topic 下的消息分类,是消息生产时即由消息生产者设置的属性
Topic 和 Tag 的选择,建议从以下几个方面判断:
基数聚合属于聚合中的度量聚合,计算不同值的近似计数
需要注意,聚合出的结果是一个近似值,原因是底层结构使用的 HyperLogLog,具有一定误差
假定 index 存储的售卖数据,希望查询有多少种不同的商品类型