Redis Streams、事件驱动架构和模式演化

uinbv5nw  于 2023-10-15  发布在  Redis
关注(0)|答案(1)|浏览(102)

我真的很有兴趣使用Redis Streams作为一个使用事件驱动架构代替Kafka的平台的消息传递 Backbone ,原因如下:

  • 低成本
  • 显著降低复杂性(与管理Kafka群集相比,部署和维护开销几乎为零)
  • 增加的性能
  • 少了一项技术+重用了一项我已经在缓存等方面利用的技术。

然而,我不确定如果没有我习惯于与Confluent的托管Kafka解决方案一起使用的模式注册表的等价物,我将如何管理服务之间的模式演变。
我在搜索schema evolution和Redis Streams时找不到太多。任何帮助将不胜感激。
先谢了。

6ioyuze2

6ioyuze21#

由于我有SQL的背景,我总是非常依赖建模和模式演化工具。但是自从转向混合方法后,任何给定的数据元素都可能在Postgres,Mongo,etcd,Kafka或redis中,并且我可能需要任何数量的不同样板代码片段,我已经接受了我使用Python开发的一个MysterNotebook模板的开发和使用,以管理通用模式。
我使用Python dict来定义我需要的模型的所有元素-例如。

someModelDict["someFieldName"] = {"Name":"Node hash name",
                                        "Description":"Host Node hash name",
                                        "Datatype":str,
                                        "ConstraintType":"FK",
                                        "Constraint":"Nodes.NodeHashName",
                                        "SampleValue":"DSFAGER3455",
                                        "Notes":"Node providing resources to the service - hash of IP Address or Hostname"}

我已经编写了相对简单的Python代码来在我使用的任何平台中生成示例值和查询,以及我需要使用模型的Web框架的样板代码-所有这些都基于简单的Python dict和一些额外的Mapdict(Map数据库,命令等)。从Python到目标框架)。
如果你更喜欢JavaScript,那么也许可以在JSON文件上使用一个简单的node.js前端,它的功能与Python dict相同。同样,通过简化模型的原始实体(JSON或Dict),您可以直接使用代码来处理它,以执行检查完整性或审计结构或从一个版本迁移到另一个版本等操作
让数据模型来源于一个权威的地方是关键,但是当使用多个平台时,其中许多是NOSQL,我发现最好基于一个简单但可扩展的结构(如dict/json)“滚动你自己的”。

相关问题