公司:得物
得物,原名“毒”,是中华人民共和国上海市上海识装信息科技有限公司推出的一个电商手机应用。第三方商家和个人可以入驻得物平台与其他用户进行交易。
富媒体在客服IM消息通信中的秒发实践
跟普通的文本传输相比,富媒体可以直观的让用户了解到消息内容,但是在传输过程中也面临着文件大、内存消耗大、传输过程漫长等问题。
近邻搜索算法浅析
随着深度学习的发展和普及,很多非结构数据被表示为高维向量,并通过近邻搜索来查找,实现了多种场景的检索需求,如人脸识别、图片搜索、商品的推荐搜索等。另一方面随着互联网技术的发展及5G技术的普及,产生的数据呈爆发式增长,如何在海量数据中精准高效的完成搜索成为一个研究热点,各路前辈专家提出了不同的算法,今天我们就简单聊下当前比较常见的近邻搜索算法。
社区收藏缓存设计重构实战
社区收藏业务是一个典型的读多写少的场景,社区各种核心Feeds流都需要依赖用户是否收藏的数据判断,早期缓存设计时由于流量不是很大,未体现出明显的问题,近期通过监控平台等相关手段发现了相关的一些问题。
得物客服IM消息通信SDK自研之路
随着公司业务的快速发展,客服对IM聊天的性能和体验都有了更高的要求,第三方SDK消息通信逐渐遇到了瓶颈,为解决第三方SDK接入带来的潜在隐患、提升IM的稳定性和高扩展性,自研一套可控、稳定、灵活的IM系统已是无法避开的一条道路了。
社区点赞业务缓存设计优化探索
内容点赞业务在得物社区中是一个非常高频的业务场景,功能本身复杂度不高,但是业务场景多、qps高、而且由于社区的用户体量,整体点赞的数据量非常大。其中最核心、对响应性能要求最高的主要是“用户是否点赞内容”和“内容点赞数”场景。
SCA在得物DevSecOps平台上应用
SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。
服务间歇性停顿问题优化
作为CMS替代品的G1,一直吸引着众多Java开发者的目光。G1的目标是在满足期望的停顿时间的同时保存高吞吐量,适用于多核、大内存的系统。
Db层治理:SQL精细化及并发更新数据丢失问题解决最佳实践
Db层治理工作一直在路上,完成全面梳理改造只是迈出的第一步,一个好的规范如何进行推进下去,让大家保持统一的规范,随着时间的推移,这种规范能够继续保持不走样,是我们需要思考的问题。
巧用RoaringBitMap处理海量数据内存diff问题
随着得物App和商品体量的快速发展,圈选场景的商品集也在迅速膨胀,这些海量数据如何在不拖垮服务内存的前提下进行内存diff,一直是困扰在我们的难题,最终通过引入RoadingBitMap很好的解决了海量数据内存diff的问题。
JVM内存Dump原理与在线分析实战
当前我们微服务容器化部署JVM 实例很多,常常需要进行JVM heap dump analysis,为了提升JVM 问题排查效率,得物技术保障团队研究了JVM内存Dump 原理与设计开发了JVM 内存在线分析。
得物客服热线的演进之路
随着客服域章鱼工作台的独立孵化,热线作为重要的一部分,从工单迁移至章鱼工作台,这个时候的章鱼只能接打电话,查询基本信息,因为从工单迁移出来失去了和工单的绑定,因此与工单的重新结合,成为热线的一个里程碑式升级。
分类TAB商品流多目标排序模型的演进
分类TAB商品流是得物app购买页面内除“推荐”页外的所有TAB内的商品推荐流,如“鞋类”、“箱包”等。当用户进入分类TAB中,我们可以简化为给定<userId, tabId, itemId> 三元组的商品流推荐,可以看出,分类TAB的推荐场景跟其他“开放式”推荐场景的最大差异在于,是限定条件下(品类)的推荐,与搜索场景有一点相似度,分类TAB代表着用户的品类意图。以我们目前的迭代进度,现阶段主要聚焦于<userId, ItemId>的二元建模,实际上<userId, tabId>,即用户的行为与TAB的相关性,以及<tabId, itemId>,即TAB与商品的相关性,是我们后续进行差异化建模需要着重考虑的;以下的相关进展主要讲述较为通用的商品推荐模型的落地迭代。我们以多目标排序模型作为精排策略。
揭秘得物客服IM全链路通信过程
客服的演进从开始的初始的平台到现在的成熟系统,在整个得物客服组成员的共同努力下,一步步的不断完善优化才有了在巨多会话量压力下,仍然稳定好用的系统。
“整洁架构”和商家前端的重构之路
团队归属于后方业务支撑部门,组内的项目都以pc中后台应用为主。对比移动端应用,代码库比较庞大,业务逻辑也相对复杂。在持续的迭代过程中,我们发现当前的代码仓库仍然有不少可以优化的点:
- 可以减弱对ui框架的依赖
21年前端平台决定技术栈统一迁移到React生态,后续平台的基础建设也都围绕React展开,这就使得商家使用Vue生态做开发的系统面临技术栈迁移的难题,将业务逻辑和UI框架节藕变得异常重要。 - 代码风格可以更加统一
随着代码量和团队成员的增加,应用里风格迥异的代码也越来越多。为了能够持续迅速的进行迭代,团队急需一套统一的顶层代码架构设计方案。 - 可以集成自动化测试用例
随着业务变得越来越复杂,在迅速的迭代过程中团队需要频繁地对功能进行回归,因此我们对于自动化单测用例的诉求也变的越来越强烈。
为了完成以上的优化,四组对现有的应用架构做了一次重构,而重构的核心就是整洁架构。
得物数据库中间件平台“彩虹桥”演进之路
随着得物 App 用户开始快速增长,业务线日趋丰富,也对底层数据库带来了较大的压力。各个业务线对于数据分片、读写分离、影子库路由等等的需求成为了刚需,所以需要一个统一的中间件来支撑这些需求,得物“彩虹桥”中间件平台应运而生。
得物App数据模拟平台的探索和实践
Mock是一个接口编辑模拟工具,可以快速手动或者基于YAPI创建Mock接口模拟数据调试,同时支持场景,场景组的快速切换,方便在开发期和测试阶段试验不同数据返回的UI功能逻辑。
Mooncake数据模拟平台是得物统一的针对端侧(包括前端,客户端),与服务侧联调Mock的一款工具产品,在平台内部可以快速的创建各个项目产品的Mock多场景数据。本文主要聚焦Mooncake数据模拟平台的探索和实践。