云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式数据库_阿里云git代码_0元

小七 141 0

应用程序功能与HashiCorp consur切换

功能切换(也称为功能标志)有条件地向用户提供应用程序功能。我们之前讨论了HashiCorp Terraform资源的特性切换,以减轻生产基础设施更改的影响。在这篇文章中,我们将演示如何在使用HashiCorp consur和conver模板时管理应用程序特性切换。在应用程序中,我们使用不同类型的功能切换来快速更改应用程序代码的功能。我们不仅可以使用release开关来隐藏发布,还可以使用实验切换来启动a/B测试的实验,以及回滚有问题的更改的操作切换。使用consur,我们可以在单个位置跟踪、管理和更新各种切换,并在运行时检索更新的值,而不是重新启动应用程序以更改标志。»功能切换的conver设置如果您想自行管理您的功能切换或已经使用consur的服务发现或服务网格功能,您可以根据上游服务的流量路由配置配置配置consur KV(key-value store)来存储标志或切换。首先,部署Consul服务器和客户机。当应用程序访问客户机以从Consul KV检索值时,客户机将请求转发到服务器。客户机应该部署在与工作负载相同的节点上。例如,如果在容器编排器(如Nomad或Kubernetes)中部署consur,则可以引用部署到本地节点的consur客户机。在虚拟机环境中,您可以为托管应用程序的每个虚拟机部署conver客户机。为了演示使用consol KV切换特性,让我们使用ASP.NET核心服务调用report服务,该服务返回一个JSON负载,其中包含一个报告,其中列出了给定旅行的旅行费用。{"tripId":"d7fd4bf6-aeb9-45a0-b671-85dfc4d09544","费用":[//为清楚起见省略],"总计":25.5700}»CONSUR KV开关举个例子,假设你的用户要求你添加一个显示旅行费用的特性。当您的团队开发该特性时,您不希望在提交其他更改并将其推送到生产环境中时发布其功能。因此,您需要在临时释放切换之后隐藏该特性。在启用功能切换时,可以更新报表创建逻辑以添加开支数量。私有void addNumItems(ReportTotal ReportTotal){如果(_toggleClient.GetToggleValue("启用项数")。结果){报告Total.NumberOfExpenses= 报表合计.费用.计数;}}tutoggleclient抽象调用一个名为GetToggleValue的函数,以便从consur KV检索特性决策。任务名称(gettoggel>public value){var getPair=等待_咨询客户.KV.Get("切换/"+名称);如果(getPair.StatusCode!= System.Net.HttpStatusCode。好的){返回false;}var值=编码.UTF8.获取字符串(getPair.Response.Value,0,getPair.Response.Value.长度);返回TransformToggleValueToBoolean(value);}GetToggleValue使用领事网库,以使用consur API在consur中检索给定键的值。consur文档包括一个库和sdk的列表,这些库和sdk用于与converapi接口的许多编程语言。如果应用程序无法访问consur或在/toggles路径的键值存储中还不存在切换,则此示例始终禁用切换。您可以自定义此路径,以根据不同的切换类别、应用程序服务或开发团队来隔离功能切换。除了自定义特性切换的路径之外,还可以包括其他切换元数据,如时间戳、所有权和类别。在本例中,切换以二进制true或false的形式存在。当切换不存在时,代码会自动忽略输出开支数量的功能。用户可以继续看到JSON有效负载以及开销和总额的列表。当您的团队进行功能实现时,您可以使用conver命令行或仪表板为开支项目的数量创建禁用的功能切换。$CONSUR kv put切换/启用项数错误要释放该功能,可以通过另一个命令或仪表板更新启用切换,方法是将其设置为true。$CONSUR kv put切换/启用项目数为真既然您启用了这个特性,那么您的用户应该会收到一个包含开销的有效负载。您可以通过向您的报告服务提出请求来确认这一点,并收到一份包含旅行费用项目数的报告。{"tripId":"d7fd4bf6-aeb9-45a0-b671-85dfc4d09544","费用":[//为清楚起见省略],"总计":25.5700,"费用数量":200}在发布特性之后,您允许切换保持启用状态几个星期,以便进行回归测试。一旦确认新版本没有破坏现有功能,就可以删除切换的代码。»生产缩放切换当您的系统使用多个切换时,您可能需要审核切换的生存期以防止技术债务,并控制对切换的访问以防止未经批准的发布。使用consol KV,您可以创建consur手表来监视对切换键前缀的修改。为了控制对特定切换的访问,可以使用访问控制列表(acl)来防止对标志和命名空间的未授权更改,从而进一步隔离团队的访问。为了进一步简化管理,您可以使用特性标志管理工具(如LaunchDarkly)来管理切换。对于一些特性切换,您可以编写切换逻辑,以便在每次代码路径执行时向consur的键值存储区发出HTTP请求。但是,当您向应用程序添加更多标志并扩展特性切换方法时,如果应用程序由于网络问题而无法访问键值存储,则需要确保代码使用正确的逻辑。例如,当使用LaunchDarkly管理功能切换时,如果应用程序无法到达LaunchDarkly,则可以缓存标志信息以与持久功能存储进行协商。当使用consur在生产规模上切换时,您将需要缓存consur KV的响应以进行特性决策,并在后台更新标志值。因此,即使应用程序无法访问consur,也可以引用缓存的值。在这个例子中,您可以使用一个后台任务重构GetToggleValue,以便从consur异步读取值。然而,这种方法需要额外的逻辑和测试conver行为中的边缘情况,例如状态重新加载时的反向索引。不用在自己的库中编写和测试逻辑,您可以使用conver模板将值写入文件。consur模板将consur中的值填充到文件系统中,并处理其边缘情况。在本例中,您可以在承载报表服务的节点上部署conver模板。您可以使用模板配置配置consur模板,以读取consol KV中切换下的所有切换并将其写入文件。模板{内容=