Web系统大规模并发——电商秒杀与抢购

[gray-cue]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。[/gray-cue]
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因?
一、大规模并发带来的挑战
在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。我们现在一起来讨论下,优化的思路和方法哈。
1. 请求接口的合理设计3

一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。

通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”,在最短的时间里返回用户的请求结果。为了实现尽可能快这一点,接口的后端存储使用内存级别的操作会更好一点。仍然直接面向MySQL之类的存储是不合适的,如果有这种复杂业务的需求,都建议采用异步写入。
547821ba53d6d_middle
当然,也有一些秒杀和抢购采用“滞后反馈”,就是说秒杀当下不知道结果,一段时间后才可以从页面中看到用户是否秒杀成功。但是,这种属于“偷懒”行为,同时给用户的体验也不好,容易被用户认为是“暗箱操作”。

2. 高并发的挑战:一定要“快”

我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。

那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):

20*500/0.1 = 100000 (10万QPS)

咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。

就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后,我们选择内存操作级别的存储的Redis,在高并发的状态下,存储的响应时间至关重要。网络带宽虽然也是一个因素,不过,这种请求数据包一般比较小,一般很少成为请求的瓶颈。负载均衡成为系统瓶颈的情况比较少,在这里不做讨论哈。

那么问题来了,假设我们的系统,在5w/s的高并发状态下,平均响应时间从100ms变为250ms(实际情况,甚至更多):

20*500/0.25 = 40000 (4万QPS)

于是,我们的系统剩下了4w的QPS,面对5w每秒的请求,中间相差了1w。

然后,这才是真正的恶梦开始。举个例子,高速路口,1秒钟来5部车,每秒通过5部车,高速路口运作正常。突然,这个路口1秒钟只能通过4部车,车流量仍然依旧,结果必定出现大塞车。(5条车道忽然变成4条车道的感觉)

同理,某一个秒内,20*500个可用连接进程都在满负荷工作中,却仍然有1万个新来请求,没有连接进程可用,系统陷入到异常状态也是预期之内。
547821ee2d1ee_middle

其实在正常的非高并发的业务场景中,也有类似的情况出现,某个业务请求接口出现问题,响应时间极慢,将整个Web请求响应时间拉得很长,逐渐将Web服务器的可用连接数占满,其他正常的业务请求,无连接进程可用。

更可怕的问题是,是用户的行为特点,系统越是不可用,用户的点击越频繁,恶性循环最终导致“雪崩”(其中一台Web机器挂了,导致流量分散到其他正常工作的机器上,再导致正常的机器也挂,然后恶性循环),将整个Web系统拖垮。

3. 重启与过载保护
如果系统发生“雪崩”,贸然重启服务,是无法解决问题的。最常见的现象是,启动起来后,立刻挂掉。这个时候,最好在入口层将流量拒绝,然后再将重启。如果是redis/memcache这种服务也挂了,重启的时候需要注意“预热”,并且很可能需要比较长的时间。

秒杀和抢购的场景,流量往往是超乎我们系统的准备和想象的。这个时候,过载保护是必要的。如果检测到系统满负载状态,拒绝请求也是一种保护措施。在前端设置过滤是最简单的方式,但是,这种做法是被用户“千夫所指”的行为。更合适一点的是,将过载保护设置在CGI入口层,快速将客户的直接请求返回。

二、作弊的手段:进攻与防守
秒杀和抢购收到了“海量”的请求,实际上里面的水分是很大的。不少用户,为了“抢“到商品,会使用“刷票工具”等类型的辅助工具,帮助他们发送尽可能多的请求到服务器。还有一部分高级用户,制作强大的自动请求脚本。这种做法的理由也很简单,就是在参与秒杀和抢购的请求中,自己的请求数目占比越多,成功的概率越高。

这些都是属于“作弊的手段”,不过,有“进攻”就有“防守”,这是一场没有硝烟的战斗哈。

1. 同一个账号,一次性发出多个请求
部分用户通过浏览器的插件或者其他工具,在秒杀开始的时间里,以自己的账号,一次发送上百甚至更多的请求。实际上,这样的用户破坏了秒杀和抢购的公平性。

这种请求在某些没有做数据安全处理的系统里,也可能造成另外一种破坏,导致某些判断条件被绕过。例如一个简单的领取逻辑,先判断用户是否有参与记录,如果没有则领取成功,最后写入到参与记录中。这是个非常简单的逻辑,但是,在高并发的场景下,存在深深的漏洞。多个并发请求通过负载均衡服务器,分配到内网的多台Web服务器,它们首先向存储发送查询请求,然后,在某个请求成功写入参与记录的时间差内,其他的请求获查询到的结果都是“没有参与记录”。这里,就存在逻辑判断被绕过的风险。
5478221b71722_middle
应对方案:
在程序入口处,一个账号只允许接受1个请求,其他请求过滤。不仅解决了同一个账号,发送N个请求的问题,还保证了后续的逻辑流程的安全。实现方案,可以通过Redis这种内存缓存服务,写入一个标志位(只允许1个请求写成功,结合watch的乐观锁的特性),成功写入的则可以继续参加。
547822508a00b_middle
或者,自己实现一个服务,将同一个账号的请求放入一个队列中,处理完一个,再处理下一个。

2. 多个账号,一次性发送多个请求

很多公司的账号注册功能,在发展早期几乎是没有限制的,很容易就可以注册很多个账号。因此,也导致了出现了一些特殊的工作室,通过编写自动注册脚本,积累了一大批“僵尸账号”,数量庞大,几万甚至几十万的账号不等,专门做各种刷的行为(这就是微博中的“僵尸粉“的来源)。举个例子,例如微博中有转发抽奖的活动,如果我们使用几万个“僵尸号”去混进去转发,这样就可以大大提升我们中奖的概率。

这种账号,使用在秒杀和抢购里,也是同一个道理。例如,iPhone官网的抢购,火车票黄牛党。
547822740404f_middle
应对方案:
这种场景,可以通过检测指定机器IP请求频率就可以解决,如果发现某个IP请求频率很高,可以给它弹出一个验证码或者直接禁止它的请求:

[p2em]弹出验证码,最核心的追求,就是分辨出真实用户。因此,大家可能经常发现,网站弹出的验证码,有些是“鬼神乱舞”的样子,有时让我们根本无法看清。他们这样做的原因,其实也是为了让验证码的图片不被轻易识别,因为强大的“自动脚本”可以通过图片识别里面的字符,然后让脚本自动填写验证码。实际上,有一些非常创新的验证码,效果会比较好,例如给你一个简单问题让你回答,或者让你完成某些简单操作(例如百度贴吧的验证码)。[/p2em]
[p2em]直接禁止IP,实际上是有些粗暴的,因为有些真实用户的网络场景恰好是同一出口IP的,可能会有“误伤“。但是这一个做法简单高效,根据实际场景使用可以获得很好的效果。[/p2em]

3. 多个账号,不同IP发送不同请求
所谓道高一尺,魔高一丈。有进攻,就会有防守,永不休止。这些“工作室”,发现你对单机IP请求频率有控制之后,他们也针对这种场景,想出了他们的“新进攻方案”,就是不断改变IP。
5478229f6aa52_middle

有同学会好奇,这些随机IP服务怎么来的。有一些是某些机构自己占据一批独立IP,然后做成一个随机代理IP的服务,有偿提供给这些“工作室”使用。还有一些更为黑暗一点的,就是通过木马黑掉普通用户的电脑,这个木马也不破坏用户电脑的正常运作,只做一件事情,就是转发IP包,普通用户的电脑被变成了IP代理出口。通过这种做法,黑客就拿到了大量的独立IP,然后搭建为随机IP服务,就是为了挣钱。
应对方案:
说实话,这种场景下的请求,和真实用户的行为,已经基本相同了,想做分辨很困难。再做进一步的限制很容易“误伤“真实用户,这个时候,通常只能通过设置业务门槛高来限制这种请求了,或者通过账号行为的”数据挖掘“来提前清理掉它们。

僵尸账号也还是有一些共同特征的,例如账号很可能属于同一个号码段甚至是连号的,活跃度不高,等级低,资料不全等等。根据这些特点,适当设置参与门槛,例如限制参与秒杀的账号等级。通过这些业务手段,也是可以过滤掉一些僵尸号。
4. 火车票的抢购
看到这里,同学们是否明白你为什么抢不到火车票?如果你只是老老实实地去抢票,真的很难。通过多账号的方式,火车票的黄牛将很多车票的名额占据,部分强大的黄牛,在处理验证码方面,更是“技高一筹“。

高级的黄牛刷票时,在识别验证码的时候使用真实的人,中间搭建一个展示验证码图片的中转软件服务,真人浏览图片并填写下真实验证码,返回给中转软件。对于这种方式,验证码的保护限制作用被废除了,目前也没有很好的解决方案。

547822ce2f038

因为火车票是根据身份证实名制的,这里还有一个火车票的转让操作方式。大致的操作方式,是先用买家的身份证开启一个抢票工具,持续发送请求,黄牛账号选择退票,然后黄牛买家成功通过自己的身份证购票成功。当一列车厢没有票了的时候,是没有很多人盯着看的,况且黄牛们的抢票工具也很强大,即使让我们看见有退票,我们也不一定能抢得过他们哈。

547822fbe13a0

最终,黄牛顺利将火车票转移到买家的身份证下。
解决方案:
并没有很好的解决方案,唯一可以动心思的也许是对账号数据进行“数据挖掘”,这些黄牛账号也是有一些共同特征的,例如经常抢票和退票,节假日异常活跃等等。将它们分析出来,再做进一步处理和甄别。

三、高并发下的数据安全
我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用MySQL的。秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发送过多的情况。我们也曾经听说过,某些电商搞抢购活动,买家成功拍下后,商家却不承认订单有效,拒绝发货。这里的问题,也许并不一定是商家奸诈,而是系统技术层面存在超发风险导致的。
1. 超发的原因
假设某个抢购场景中,我们一共只有100个商品,在最后一刻,我们已经消耗了99个商品,仅剩最后一个。这个时候,系统发来多个并发请求,这批请求读取到的商品余量都是99个,然后都通过了这一个余量判断,最终导致超发。(同文章前面说的场景)
54782328bb155_middle

在上面的这个图中,就导致了并发用户B也“抢购成功”,多让一个人获得了商品。这种场景,在高并发的情况下非常容易出现。
2. 悲观锁思路
解决线程安全的思路很多,可以从“悲观锁”的方向开始讨论。

悲观锁,也就是在修改数据的时候,采用锁定状态,排斥外部请求的修改。遇到加锁的状态,就必须等待。
5478234d530bf_middle
虽然上述的方案的确解决了线程安全的问题,但是,别忘记,我们的场景是“高并发”。也就是说,会很多这样的修改请求,每个请求都需要等待“锁”,某些线程可能永远都没有机会抢到这个“锁”,这种请求就会死在那里。同时,这种请求会很多,瞬间增大系统的平均响应时间,结果是可用连接数被耗尽,系统陷入异常。
3. FIFO队列思路
那好,那么我们稍微修改一下上面的场景,我们直接将请求放入队列中的,采用FIFO(First Input First Output,先进先出),这样的话,我们就不会导致某些请求永远获取不到锁。看到这里,是不是有点强行将多线程变成单线程的感觉哈。
547823786991a_middle
然后,我们现在解决了锁的问题,全部请求采用“先进先出”的队列方式来处理。那么新的问题来了,高并发的场景下,因为请求很多,很可能一瞬间将队列内存“撑爆”,然后系统又陷入到了异常状态。或者设计一个极大的内存队列,也是一种方案,但是,系统处理完一个队列内请求的速度根本无法和疯狂涌入队列中的数目相比。也就是说,队列内的请求会越积累越多,最终Web系统平均响应时候还是会大幅下降,系统还是陷入异常。
4. 乐观锁思路
这个时候,我们就可以讨论一下“乐观锁”的思路了。乐观锁,是相对于“悲观锁”采用更为宽松的加锁机制,大都是采用带版本号(Version)更新。实现就是,这个数据所有请求都有资格去修改,但会获得一个该数据的版本号,只有版本号符合的才能更新成功,其他的返回抢购失败。这样的话,我们就不需要考虑队列的问题,不过,它会增大CPU的计算开销。但是,综合来说,这是一个比较好的解决方案。
547823d8e0db8_middle

有很多软件和服务都“乐观锁”功能的支持,例如Redis中的watch就是其中之一。通过这个实现,我们保证了数据的安全。
四、小结
互联网正在高速发展,使用互联网服务的用户越多,高并发的场景也变得越来越多。电商秒杀和抢购,是两个比较典型的互联网高并发场景。虽然我们解决问题的具体技术方案可能千差万别,但是遇到的挑战却是相似的,因此解决问题的思路也异曲同工。

PHP解决抢购、抽奖等阻塞式高并发库存防控超量的思路方法

如今在电商行业里,秒杀抢购活动已经是商家常用促销手段。但是库存数量有限,而同时下单人数超过了库存量,就会导致商品超卖甚至库存变负数的问题。
又比如:抢购火车票、论坛抢楼、抽奖乃至爆红微博评论等也会引发阻塞式高并发问题。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢?
这里提出个人认为比较可行的几个思路方法:
方案一:使用消息队列来实现
可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧
比如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得 商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可 以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。
方案二:当有多台服务器时,可以采用分流的形式实现
假设有m张票, 有n台产品服务器接收请求,有x个请求路由服务器随机转发
直接给每台产品服务器分配 m/n张票
每台产品服务器内存做计数器,比如允许m/n*(1+0.1)个人进来。
当内存计数器已满:
后面进的人, 直接跳到到转到活动结束的静态页面,
通知路由服务器,不在路由到这台服务器(这个值得商讨)。
所有产品服务器进来的m/n*(1+0.1)个人再全部转发到一台付款服务器上,进入付款环节,看谁手快了,这时候人少,加锁什么的就简单的。
方案三、如果是单服务器,可以使用Memcache锁来实现
product_key 为票的key
product_lock_key 为票锁key
当product_key存在于memcached中时,所有用户都可以进入下单流程。
当进入支付流程时,首先往memcached存放add(product_lock_key, “1″),
如果返回成功,进入支付流程。
如果不成,则说明已经有人进入支付流程,则线程等待N秒,递归执行add操作。
方案四、借助文件排他锁
在处理下单请求的时候,用flock锁定一个文件,如果锁定失败说明有其他订单正在处理,此时要么等待要么直接提示用户”服务器繁忙”
本文要说的是第4种方案,大致代码如下
阻塞(等待)模式:

<?php
$fp = fopen("lock.txt", "w+");
if(flock($fp,LOCK_EX))
{
//..处理订单
flock($fp,LOCK_UN);
}
fclose($fp);
?>
非阻塞模式:
<?php
$fp = fopen("lock.txt", "w+");
if(flock($fp,LOCK_EX | LOCK_NB))
{
//..处理订单
flock($fp,LOCK_UN);
}
else
{
echo "系统繁忙,请稍后再试";
}
fclose($fp);

axure学习之原件焦点控制,设置条件操作与动态面板使用

一、焦点控制使用
在使用焦点控制时应该为原件取一个名字,方便区分,如下图所示,给密码输入框设置焦点

1

二、条件控制的使用
1,条件控制类似编程语言中的流程控制语句,if,else if,在使用时,可以使用如下图方式来写流程控制:
20160513232235
2,条件控制语句的切换如下图所示,在条件判断语句点击右键:
20160513232441

三、动态面板
1,动态面板可以看做是原件容器,他是多空间的,有多少状态就有多少空间。例如html中的某个div,需要实现隐藏,显示此div,在axure中就可以将选中的原件转换为动态面板,之后勾选编辑器右上方的隐藏选项之后此动态面板下的所有
原件就会隐藏。可以使用如下图所示的功能来实现隐藏显示的效果:
20160513232958
2,移动动态面板,实现抖动效果,例如wrodpress的登录失败时的窗口抖动效果:
20160513233734

axure学习之axure页面与原件相关的功能模块

一、axure功能模块简介

axure功能模块简介图
1,页面
[p2em]对原型所有页面的管理,添加,删除,添加子页面等等[/p2em]
2,元件库
[p2em]可进行原件库的自定义,以及已定义原件的管理。此处主要是html中的一些控件,比如按钮,图片,矩形等等[/p2em]
3,母版
[p2em]此处主要是一些公共的东西,例如网页中常见的网页头部尾部布局,和一些通用的功能模块,可在此处进行管理与编辑[/p2em]
4,检视:页面
[p2em]样式:主要是对页面或元素进行样式设置,例如html中的css对页面的控制[/p2em]
[p2em]说明:添加对页面的文字说明[/p2em]
[p2em]属性:类似html中常见的一些事件,如鼠标停留,划过,按下,连接跳转交互。例如鼠标放上后显示文字提示,可在本选项的最下边“原件提示”中设置[/p2em]
4,概要页面
[p2em]此处可对当前页面上的所有原件进行筛选,管理[/p2em]

产品经理学习课程总结

一、产品经理基础概念

20160512201323

二、产品经理的工作职责

20160512201436

三、产品经理的自我管理能力
20160512201543

四、产品经理的文案撰写能力
• BRD文档(这事儿不错,要给领导汇报,并说明做这个事情的好处与资源)
• MRD文档(是BRD文档的延伸解释和方法与计划,怎么做,为什么这么做)
• PRD文档(基于技术层面的,研发的需求,包括功能性与非功能性,UML相关)!
• 把文档看作一个产品,把目标看作用户,用产品的思路来打造你的文档
20160512201721

五、用户体验设计

用户体验设计

六、用户体验的分类和要素

用户体验的分类和要素

七、交互设计

交互设计

互联网产品的交互设计

一、交互设计之父比尔.莫格里奇

20160512195128
• 比尔·∙莫格里奇、比尔·∙莫格里吉1943年6月25日-2012年9月8日离世,享年69岁。
• 英国知名产品设计师,工业设计教授,交互设计书籍作者,同时也是工业设计顾问公司IDEO的创办人,以及 美国古柏惠特设计博物馆的指导长。他以采纳人性工程的工业设计理论著名,同时也是现今产品设计主流理 论的开发者。
• 他在1979年设计出的第一台贝壳式笔记本电脑“Grid  Compass”,至今仍是可携电脑的主流外型,该产品 曾荣获2010年,有英国设计奥斯卡之称的菲利浦亲王设计奖(Prince  Philip  Designers  Prize)。
• 交互设计(Interaction  Design)  作为一门关注交互体验的新学科在二十世纪八十年代产生了,莫格里奇在 1984年一次设计会议上提出,开始命名为“软面(Soft  Face)”,由于这个名字让人想起当时流行的玩具“椰 菜娃娃(Cabbage  Patch  doll)”,他后来把它更名为“Interaction  Design”

二、交互设计简述
[p2em]– 交互设计是人工制品、环境和系统的行为 , 以及传达这种行为的外形元素的设计与定义。 不像传统的设计学科主要关注形式, 最近则是关注内容和内涵 , 而交互设计首先旨在规划 和描述事物的行为方式, 然后描述传达这种行为的最有效形式 。[/p2em]
[p2em]– 交互设计借鉴了传统设计、可用性及工程学科的理论和技术。它是一个具有独特方法和实 践的综合体,而不只是部分的叠加。它也是一门工程学科,具有不同于其它科学和工程学 科的方法。[/p2em]
[p2em]– 交互设计,是用户体验的重要组成部分 (交互设为位于用户体验 
 中的重要位置-结构层。)[/p2em]
[p2em]– 互联网交互设计是指用户使用产品过程中行为输入产品再到产品输出信息的全过程,拿iphone解锁举例:[/p2em]

20160512200031
三、我们经常混淆的概念
[p2em]产品设计(关注的是功能、结构、人因、形态、色彩,环境等设计要素以及采用的技术、方法和功能的实现手段等, 是间接影响产品最终用户的设计)[/p2em]
[p2em]以用户为中心的设计(是在设计过程中以用户体验为设计决策的中心,强调用户优先的设计模式)[/p2em]
[p2em]用户体验(目标,即我们努力应该去为用户创造良好的感受)[/p2em]
[p2em]交互设计(注重产品和使用者行为上的交互以及交互的过程,强调的是设计理念和方法。侧重的是交互双方信息表 达方式和情感,是直接影响产品最终用户的设计)[/p2em]
[p2em]人机交互(人与计算机的交互,交互的对象特指计算机,是交互设计里面的一种。)[/p2em]
[p2em]界面设计(主要指人和机器交互界面的设计。)[/p2em]
[p2em]可用性(评测用户体验的标准)[/p2em]
四、基础的交互方式

20160512200344

五、如何更好的学习交互设计

20160512200619

[p2em]• 首先要明确,交互设计对PM的要求必须是:[/p2em]
[p2em]    – 实战经验[/p2em]
[p2em]    – 要求知识面广[/p2em]
[p2em]• 我们如何更好的学习交互设计,建议练习方式如下:[/p2em]
[p2em]    – 找到一些常见的任务,例如注册,登陆,发布微博等[/p2em]
[p2em]    – 仔细分析用户的特征后,明确目标以后,自己开始手绘交互的流程(手绘比工具快)[/p2em]
[p2em]    – 反复修改,直到你认为已经达到了最简单,最好体验 [/p2em]
[p2em]    – 对比你的设计与真正的现有的优秀产品[/p2em]

六、常用交互设计的原则

常用交互设计的原则

七、交互设计的准则
[p2em]交互设计除了上诉技术上原则以外,还有一些非准则需要注意:[/p2em]
[p2em]    – 有关爱(能体谅人,有帮助。不伤害,改善人的状况)[/p2em]
[p2em]    – 有意图的,  能帮助用户实现他们的目标和渴望[/p2em]
[p2em]    – 注重实效能有效的实现目标[/p2em]
[p2em]    – 注重实效能有效的实现目标(最简单的完整方案,最简单的完整方案,最简单的完整方案)[/p2em]

互联网产品用户体验的要素

一、互联网产品用户体验的五大要素
互联网产品用户体验的五大要素
二、从实际案例看用户体验的设计要素
20160512194300
三、从实际案例看用户体验的设计要素
20160512194408

20160512194503

20160512194559

20160512194631

四、从美拍,看背后的故事

20160512194717

五、用户体验要素的重要性
[p2em]• 是方法– 帮我产品经理更好的理清用户体验脉络[/p2em]
[p2em]• 是依据– 保证产品经理在千变万化的用户体验系统里不走偏[/p2em]
[p2em]• 是逻辑– 帮助产品经理更好的整理与完善产品用户体验[/p2em]

互联网产品的用户体验设计(UED)(下)

互联网产品的用户体验设计(UED)(下)
一、UED团队的常见结构
[p2em]• 产品经理[/p2em]
[p2em]     – 注意,有的团队中并没有完整的UED团队,很多时候产品经理需要承担UED团队里面的部分工作职能,例如交互设计,项目管理等。[/p2em]
[p2em]• 交互设计[/p2em]
[p2em]• 视觉设计[/p2em]
[p2em]• 视觉设计[/p2em]
[p2em]• 项目管理[/p2em]
[p2em]     – 由于一个UED团队可能承载多个UED项目,所以当多个项目在同时的进行的时候,需要有项目管理这个职能来对整个团队进行工作上的组织和管理。[/p2em]

二、UED团队中常见的输出物与用作职责

[p2em]①:产品经理[/p2em]
[p2em]     – 输出[/p2em]
[p2em]          • 用研文档[/p2em]
[p2em]          • 竞品分析文档[/p2em]
[p2em]          • 产品需求与需求分级文档[/p2em]
[p2em]     – 配合工作[/p2em]
[p2em]          • 协助UED相关人员对产品的调性进行把控[/p2em]
[p2em]          • 协助UED相关人员进行测试与组织管理[/p2em]
[p2em]②:交互设计社[/p2em]
[p2em]     – 输出物[/p2em]
[p2em]          • 完整产品原型图含交互设计[/p2em]
[p2em]          • 用户使用流程[/p2em]
[p2em]          • 产品信息结构图[/p2em]
[p2em]     – 配合工作[/p2em]
[p2em]          • 交互测试,测试交互还原度[/p2em]
[p2em]     – 工作 职责[/p2em]
[p2em]          • 为产品设计具体的行为、界面设 计,组织良好的产品信息结构, 提高产品的可用性与易用性[/p2em]
[p2em]③:视觉设计交互设计[/p2em]
[p2em]     – 输出物[/p2em]
[p2em]          • 对产品的界视觉设计稿[/p2em]
[p2em]          • 竞品风格调研[/p2em]
[p2em]          • 设计规范[/p2em]
[p2em]          • 概念设计说明[/p2em]
[p2em]          • 产品流程中界面还原度全程评估审核[/p2em]
[p2em]     – 配合工作[/p2em]
[p2em]          • 视觉测试,测试视觉还原度[/p2em]
[p2em]     – 职责[/p2em]
[p2em]          • 面呈现,美观度,体验,品牌形象设计负责[/p2em]
[p2em]④:页面重构狮[/p2em]
[p2em]     – 输出物[/p2em]
[p2em]          • 静态网页 [/p2em]
[p2em]          • 静态页面规范说明(CSS,复用,性能,兼容性等)[/p2em]
[p2em]     – 配合工作[/p2em]
[p2em]          • 页面测试工作,测试页面还原度[/p2em]
[p2em]          • 兼容性测试 [/p2em]
[p2em]          • 页面性能优化[/p2em]
[p2em]     – 职责[/p2em]
[p2em]          • 面呈现,美观度,体验,品牌形象设计负责[/p2em]

三、互联网产品的用户体验分类
[p2em]①:感官体验(呈现给用户试听上面的体验,强调舒适性,一般包括但不限于):[/p2em]
[p2em]     设计风格,网站LOGO,页面速度[/p2em]
[p2em]     页面布局,页面色彩,动画效果[/p2em]
[p2em]     页面导航,图片展示,图标使用[/p2em]
[p2em]     广告位,背景音乐,等…[/p2em]
[p2em]②:交互体验(呈现给用户操作上的体验,强调易用/可用性,一般包括但不限于):[/p2em]
[p2em]     会员申请,会员注册,表单填写[/p2em]
[p2em]     表单提交,按钮设置,点击提示[/p2em]
[p2em]     错误提示,在线问答,意见反馈[/p2em]
[p2em]     在线调查,在线搜索,页面刷新[/p2em]
[p2em]     资料安全,显示路径,等……[/p2em]
[p2em]③:浏览体验(呈现给用户浏览上的体验,强调吸引性,一般包括但不限于):[/p2em]
[p2em]     栏目的命名,栏目的层级,内容的分类[/p2em]
[p2em]     内容的丰富性 ,内容的丰富性 ,信息的更新频率[/p2em]
[p2em]     信息的编写方式 ,精彩内容的推荐,相关内容的推荐[/p2em]
[p2em]     收藏夹的设置,栏目的订阅,信息的搜索[/p2em]
[p2em]     文字排列,文字字体,页面底色[/p2em]
[p2em]     页面的长度,分页浏览,等…[/p2em]
[p2em]④:情感体验(呈现给用户心理上的体验,强调友好性以及与用户关系的维系,一般包括但不限于):[/p2em]
[p2em]     友好提示,会员交流,售后反馈[/p2em]
[p2em]     会员优惠 ,会员推荐 ,鼓励用户参与[/p2em]
[p2em]     会员活动,专家答疑,邮件/短信问候[/p2em]
[p2em]     网站地图,等…[/p2em]
[p2em]⑤:价值体验(呈现给用户心理上的体验,强调友好性以及与用户关系的维系,一般包括但不限于):[/p2em]
[p2em]     基础价值(能勾兑妹子),超于基础价值的期望价值(不但能勾兑妹纸,还发现这里有好多好多妹纸可以勾兑!)[/p2em]
[p2em]     附加价值(还能约炮)[/p2em]
[p2em]⑥:信任体验(呈现给用户的信任体验,强调可靠性,包含但不限于):[/p2em]
[p2em]     搜索引擎 ,公司介绍 ,投资者关系 [/p2em]
[p2em]     服务保障 ,文章来源,文章编辑作者[/p2em]
[p2em]     联系方式 ,服务热线,有效的投诉途径[/p2em]
[p2em]     安全及隐私条款,法律声明,网站备案[/p2em]
[p2em]     相关链接 ,帮助中心,等…[/p2em]

互联网产品的用户体验设计(UED)(上)

互联网产品的用户体验设计(UED)

一、用户体验设计(后文简称UED)
[p2em]– User Experience Design[/p2em]
[p2em]– UED的通常理解,就是“我们做的一切都是为了呈现在您眼前的产品”。 [/p2em]
[p2em]– UED是针对用户心灵,眼睛,耳朵,触感的设计。[/p2em]
[p2em]– 用户体验就是用户在使用一款互联网产品的整体感受度。[/p2em]

二、UED相关的一些概念
[p2em]• UE[/p2em]
[p2em]    – User  Experience[/p2em]
[p2em]• UCD [/p2em]
[p2em]    – User-Centered  Designe[/p2em]
[p2em]    – 以用户为中心的设计-强调以用户体验有限的产品设计理念,是一种思想[/p2em]
[p2em]• HCI[/p2em]
[p2em]    – – Human-Computer  Interaction [/p2em]
[p2em]    – 人机交互[/p2em]
[p2em]• GUI[/p2em]
[p2em]    – Graphical  User  Interface [/p2em]
[p2em]    – 图形化用户界面 [/p2em]
[p2em]• WR[/p2em]
[p2em]    – Web  Rebuild[/p2em]
[p2em]    – 网站重构[/p2em]
UED相关的一些概念

三、UED团队的常见职能
[p2em]产品经理职能[/p2em]
[p2em]    • 用户研究[/p2em]
[p2em]    • 竞争对手分析[/p2em]
[p2em]交互设计职能[/p2em]
[p2em]    • 竞争对手分析[/p2em]
[p2em]    • 交互设计相关工作[/p2em]
[p2em]视觉设计职能[/p2em]
[p2em]    • 产品UI[/p2em]
[p2em]    • 产品平面[/p2em]
[p2em]    • 多媒体设计[/p2em]
[p2em]网页重构职能[/p2em]
[p2em]    • 页面重构[/p2em]
[p2em]项目管理职能[/p2em]
[p2em]    • 项目管理[/p2em]

四、互联网产品的UED流程
[p2em]①:产品策划[/p2em]
[p2em]    竞争对手分析[/p2em]
[p2em]    用户研究[/p2em]
[p2em]②:产品交互设计[/p2em]
[p2em]    站点信息架构图[/p2em]
[p2em]    用户使用流程图[/p2em]
[p2em]    产品文案规范[/p2em]
[p2em]    原型设计[/p2em]
[p2em]③:产品视觉设计[/p2em]
[p2em]    视觉设计[/p2em]
[p2em]    视觉设计[/p2em]
[p2em]    产品视觉架构图[/p2em]
[p2em]    视觉规范定制[/p2em]
[p2em]④:产品页面重构[/p2em]
[p2em]    需要视觉设计对重构出来的页面进行确认是否符合当初设计需求[/p2em]
[p2em]⑤:产品研发[/p2em]
[p2em]    UE再优化,测试后回炉加工(限于细节上的优化)[/p2em]
[p2em]⑥:产品测试[/p2em]
[p2em]    是否符合视觉规范[/p2em]
[p2em]    是否符合交互需求[/p2em]
[p2em]    联合调试[/p2em]
[p2em]⑦:产品发布[/p2em]
[p2em]    总结[/p2em]
[p2em]    持续跟踪[/p2em]
[p2em]    性能优化[/p2em]
互联网产品的UED流程

怀念比生命更长久 十首歌里的张国荣

Img443087242

张国荣是这样一个“真”人。他为每首歌编一个故事然后入戏没错,歌中的感情却并非假造,而是真实的生命投射。今天又到了张国荣的忌日。如果他没有从楼顶一跃而下,今年将迎来60岁生日。

我们仰慕那些几乎透明的生命,风雨雷电经过,仍能在竹露荷风中展欢颜。

张国荣是这样一个“真”人。他为每首歌编一个故事然后入戏没错,歌中的感情却并非假造,而是真实的生命投射。

今天又到了张国荣的忌日。如果他没有从楼顶一跃而下,今年将迎来60岁生日。

后期的张国荣破茧成蝶,爱人爱自己爱美爱得光明磊落,却激起他人的敌意。因抑郁离世前他心有不甘,不懂为何没有做错事的自己竟遭遇生不如死的不幸。

可知不甘、不幸是生命的常态。我们痛心于他的失望和苦痛,却长久地从中汲取力量和安慰。

真是惨痛的生命意义。

也许这也是13年过去,依旧有很多人在怀念他的原因。

哥哥的好歌很多,有几首常听不厌,好像深深湖水,路过的时候总能看见不同的天色。

取一隅,十首歌,与君共话。

1.风继续吹(1983)

我劝你早点归去

你说你不想归去

只叫我抱着你

悠悠海风轻轻吹冷却了野火堆

1983年张国荣事业低迷,拿到偶像山口百惠名曲《さょぅならの向ぅ侧》的改编权时,他希望能请到名家填词,于是找到郑国江。唱片公司给他的填词费是500块,郑先生的润笔费则是3000块大洋。

好在郑国江人善又识人,为这位恳切后辈破例打了对折,于是有了这首《风继续吹》,成为张国荣的成名曲。

1983年的歌,1991年又作为《纵横四海》的插曲再一次唱响。

第一句就十分动人。悠悠海风,冷却的野火堆,不肯归去的人儿。张国荣很早便懂得唱歌时情深都在行云流水间。即便歌曲的意境逐渐明亮,从幽邃的大海到追寻过去快乐回忆的金黄蜜色,他依然敏锐地感知到郑生开阔意向里这一刻将永远过去的惆怅。

《风继续吹》传唱至今,因为别离就在这歌里,而别离时时上演。

2.奔向未来的日子(1987)

有情无情不要问我

不理会不追悔不解释 意思

无泪无语 心中鲜血倾出不愿你知

一心一意奔向那未来日子

我以后陪你寻觅 好故事

为《英雄本色》所作的主题曲《当年情》由黄霑作词。黄霑收起一贯的磅礴,作了这样一首情深如脉脉流水的歌。“今日我/与你又试肩并肩”,这一刻默然垂首。但是江湖儿女身不由己,也许只得这一刻。

词曲都内敛,张国荣的演唱反而比平日用力,但是人怎么能挣脱命运。

后来黄霑又为《英雄本色续集》创作了主题曲《奔向未来的日子》。这次相反,黄霑的词决绝凛然,一扫《当年情》的小儿女情怀,不问前尘,不顾鲜血倾出,一心陪你寻觅好故事。

3.共同渡过(1987)

没什么可给你 但求凭这阙歌

谢谢你风雨内 都不退愿陪着我

暂别今天的你 但求凭我爱火

活在你心内 分开也像同渡过

2000年张国荣的“热情演唱会上”,他唱这首歌前微笑着向左右致敬,唱毕却已泪湿双目。

《共同渡过》收录于张国荣离开华星签约新艺宝后的首张专辑《Summer Romance》中。此时主创团队中已没有了他的恩师黎小田。前者一手把他的“鸡仔声”调教成低沉而醇厚的男人嗓,被张国荣视作恩师及干爹。遗憾黎小田为张国荣制作的音乐多为翻唱日本歌曲,方式也日显老旧。

加入新东家后的张国荣请来林振强为这首歌填词,曲却仍翻唱自谷村新司,延续了上一张黎小田为他制作的专辑中同样翻唱自谷村的《有谁共鸣》。这首歌是向恩师致敬,也随着时间被他和歌迷不断沉淀出新的感触。

很温暖的歌,歌曲后半部重复“没什么可给你……分开也像同渡过”,音阶逐段升高。如果愿意,可以一直唱下去。音域愈高,音色就愈沉。控制这首歌未有轻佻地一味向上的不仅是张国荣的歌唱技巧,还有情感的厚度。

临别的祝福被眼泪打湿,内心再不舍,祝福再真切,总免不了黯淡下去。

4.似水流年(1989)

我怀念

怀念往年

外貌早改变

处境都变

情怀未变

依旧是郑国江的词,喜多郎的曲。词曲皆极简,好像传唱多年的民谣,朴素里有真意。

是一首感叹年华易逝,浮世飘零的歌,梅艳芳和张国荣两个版本的编曲却都轻盈干净,净水浮萍踪,萍踪飘零。

梅版声音更刚强,张版则如潮起潮落,然而都唱出“我的心又似小木船/远景不见/但仍向着前”的坚定,以及“谁见命里主宰我/每天挣扎/人海里面”的茫然。

张、梅二人在同一年离世,由他们来唱,才相信“外貌早改变/处境都变/情怀未变”是真的。

5.明星(1989)

当你记起当年往事

你又会如何

可会轻轻淒然叹喟

怀念我在你心中照耀过

由黄霑作词曲的这首歌原本不叫《明星》,而是《当你见到天上星星》。叶德娴之前有过两任演唱者,但是都没有达到黄霑心里的要求,歌曲也并未成功。

直到叶德娴如泣如诉的演绎,才让这首歌出了生天,拥有了新的名字——《明星》。

让它更为传唱的是张国荣1989年收录于《Salute》里的翻唱版本。此时的“谭张争霸”已经收声。谭咏麟宣布不再领奖,张国荣承受更大的压力,萌生退意。

由张国荣来唱这首歌,契合的不仅仅是他真正巨星的身份。他闪耀过,追求过梦想,用善意照亮过人们的心;也失意过,痛哭过。因此相比叶德娴的版本,张国荣版阅尽千帆,静水流深,于无声处潸然泪下。

6.有心人(1996)

但愿我可以没成长

完全凭直觉觅对象

模糊地迷恋你一场

就当风雨下潮涨

如果真的太好 如错看了都好

不想证实有没有过倾慕

《金枝玉叶2》里张国荣为梅艳芳写了这首歌,虽然他们二人和袁咏仪饰演的阿颖陷入不辨雌雄的混乱爱恋,但是情感和歌一样清爽直白,不沾丝毫泥泞。

就像上世纪九十年代的港片,一切皆有可能,黄色滤镜下的浓妆不掩清白刚烈朝气蓬勃,爱恨情仇再浓烈也往往能一笑泯恩仇。

《有心人》唱的是无法言说的爱恋。林夕最擅描写爱情里眼角眉梢的进退,张国荣自己作的曲非常低且舒缓,全凭情深动人。

爱情虽然千回百转,最真实的一刻很可能就在于此。未成长时凭直觉觅爱人,长大后也只有掉落情网时才能重回单纯。模糊的迷恋就当风雨下涨潮,混沌中不计较结果甚至不在意真假。太难得,所以张国荣唱来是叹息的低语,情动的当下已经是过去。

7.红(1996)

红像年华盛放的气焰

红像斜阳渐远的纪念

是你与我纷飞的那副笑脸

如你与我掌心的生命伏线

也像红尘泛过一样明艳

“跨越97演唱会”上,张国荣的红色高跟鞋和绕指千柔的舞姿石破天惊。媒体不识,批评他“妖”。哥哥发怒,认为媒体不懂艺术,如井底之蛙,只会破坏香港的艺术发展。

如果没有这样大的阻力,他也许会成为另一个梅兰芳也未必?

《红》由林夕作词,张国荣谱曲,另一位老搭档C.Y.Kong编曲。这是张国荣由大众偶像到独立艺术家的转变。此时他正视自己,相信自己,决定不再媚俗。

《红》以鲜红的蔷薇为意向勾勒了绝美带刺的哥哥,电子编曲暗流涌动,营造了暴雨前压抑又蓄势待发的氛围。

不仅绝美,而且如露如电,流动如风。这份美留不住,写词时候的林夕也许隐约已明白这一点。

他曾经在哥哥生日宴喝醉骂媒体的时候劝他出门不要乱讲话。哥哥说:“我还有什么要怕,要小心的!”林夕不再多说,但是心里替他担心。他明白这个世界真的是要小心的,不能太大胆。

林夕懂哥哥的芳华绝代。他曾经写道:“(哥哥每年的生日会上)至于哥哥自己呢,就穿得漂亮得不行。如果他不穿成这样,可能会更加漂亮呢!”

这就是二人的不同。一个事事必须做到极致,一个懂得盛极必衰的道理。所以一个早早走了,一个仍在这里和我们一起怀念走了的那个。

8.路过蜻蜓(2000)

让我做只路过蜻蜓

留下能被怀念过程

虚耗着我这便宜生命

我本将心向明月,奈何明月照沟渠。

做别人生命里的蜻蜓,“宁愿同渡流浪旅程/不怕面对这无常生命”。

林夕填词,陈晓娟作曲的这首《路过蜻蜓》首先非常好听,曲调婉转如回旋舞曲。张国荣自言唱歌的时候为这首歌编的故事是一段三角恋,歌者的角色始终是旁观且暗恋的一方。一时苦涩无言,一时又安慰自己,“爱是我的爱,若毫无价值,为何值得流泪?”

若干年后,林夕和陈晓娟再度联手,为陈奕迅写了一首《失忆蝴蝶》,收录在他的《The Key》中。经过那么多年,林夕奋力破自己的迷局,在《失忆蝴蝶》里开篇就“还没有开始/才没有终止/难忘未必永志/还没有心事/才未算相知/难道值得介意”。他借蝴蝶的十秒失忆劝人不如接受遗憾,刹那即永恒。

对人对事,没有执念过,怎么能释然。

9.我(2000)

我就是我

是颜色不一样的烟火

天空海阔

要做最坚强的泡沫

多年来,林夕一直活在“负债”状态中,永远欠这个那个歌手的歌词。他很庆幸的是,张国荣去世前的最后一张专辑分给他的5首词他都完成了,没有欠债。

但是也有后悔,“写下了那么多勾引听众眼泪的歌词,究竟对这个世界有什么意义?”他按照惯常的方式在情感世界里游移,用眼泪证明悲伤的存在,却深悔忽视了张国荣当时的精神和身体状态,一味给他悲伤的词。

但是《我》,林夕不后悔,这是他一生最光荣的一首歌。张国荣给了林夕题眼,“I am what I am”,他为他续上“我永远都爱这样的我”。哥哥这一次未唱情爱,而是勇敢袒露自己。

樱花式的壮美,既自豪宣告“我就是我/是颜色不一样的烟火/天空海阔/要做最坚强的泡沫”。又不惧粉身碎骨,“对世界说/什么是光明和磊落”。林夕佩服他的为人,要他唱给世人听。

张国荣自己也极爱这首歌,“热情演唱会”上场场都要唱两遍,中间一遍,结尾一遍。

明明悲壮,张国荣却唱得优雅悠长。以优雅和磊落对抗粗暴又纷呈的世界,这首歌是座右铭。

10.梦到内河(2001)

在内河上 我在内河上 望着沿岸高潮

快救活我 温暖我十秒 快将我怨念传召

谁还在内河上 犹如做梦那样 但奈何没有天桥

跨不过这双臂膀 会将你壮丽忘掉 如果有这需要

《我》和《梦到内河》就像硬币的两面,前者是他和外界的关系,后者是他和自己的关系。

林夕为他写了一首绝惨的歌词,C.Y.Kong作了一阙冷清又风急的曲。

歌词和张国荣执导的MV一样难懂。他拒绝解释,告诉大家看到是什么样就是什么样。

多年来解读纷纷,有按照字句意思理解为苦恋的;有将MV中的张国荣和舞者(西岛千博)视为人与自恋、自我的关系;亦有将之看作纳西索斯的故事,一个是水中天鹅,一个是池畔自恋少年,最终沉入镜花水月。

这支MV当年在香港遭到禁播,理由是强调男色。在世俗的世界里,仅仅美很容易不被理解。

即使宽容,也很难理解他的作品不是吗?

文字难以讲述,这首歌和MV有吸引人一遍遍听/看的魔力。这是情感和艺术做到极致的缘故,因此危险。

张国荣死后,C.Y.Kong和林夕这对黄金组合继续在乐坛放光彩。得知哥哥死讯后,悲伤的C.Y.Kong作了一曲《Depression》,后来被黄伟文填词,变成《浮夸》。

可知怀念的生命力比生命本身长久。哥哥若知道,会否略觉安慰。

________来自搜狐