电商网站中推出的活动如何与功能程序解耦

2016-05-15 13:42:52 +08:00
 501956430

各位在产品中的推出的新活动是如何做到与程序功能解耦的? 如何解耦,使用什么技术或方式来解耦?

如 1 、新用户注册,送 5 张不同额度的优惠券。 2 、新用户第一次购买的商品全部打 5 折。 3 、如 P2P 网站邀请好友赠送 10000 虚拟体验金。

个人认为活动程序肯定不是跟功能程序绑定在一块的。如果绑定在一块,每次更新新的活动或者之前的活动下架都需要重新修改代码发布。 我想到的实现活动跟程序功能解耦,使用分布式消息中间件可以来做如 kafka ,想知道大家是如何思考的如何实现解耦的.

2690 次点击
所在节点    程序员
11 条回复
zhangfan
2016-05-15 16:27:59 +08:00
很好。我想也了解一下。
501956430
2016-05-15 16:59:17 +08:00
人呢? 是问题太深了还是缺少大牛?
iwillhappy1314
2016-05-15 22:07:24 +08:00
参考一下 WordPress 的 action
domty
2016-05-16 10:27:05 +08:00
这种行为本身就是串行的吧。你看用链式执行的方法行不行
就像 java web 的过滤器一样。每个结点完成执行下一顺序结点的操作。给每个链条设置一个开关,决定结点行为是否执行。整个链条独享一个数据库事务。
链式的注册可以依赖缓存。

只是我觉得如果业务规模不大的话我是会直接用代理把业务合并的,反正新业务上线都是要有新代码的,线上需要重新部署。
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 ,查看是否有 活动策略。
SlipStupig
2016-05-16 13:20:57 +08:00
用关系型数据库就能解决,用户信息表数据库关联一张活动表,过程分解:
1.而每个活动都有个活动 ID ,活动 ID 对应的有到期时间
2.用户表有个标志是否使用过优惠券券,如果为 False ,那提交价格的订单减少 50%(为了可定制,你可以写存储过程来计算不同的优惠方式,或者用 trigger 来触发优惠活动,无非就优惠和赠送两种,就算是涨价也是一个原理)
3.推广链接绑定推广用户(链接参数中带用户 ID 号或 alias ),这个过程用 trigger 直接触发就行,链接有个有效日期,可以写个存储过程定期清理,也可以用程序逻辑控制

关于反查推广链就更简单了,用户如果绑定了推广用户户,一次查询就能查询完成了
这个过程基本上不需要自己的 APP 参与,数据库设计好就行
501956430
2016-05-16 13:42:37 +08:00
@iwillhappy1314 不懂 phPHP
501956430
2016-05-16 13:43:55 +08:00
@domty 跟功能代码绑定在一起,每次上下线都需要修改,风险太大了,比如改错了
flydogs
2016-05-16 13:54:42 +08:00
开发程序时先预备各种钩子。
以后有新活动就挂上,结束就卸下。
501956430
2016-05-16 14:03:32 +08:00
@SlipStupig 有没一些在架构设计上来考虑肿么解决呢! 要是数据库层面上来解决一些复杂的算法不是太合适吧
501956430
2016-05-16 14:05:58 +08:00
@flydogs 是的 这算是一种解决方案 就是每次都需要去加或者减

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278753

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX