利用Redis灰度库实现应用灰度发布
应用灰度发布是指在发布新版本的应用时,仅仅对一部分用户进行测试和观察,通过相互交流和观察,确认网站新版本所存在的问题,并及时处理,最终把新版本完美地发布到所有用户手中。灰度发布能够降低新版本发布的风险,保证数据的完整性,缩短恢复时间。Redis是一种高性能的NoSQL数据库,它提供了高速读写的能力,使其在应用灰度发布过程中起到了极为重要的作用。
1、Redis在应用灰度发布中的优点
Redis在应用灰度发布中的优点主要体现在以下几个方面:
(1)高度可扩展性:Redis采用主从模式和集群模式,可以扩展到成百上千个节点上,从而降低请求的响应时间和增大应对请求的容量,使得应用的性能更加优良;
(2)高速读写性能:由于采用了基于内存的存储方式,并且采用了多线程模式,因此,Redis在读写方面具有很高的速度,适合于多种大规模的高性能应用场景;
(3)多种数据类型:Redis支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等等,使得应用在灰度发布过程中更加灵活和多样化;
(4)定制化:Redis提供基于事件驱动和Lua脚本方式的自定义事件处理和自定义数据操作方式,从而使得应用在灰度发布过程中更加简单和自由。
2、利用Redis灰度库实现应用灰度发布的流程
(1)设置分组命中率
在实现应用灰度发布的过程中,只有特定比例的用户可以获得新版本应用,在Redis中实现灰度发布的第一步是,给用户设置分组的命中率。所有的用户会随机分为五组,每组的命中率分别是:1%、3%、9%、27%、60%。为简化模拟,同一个用户通过一个UID的形式用来记录命中或不命中的情况,并将UID填入Redis中:
import redis
import random
def set_user_group():
R = redis.Redis(host=’127.0.0.1′, port=6379, db=0)
for i in range(10000):
uid = str(i)
rate = random.random()
group = ‘group4’
group = ‘group3’
group = ‘group2’
group = ‘group1’
group = ‘group0’
R.set(uid, group)
(2)实现灰度发布控制
在实现应用灰度发布的过程中,我们需要对新版本应用根据上面步骤得到的分组命中率进行控制,只有特定比例的用户可以获得新版本应用。下面我们来演示碎片取模的方式实现控制:
import redis
def get_user_group():
R = redis.Redis(host=’127.0.0.1′, port=6379, db=0)
groups = [‘group0’, ‘group1’, ‘group2’, ‘group3’, ‘group4’]
group_count = {}

group_mods = {}
for group in groups:
group_mods[group] = 0
for uid in R.keys():
if R.get(uid) == group:
if group not in group_count:
group_count[group] = 0
group_count[group] += 1
group_mods[group] += hash(uid)
max_judgment = 0
new_group = ”
for group in groups:
judgment = float(group_count[group]) / float(group_mods[group])
if judgment > max_judgment:
max_judgment = judgment
new_group = group
return new_group
目的是借助Redis提供的快速读写的能力,快速执行碎片取模的方式,调整用户分组的机制,从而提升控制的效果,并在新分组中的用户中,随机选择一个命中率,如果选定的命中率低于实际应选的命中率,则该用户不获得新版本应用,并将UID记录在Redis中。
(3)实现新版本应用发布
在完成以上的过程后,我们可以在控制时开放新版本应用,并且使用与旧版本应用不同的端口。而新旧版本应用之间的差别大部分都是通过客户端实现,因此在较迟的时间点,可以逐渐将新版本应用替换旧版本应用。
在应用灰度发布中,Redis提供了高效的速度和灵活多样的数据类型,方便实现命中率设置、灰度发布控制、新版应用发布等一系列灰度发布工作,从而帮助企业在影响用户最小的情况下扩大应用测试范围,缩短发布时间,提高业务系统的可用性和稳定性,实现了更高效、更安全的灰度发布方式。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
苹果iphone6 plus电池耐用吗
iPhone6 Plus电池容量:2915mAh,正常情况一天一冲,玩的时间如果长就一天多充了,其实智能机的续航能力都差不多的,只要屏幕大,电池都不耐用的下面一些方法是能更好的保护电池:关闭后台应用程序刷新。 设置—通用—后台应用程序刷新。 IOS8系统默认在有网络的情况下自动刷新后台程序。 本项非常耗电,一定要关闭。 实践操作:笔者前一天晚上开启的YY没有关闭,第二天中午检查手机电池用量时,YY后台用电居然占20%。 恐怖吧,关键是它在后台运行对你一点没用!关闭airdrop和蓝牙。 向上滑动手机底端,打开控制中心,关闭第三个图标,蓝牙功能,airdrop也随之关闭。 Airdrop及蓝牙功能在打开状态下会一直搜索附近可连接设备,不仅耗电还影响手机运行速度。 开启“减弱动画效果”。 在设置—通用—辅助功能中,苹果新系统在移动设备时,壁纸会略微偏制造出3d的效果。 这是一项很有趣的视觉功能,但实际用处不大,耗电量却是不小。 有选择性的开启定位服务。 在“设置 — 隐私 — 定位服务”中关闭那些你不需要定位的应用。 尤其应注意在最下端的“系统功能”,进入后可按照需求选择开关,如果不合理设置定位功能,手机时刻处于定位搜索状态是相当耗电的。 苹果手机和大多数手机一样,采用的是锂电池,锂电池最大的好处是随用随充,不需要等到几乎没电才充。 研究表明,用到一点电没有后才充电会对锂电池造成永久性损害。 因此平时最好不要等到提示电量到10%才充电,而且充电到百分之百时即可断电,不需要充太久。 一个月有一到两次完全充电(用到几乎没电再充)即可。 尽量不要插在电脑上充电,因为电脑USB接口电压不稳,会对电池造成伤害。 使用电源充电最好使用原装充电器,不同型号之间的充电器不要混用,尤其是苹果平板电脑和手机充电器的电压要求都是不同的,一定不能混用。 如果购买港版,充电器转换器一定购买正规厂家生产的产品。 7其它功能,譬如:推送邮件、自动调亮屏幕、开启蜂窝及WIFI自动连接等也很耗电,但是手机毕竟是用来用的,还是应该根据个人需要自我选择功能,而不必为了省电将一些经常使用的功能来回的开开关关,费时费力。
win7 调整桌面颜色设置
没勾选nvdia设置以自我感觉良好为宜
VGA接口和DVI接口有什么不同?
VGA接口和DVI接口 区别 VGA的英文全称是Video Graphic Array,即显示绘图阵列。 VGA支持在640X480的较高分辨率下同时显示16种色彩或256种灰度,同时在320X240分辨率下可以同时显示256种颜色。 VGA由于良好的性能迅速开始流行,厂商们纷纷在VGA基础上加以扩充,如将显存提高至1M并使其支持更高分辨率如800X600或1024X768,这些扩充的模式就称之为VESA(Video Electronics Standards Association,视频电子标准协会)的Super VGA模式,简称SVGA,现在的显卡和显示器都支持SVGA模式VGA接口就是显卡上输出模拟信号的接口,也叫D-Sub接口。 VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。 VGA接口是显卡上应用最为广泛的接口类型,绝大多数的显卡都带有此种接口。 工作原理,是计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。 对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。 而对于LCD、DLP等数字显示设备,显示设备中需配置相应的A/D(模拟/数字)转换器,将模拟信号转变为数字信号,在经过D/A和A/D2次转换后,不可避免地造成了一些图像细节的损失。 DVI接口的情况DVI全称为Digital Visual Interface,是1999年由Silicon Image、Intel(英特尔)、Compaq(康柏)、IBM、HP(惠普)、NEC、Fujitsu(富士通)等公司共同组成的数字显示工作组DDWG(Digital DisPlay Working Group)推出的接口标准,是Digital Visual Interface的缩写,其外观是一个24针的接插件。 DVI接口有多种规格,分为DVI-A、DVI-D和DVI-I,是专为LCD显示器这样的数字显示设备设计的。 传输模拟信号的过程中,首先要在计算机的显卡中经过数字/模拟转换,将数字信号转换为模拟信号传输到显示设备中,而在数字化显示设备中,又要经模拟/数字转换将模拟信号转换成数字信号,然后显示。 在经过2次转换后,不可避免地造成了一些信息的丢失,对图像质量也有一定影响。 而DVI接口中,计算机直接以数字信号的方式将显示信息传送到显示设备中,避免了2次转换过程,因此从理论上讲,采用DVI接口的显示设备的图像质量要更好。 另外DVI接口实现了真正的即插即用和热插拔,免除了在连接过程中需关闭计算机和显示设备的麻烦。 所以,现在很多液晶显示器都采用该接口。 DVI又分为DVI-A、DVI-D和DVI-I三种。 (1)DVI-A端口用于传输模拟信号,其功能和D-SUB完全一样。 (2)DVI-D端口用于传送数字信号,DVI-D接口只能接收数字信号,接口上只有3排8列共24个针脚,其中右上角的一个针脚为空。 不兼容模拟信号。 是真正意义上的数字信号接口。 (3)DVI-I端口用于传送兼容信号,通过接口上活跃针脚定义的不同,传送模拟或数字信号。 其中DVI-I端口中还分为单通道和双通道,也就是市面上流传的18针和24针由来,DVI18针的DVI属于单通道,而24针属于双通道,也就是说,18针的DVI传输速率只有24针的一半,为165MHz。 在画面显示上,单通道的DVI支持的分辨率和双通道的完全一样,但刷新率却只有双通道的一半左右,会造成显示质量的下降。 从上面的理论介绍,我们就清楚了DVI接口的优点,那在实际使用中,DVI接口有什么优势呢?总结起来DVI接口具有主要有以下两大优点:1):速度快:DVI传输的是数字信号,数字图像信息不需经过任何转换,就会直接被传送到显示设备上,因此减少了数字→模拟→数字繁琐的转换过程,大大节省了时间,因此它的速度更快,有效消除拖影现象,而且使用DVI进行数据传输,信号没有衰减,色彩更纯净,更逼真。 2)画面清晰:计算机内部传输的是二进制的数字信号,使用VGA接口连接液晶显示器的话就需要先把信号通过显卡中的D/A(数字/模拟)转换器转变为R、G、B三原色信号和行、场同步信号,这些信号通过模拟信号线传输到液晶内部还需要相应的A/D(模拟/数字)转换器将模拟信号再一次转变成数字信号才能在液晶上显示出图像来。 在上述的D/A、A/D转换和信号传输过程中不可避免会出现信号的损失和受到干扰,导致图像出现失真甚至显示错误,而DVI接口无需进行这些转换,避免了信号的损失,使图像的清晰度和细节表现力都得到了大大提高。 早期的LCD,带DVI接口的LCD普遍比较贵,那时只有高端的产品,才带有DVI接口,但现在随着LCD价格的狂降,带DVI接口的产品,价格已和只带VGA接口的LCD接轨了,既然这样,那我们为什么不购买采用这新技术的产品呢?而且DVI在以后的应用上,也会越来越广的.有些LCD使用VGA很容易出现水波纹.
发表评论