手机站:/m

大数据分析方法-使用DynamoDB进行动态配置

时间:2021-01-08 23:17编辑:淘客樊里来源:淘客樊里当前位置:主页 > 云主机 >

部署代码是有代价的。它可能需要时间,可能需要重新启动应用程序,并且(希望)具有增加摩擦的保护进程。这就是动态配置发挥作用的地方。顾名思义,动态配置是动态改变系统行为的能力。这对于特性标志、开发操作交换机、网络路由和为不同客户定制行为等方面都非常有用。大多数公司都会有某种类型的动态配置,有些公司甚至会开发自己的系统,比如Netflix的Archaius或Twitter的ConfigBus。在这篇博客文章中,我将讨论一个我们从很早就在振幅上使用的动态配置工具。我们亲切地称之为dyncof。什么是dyncof?DynConf的核心是DynamoDB表调用的包装器,它支持获取字符串键值对。包装器只需添加一层本地缓存,对任何获取的键进行定期刷新,还提供一些类型转换和获取的字符串值的默认设置。除了奇妙的文字游戏机会外,采用这种方式实现dyncof还有几个原因:可靠性:因为它只是一个包装器,DynConf免费继承DynamoDB的所有健壮性。代码简单性:有现成的代码可以与DynamoDB通信,这使得DynConf的编写、使用和思考变得非常简单。操作简单:我们不必担心是否能够扩展或管理任何主机集群。灵活性:有了创造性,一个通用的键值存储可以适应几乎所有的动态配置用例(尽管不是最优的)。DynConf的初始设计非常简单。总的来说,我们看重的是当时非常小的团队的简单性和低操作开销。它是如何使用的?在振幅下,DynConf设置通常分为以下模式之一的常规切换行为:DynConf.getBoolean("应使用有机溶剂法")数字配置配置:DynConf.getNumber("ConfigurablePerformanceTunigValue")有针对性的切换Dynconf.getArray("customerIdsWithSpecialFeature")自定义配置(取决于访问模式)DynConf.getObject("customConfigByCustomerId")动态获取值("configPrefix[DELIMITER]CustomerId")下面是我们使用这些模式能够涵盖的一些最有价值的用例。新行为的功能标志DynConf中的常规切换在发布新特性或行为时非常有用,因为它允许快速而简单的回滚,而无需等待几分钟进行重新部署。我们还经常使用目标切换来启用内部dogfooding和早期beta测试的行为。多阶段展开迁移或升级服务通常涉及行为的分阶段展开,每次部署都可能造成中断。例如,如果负载是一个新服务的问题,我们使用数字配置来控制请求重定向到新服务的速率,并在生产负载下观察性能指标。优化性能配置在处理性能时,并不总是清楚什么是最佳的截止点或设置,特别是对于生产负载和数据模式。通过设置特定的超时、限制和阈值数字配置,我们能够更快地找到正确的权衡。客户一次性作为一个B2B公司,我们经常需要为一小部分客户支持特殊的行为,例如特殊的查询语义或临时覆盖。有针对性的切换和定制的配置是很好的。相关阅读:用乐高积木建立顾客的共鸣我们学到了什么在使用dyncof多年后,我们认识到了一些重要的优点和缺点。管理动态配置设置很困难一般来说,它很容易积累随机的动态配置分散在周围,很容易积累随机的动态配置分散在代码周围。代码。什么样的钥匙,或者说是什么样的钥匙,或者说是什么样的信息会成为一个重要的信息。回答:DynConf.getNumber("你好,芝士汉堡")因为DynConf非常简单,它并没有真正组织这些信息。这促使我们制作一个基本的内部管理工具,用于列出键、查找键和设置配置值。除了减少设置值时出错的可能性外,该工具还将更改记录到MySQL数据库中,以跟踪历史设置值。但是管理工具并不完美。我们仍然偶尔会遇到这样的问题:开发人员被他们不知道的DynConf设置引起的"异常"行为所迷惑。真正解决这个问题需要投资一个更复杂的系统来管理动态配置信息。相关阅读:如何建立面向产品的工程团队并不是每件事都有意义DynConf非常灵活,但是专门的工具通常是更好的选择。你会把它塞进墙里的,但也许有更好的方法…功能标志和切换有多种类型,DynConf的简单和缺乏结构使得它不适合其中的一些。例如,我们创建了一个单独的系统,用于向最终用户发布新功能,并管理客户可能拥有的功能产品的复杂性。另一方面,DYNCOF的可靠性继续使其成为紧急情况下dev ops kill Switch的首选工具。例如,我们有一个通用的开关,用于在繁重的查询负载下禁用实时计算,还有一个切换开关用于切换到摄取管道中的备份kafka集群。DynConf的价值在于迭代的速度和内心的平静由于其在处理复杂卷展时的可靠性和灵活性,DynConf使其易于通过内置的回滚开关来释放新行为。使用内置的回滚开关来释放新行为。这大大降低了对关键服务进行更改时的风险,这意味着像我这样的担心者可以节省几天或几周的过度验证和过度测试,然后才有足够的信心进行部署。类似地,作为一个资源有限的小团队,能够根据生产环境中的条件动态调整性能配置,让我们能够快速找到"足够好"的设置并继续前进,因为我们知道,如果需要,我们总是可以轻松地复弱它们。而且,最重要的是,DynConf的扩展和可用性几乎没有开销。唯一的主要变化是额外的缓存层使用Redis或DAX来降低DynamoDB的成本。虽然自行车不如汽车好,但它仍然比步行更快地把你从a->B带到另一个地方。它也更容易组装!综合考虑,DYNCOF以极少量的投资极大地提高了开发速度。结束语随着时间的推移,我们可能会看到配置从DynConf中转移出来,并需要进一步努力来管理其日益增长的复杂性。尽管如此,这种对动态配置的简单、早期的投资对工程团队的速度产生了巨大的影响。因此,如果您还没有任何东西,那么添加一些简单的东西,比如Dyn(amic)Conf(ig),并由您最喜欢的可靠密钥值存储库支持,这可能是值得您花费时间的。

上一篇快速自助建站-“自动化UI测试不稳定”

下一篇大数据与应用-勒索软件在一致性方面与之匹配

养花知识本月排行

养花知识精选