大麦网架构入淘史

大麦网架构入淘史
www.zeeklog.com  - 大麦网架构入淘史

大麦网票务系统是它得以在市场立足的基石,由于发展多年,系统中已沉淀了很多业务逻辑。

但早期的大麦网其实是单体系统,内部虽然有一些模块拆分,但整体看还没有满足服务化拆分的效果。所以单体系统所需要面对的问题都会遇到,如维护性差、系统伸缩性差、特别是围绕于票务库存的查询与扣减功能是整个系统的瓶颈。

好的系统不止需要跟得上业务迭代,还需要跟得上技术的发展节奏,只有这样才不会随着时间发展慢慢恶化。

随着阿里对大麦的收购,大麦原有的交易平台开始入淘,商品与交易底层全部是基于阿里共享电商平台实现。阿里电商平台主要包括用户、商品、营销、交易、支付等全链路的交易能力,经历过高并发、高流量的场景。

针对于库存场景还存在一个问题,就是数据热点问题,采用了热点离散算法,根据业务数据将相关的库存记录分散到多个库的多个表中,分散单库的行锁压力。同时在某个数据库存扣减达到一定量级触发阈值时,会将额外的并发扣减请求降级为串行扣减请求,保障数据库的高稳定性。

因为票务库存是对物理世界作为的映射,具有比较大的稀缺性,一旦出现不一致问题,在现实世界中就很难解决。所以采用了大事务拆分及实时对账方式保证数据库操作的一致性,防止任何数量的不一致情况发生。

由于日常流量和大促流量差异较大,所以需要具备流量感知并实时扩容的能力,所以通过流量数据、IP热度数据等对大促项目进行预测分析其可能达到的量级,针对于量级给出相应的资源配置,最终决定是否进行扩容或保持现状。

由于大部分故障是由于变更引起的,而变更每天都在发生,如何持续保障系统线上稳定呢?

对于可能产生大事故的事情,做了安全生产红线。线下对红线相关修改进线cr及测试度覆盖,线上对红线相关功能进行实时巡检。同时组织定期全链路压测、故障演练以持续保障线上链路稳定可靠。

在运维层面将所有热门有关的预案执行完全自动化,防止忘记执行预案而产生稳定性问题。对于资源利用、动态扩缩容来说,自动化是最好的方式。但挑战点在于能否准确预测、以及快速扩容,这些都是需要不断探索的。

随着大麦网架构的不断迭代,在解决了基础技术问题及架构问题后,大麦也买入了中台架构阶段。

大麦票务中台主要聚焦于演出票和电影票,在票务视角看,大麦需要支持多个票务类目,但在用户视角看,需要提供一致的最佳体验。对于中台来说肯定先建设通用能力,来支持好大部分类目,会导致一些类目差异点较多,这也是很多中台类系统普遍面对的问题。

综上来说,做好一个领域的架构,不仅需要在技术上有很好的积累,还需要从管理到业务都有非常好的思考。

技术上需要有架构能力、中台建设能力、业务建模能力、架构演进设计能力,可以解决高并发、分布式等技术难题。

最好的了解业务的一种方式就是解决不断出现的问题,并且在解决问题过程中深挖问题本质,这样可以促使你快速了解业务。

技术团队需要对于业务和行业有深刻的理解,这样设计出来的系统才可以适应业务和行业的变化,并且在方案落地过程中,为未来业务的发展空间留有余地。每个研发同学都需要思考几年后系统会变成什么样,促使同学共同思考。

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk