我想设计一个
的系统答案 0 :(得分:2)
问题确实非常广泛 - StackOverflow旨在涵盖更具体的技术问题,而不是对整个系统的架构方面进行辩论。
除此之外,让我试着解决你问题的一些方面:
a)使用流媒体进行CDR处理:
Spark Streaming确实是传入CDR的首选工具,通常通过消息排队系统(如Kafka)提供。它允许窗口操作,当您需要计算一段时间(小时,天等等)的通话费用时,它会派上用场。您可以非常轻松地将现有静态记录(例如来自其他数据库的价格计划)与窗口化操作中的传入CDR相结合。所有这些都在一个强大而广泛的API中。
b)使用Cassandra作为商店
Cassandra具有出色的扩展功能和即时行访问权限 - 因此,它是一个绝对的杀手。但是,在TelCo行业设置的情况下,我会严重质疑将其用于除MSISDN查找和信用检查以外的任何其他内容。 Cassandra本质上是一个柱状KV存储器,并试图存储多维度,基本上是关系记录,如价格计划,合同和批次将给你带来很多麻烦。我建议根据用例将数据存储在不同的商店中。这些可能是:
总而言之,您实际上正在查看Spark Streaming的经典lambda用例,以便立即处理传入的CDR,并使用常规Spark on HDFS进行批处理以进行后期处理,例如当您进行后处理时计划变更后重新计算CDR成本。