各位在产品中的推出的新活动是如何做到与程序功能解耦的? 如何解耦,使用什么技术或方式来解耦?
如 1 、新用户注册,送 5 张不同额度的优惠券。 2 、新用户第一次购买的商品全部打 5 折。 3 、如 P2P 网站邀请好友赠送 10000 虚拟体验金。
个人认为活动程序肯定不是跟功能程序绑定在一块的。如果绑定在一块,每次更新新的活动或者之前的活动下架都需要重新修改代码发布。 我想到的实现活动跟程序功能解耦,使用分布式消息中间件可以来做如 kafka ,想知道大家是如何思考的如何实现解耦的.
1
zhangfan 2016-05-15 16:27:59 +08:00
很好。我想也了解一下。
|
2
501956430 OP 人呢? 是问题太深了还是缺少大牛?
|
3
iwillhappy1314 2016-05-15 22:07:24 +08:00
参考一下 WordPress 的 action
|
4
domty 2016-05-16 10:27:05 +08:00
这种行为本身就是串行的吧。你看用链式执行的方法行不行
就像 java web 的过滤器一样。每个结点完成执行下一顺序结点的操作。给每个链条设置一个开关,决定结点行为是否执行。整个链条独享一个数据库事务。 链式的注册可以依赖缓存。 只是我觉得如果业务规模不大的话我是会直接用代理把业务合并的,反正新业务上线都是要有新代码的,线上需要重新部署。 |
5
ango 2016-05-16 12:52:36 +08:00
表 1 :活动(名称,有效期,全场|商品分类)
表 2 :策略(新人|首单|5 折,全员|满 5 件|8.8 折) 表 3 :活动策略(表 1 - 表 2 , 1:1 或者 1:n 关系) 将上面的关系梳理,并 SOA 服务 API 化。 单品、购物车、结算台, hook/action 一下 SOA 的 api ,查看是否有 活动策略。 |
6
SlipStupig 2016-05-16 13:20:57 +08:00
用关系型数据库就能解决,用户信息表数据库关联一张活动表,过程分解:
1.而每个活动都有个活动 ID ,活动 ID 对应的有到期时间 2.用户表有个标志是否使用过优惠券券,如果为 False ,那提交价格的订单减少 50%(为了可定制,你可以写存储过程来计算不同的优惠方式,或者用 trigger 来触发优惠活动,无非就优惠和赠送两种,就算是涨价也是一个原理) 3.推广链接绑定推广用户(链接参数中带用户 ID 号或 alias ),这个过程用 trigger 直接触发就行,链接有个有效日期,可以写个存储过程定期清理,也可以用程序逻辑控制 关于反查推广链就更简单了,用户如果绑定了推广用户户,一次查询就能查询完成了 这个过程基本上不需要自己的 APP 参与,数据库设计好就行 |
7
501956430 OP @iwillhappy1314 不懂 phPHP
|
9
flydogs 2016-05-16 13:54:42 +08:00 via iPhone
开发程序时先预备各种钩子。
以后有新活动就挂上,结束就卸下。 |
10
501956430 OP @SlipStupig 有没一些在架构设计上来考虑肿么解决呢! 要是数据库层面上来解决一些复杂的算法不是太合适吧
|