技术干货
马蜂窝技术
马蜂窝技术
展开
-
基于 Google-S2 的地理相册服务实现及应用
点击上方“马蜂窝技术”,关注订阅更多优质内容写在前面对抗疫情的战斗还在继续。做好个人和家庭的防护,保持良好的心态,过好自己的生活,就是每个普通人抗击疫情最好的武器。在这样的变化下,马蜂窝...原创 2020-02-13 17:38:25 · 1600 阅读 · 0 评论 -
多环境多需求并行下的代码测试覆盖率统计工具实现
马蜂窝技术原创内容,更多干货请关注公众号:mfwtech测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量。「敏捷开发」的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题。在马蜂窝大交通、酒店等交易相关业务中,项目的开发和测试实践同样遵循敏捷的原则,迭代周期短、速度快。因此,如何依据测试覆盖率数据帮助我们有效判断项目质量、了解...原创 2020-01-09 19:30:00 · 1639 阅读 · 1 评论 -
Kafka 集群在马蜂窝大数据平台的优化与应用扩展
马蜂窝技术原创文章,更多干货请订阅公众号:mfwtechKafka 是当下热门的消息队列中间件,它可以实时地处理海量数据,具备高吞吐、低延时等特性及可靠的消息异步传递机制,可以很好地解决不同系统间数据的交流和传递问题。Kafka 在马蜂窝也有非常广泛的应用,为很多核心的业务提供支撑。本文将围绕 Kafka 在马蜂窝大数据平台的应用实践,介绍相关业务场景、在 Kafka 应用的不同阶段...原创 2020-01-02 20:00:00 · 1851 阅读 · 0 评论 -
OpenResty 在马蜂窝广告监测中的应用
马蜂窝技术原创内容,更多干货请订阅公众号:mfwtech广告是互联网变现的重要手段之一。以马蜂窝旅游 App 为例,当用户打开我们的应用时,有可能会在首屏或是信息流、商品列表中看到推送的广告。如果刚好对广告内容感兴趣,用户就可能会点击广告了解更多信息,进而完成这条广告希望完成的后续操作,如下载广告推荐的 App 等。广告监测平台的任务就是持续、准确地收集用户在浏览和点击广告这些事...原创 2019-12-26 19:41:56 · 1049 阅读 · 0 评论 -
开发环境下的 Kubernetes 容器网络演进之路
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech使用 Docker+Kubernetes 来简化开发人员的工作流,使应用更加快速地迭代,缩短发布周期,在很多研发团队中已经是常见的做法。如果说 Docker 提供的是应用级的主机抽象,那么 Kubernetes 的作用就是应用级的集群抽象,提供容器集群运行所需的基础设施,旨在解决容器化应用的资源调度、部署运行、服务发现、扩容缩容...原创 2019-12-23 12:07:08 · 1171 阅读 · 0 评论 -
Golang 在电商即时通讯服务建设中的实践
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商。从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣、食、住、行等方方面面;从消费金额来看,往往单次消费额度较大;对目的地的陌生、在行程中可能的问题,这些因素使用户在购买前、中、后都存在和商家沟通的强烈需求。可以说,一个好用的 IM 可以在一定程度上对企业...原创 2019-12-13 17:02:19 · 1872 阅读 · 0 评论 -
甲小蛙战记:PHP2Java 排雷指南
(马蜂窝技术原创内容,申请转载请在公众后后台留言,ID:mfwtech )大家好,我是来自马蜂窝电商旅游平台的甲小蛙,从前是一名 PHP 工程师,现在可能是一名 PHJ 工程师,以后......前阵子,我从大道消息听说公司商品订单技术栈要推 Java。我是一个喜欢走在时代前列线上的人,凡是要做到领先。我对 Java 也是仰慕已久,于是花了两天时间学习 Java,并调研各种框架和解决方...原创 2019-11-28 19:43:02 · 1031 阅读 · 0 评论 -
马蜂窝数据仓库的架构、模型与应用实践
(马蜂窝技术原创内容,公众号ID:mfwtech)一、马蜂窝数据仓库与数据中台最近几年,数据中台概念的热度一直不减。2018 年起,马蜂窝也开始了自己的数据中台探索之路。数据中台到底是什么?要不要建?和数据仓库有什么本质的区别?相信很多企业都在关注这些问题。我认为数据中台的概念非常接近传统数据仓库+大数据平台的结合体。它是在企业的数据建设经历了数据中心、数据仓库等积累之后,借助平台...原创 2019-09-26 21:47:31 · 2647 阅读 · 1 评论 -
对开发更友好的前端骨架屏自动生成方案
(马蜂窝技术原创内容,公众号 ID:mfwtech)一份来自 Akamai 的研究报告显示,在对 1048 名网购户进行采访后发现: 约 47% 的用户期望他们的页面在两秒之内加载完成。 如果页面加载时间超过 3s,约 40% 的用户会选择离开或关闭页面。 一直以来,为了提升用户在页面加载时的体验,无论是 Web 还是 iOS、Android 的应用中,前端开发工程师都...原创 2019-09-05 20:24:36 · 2291 阅读 · 0 评论 -
API 资源隔离系统设计与实现
(马蜂窝技术原创内容,公众号 ID:mfwtech)Part 1 背景大交通业务需要对接机票、火车票、租车、接送机等业务的外部供应链,供应商的数据接口大部分通过 HTTP、HTTPS 等协议进行通信。为了保证开发进度并支持集成测试时进行多场景支持,我们往往需要对供应商接口进行 MOCK。之前我们在开发环境和测试环境对外部接口的调用没有统一管控,无法实现调用开关,也无法对调用量进行统计和限制。...原创 2019-09-02 18:09:43 · 1540 阅读 · 0 评论 -
马蜂窝视频编辑框架设计及在 iOS 端的业务实践
(马蜂窝技术公众号原创内容,ID: mfwtech)熟悉马蜂窝的朋友一定知道,点击马蜂窝 App 首页的发布按钮,会发现发布的内容已经被简化成「图文」或者「视频」。长期以来,游记、问答、攻略等图文形式的形态一直是马蜂窝发展的优势所在。将短视频提升至与图文并列的位置,是因为对于今天的移动互联网用户来说,内容更真实直观、信息密度更大、沉浸感更强的短视频已经成为刚需。为了使旅游用户拥有更好的内容交互...原创 2019-08-30 10:39:00 · 1029 阅读 · 0 评论 -
测试人员为什么要深入到项目实现中去
(“马蜂窝技术”公众号原创内容,ID: mfwtech)一个项目从需求确定到最后上线,通常来说流程是这样的:「测试」作为一个项目质量保证角色,在上面的整个流程中均有参与。而用例设计、项目测试环节更像测试的主场,PRD 的评审测试人员也会发表很多自己的观点,对项目的技术评审虽然测试人员也有参与,但也不如前两个环节的参与程度深。其实,一个优秀的测试人员应该深入到项目的每一个环节中去发现问题,提...原创 2019-08-28 10:37:34 · 1065 阅读 · 0 评论 -
多渠道推广场景下,如何实现 App 用户增长的精准归因?
为了实现用户的快速增长,以推广 App 为目标的线上广告投放是很多平台获取新用户的重要方式。随道移动互联网的发展,现在 App 推广的渠道越来越丰富,除了 WAP 站点、第三方 App 之外,HTML5 成了 App 推广的又一个主战场。选好了合适的推广平台,预算(理论上)也到位了,作为直面用户的重要一环,如果没有做好对投放效果的追溯和评估,将直接影响到用户增长的整个过程,使之前的种种努力功亏...原创 2019-08-23 13:00:00 · 3118 阅读 · 0 评论 -
支撑马蜂窝会员体系全面升级背后的架构设计
流量红利正逐渐走向终结,这已经不再是什么秘密。后互联网时代,如何维系住用户群,提升用户在平台上的体验是整个行业都需要考虑的事情。正是出于这一原因,现在全行业都在关注会员体系的搭建,这也是马蜂窝 2019 年重点投入的方向之一。面对这个全行业都在发力的会员市场,要对「马蜂窝特色」的会员体系进行有力的支撑,无疑对会员体系的架构设计提出更高的要求。马蜂窝会员体系建设从 2018 年 9 月份开始...原创 2019-07-26 14:48:28 · 2171 阅读 · 2 评论 -
马蜂窝 IM 系统架构的演化和升级
今天,越来越多的用户被马蜂窝持续积累的笔记、攻略、嗡嗡等优质的分享内容所吸引,在这里激发了去旅行的热情,同时也拉动了马蜂窝交易的增长。在帮助用户做出旅行决策、完成交易的过程中,IM 系统起到了重要的作用。IM 系统为用户与商家建立了直接沟通的渠道,帮助用户解答购买旅行产品中的问题,既促成了订单交易,也帮用户打消了疑虑,促成用户旅行愿望的实现。伴随着业务的快速发展,几年间,马蜂窝 IM 系统也经...原创 2019-07-18 20:03:21 · 1558 阅读 · 0 评论 -
基于 MySQL Binlog 的 Elasticsearch 数据同步实践
一、背景随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。二、现有方法及问题对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到...原创 2019-07-15 10:24:28 · 10479 阅读 · 3 评论 -
领域驱动设计在马蜂窝优惠中心重构中的实践
前言正如领域驱动设计之父 Eric Evans 所著一书的书名所述,领域驱动设计(Domain Driven Design)是一种软件核心复杂性应对之道。在我们解决现实业务问题时,会面对非常复杂的业务逻辑。即使是同一个事物,在多个子业务单元下代表的意思也是不完全一样的。比如「商品」这个词,在商品详情页语境中,是指「商品基本信息」;在下单页语境中,是指「购买项」;而在物流页面语境中,又变成了...原创 2019-07-11 20:02:00 · 1603 阅读 · 0 评论 -
马蜂窝支付中心架构演进
为了更好地支持交易业务的快速发展,马蜂窝支付中心从最初只支持基础支付和退款的「刀耕火种」阶段,经历了架构调整的「刮骨疗伤」阶段,完成了到实现综合产品平台形态的「沉淀蓄力」阶段的演进。目前,马蜂窝支付中心集成了包括基础订单、收银台、路由管理、支付通道、清算核对、报表统计等多种能力,为马蜂窝度假(平台、定制)、交通(机票、火车票、用车)、酒店(开放平台、代理商)等近 20 条业务线提供服务。本文将...原创 2019-07-04 20:31:35 · 4473 阅读 · 1 评论 -
马蜂窝容器化平台前端赋能实践
容器对前端开发真的有用吗?答案是肯定的。最初当我向公司的前端同学「安利」容器技术的时候,很多人都会说:「容器?这不是用在后端的技术吗?我不懂啊,而且前端开发用不上吧。」但其实,今天我们讨论的「前端」已经不是传统意义上的「前端」, 首先体现在终端类型的多样性,比如 iOS,Android,小程序等;另外,伴随着 Node.js 等技术的兴起,前端开发的边界也在逐渐服务端延伸。来到大前端时代,如...原创 2019-06-21 15:03:43 · 2062 阅读 · 2 评论 -
马蜂窝大交通业务质量体系建设初步实践
质量是决定产品能否成功、企业能否持续发展的关键因素之一。如何做好质量体系建设,这是个比较大的话题,包含的范围很广,也没有固定的衡量标准。打开一个互联网公司招聘网站,搜索「测试工程师」岗位时,你会发现几乎全部 JD 都包含一条要求「建设或者参与建设所负责业务的质量体系」。那么,是不是谈到质量保障就只是测试团队的职责?测试团队在这个过程中如何发挥价值?本文将结合马蜂窝大交通测试团队在质量体系从无到有...原创 2019-06-14 10:14:39 · 1454 阅读 · 3 评论 -
马蜂窝用户内容贡献能力模型构建
在用户个性化时代,垂直化、精细化的运营,被看作企业重要的竞争力。完整、清晰的用户画像体系,可以帮助企业从海量的用户信息中发掘每个用户的行为特性、潜在能力及兴趣等信息,从而为用户提供具有针对性的服务。马蜂窝拥有海量的用户出行体验数据,在成长和发展的过程中一直在探索如何通过基于海量 UGC 的数据挖掘出每个用户的基本特征、对旅游主题、目的地的偏好和潜在兴趣,从而精准地定位和标记用户,将优质的内容、商...原创 2019-06-10 10:10:06 · 2331 阅读 · 0 评论 -
马蜂窝大交通业务监控报警系统架构设计与实现
部门的业务线越来越多,任何一个线上运行的应用,都可能因为各种各样的原因出现问题:比如业务层面,订单量比上周减少了,流量突然下降了;技术层面的问题,系统出现 ERROR ,接口响应变慢了。拿大交通业务来说,一个明显的特点是依赖很多供应商的服务,所以我们还需要关注调用供应商接口是否出现异常等等。为了让大交通下的各业务线都能够通过报警尽早发现问题、解决问题,进而提升业务系统的服务质量,我们决定构建统一...原创 2019-05-31 17:09:12 · 949 阅读 · 0 评论 -
关于自动化测试框架设计的几点思考
对于自动化测试的好处和重要性,相信大家都已经了解。自动化测试可以让我们在有限的时间内尽可能多的覆盖所涉及到的测试场景,减少测试人员的的重复性工作,提高测试效率以及覆盖率。其实很多测试同学都非常积极尝试自动化,但最终又选择放弃,很重要的原因是没有感受到自动化带来的收益。实际上,自动化的效率高低很大程度上取决于你的自动化框架设计得是否合理,下面就以如何设计高效的自动化框架来谈谈自己的理解。什么是...原创 2019-05-28 15:12:11 · 816 阅读 · 0 评论 -
马蜂窝ABTest多层分流系统的设计与实现
导读:5 月 23 日,马蜂窝旅游网宣布完成 2.5 亿美元新一轮融资,此轮融资由腾讯领投。在接授腾讯《潜望》栏目的专访时,马蜂窝 CEO 陈罡谈到,「现在马蜂窝是个数据驱动的公司,要以结果说话,能用 ABTest 解决的问题就没有必要谈其他」。作为一家数据驱动的公司,当前在马蜂窝 ABTest 已经基本覆盖所有业务线并稳定运行。本篇文章,我们就来说一说驱动马蜂窝快速增长和优化的 ABTes...原创 2019-05-24 10:26:16 · 5149 阅读 · 0 评论 -
马蜂窝 iOS App 启动治理:回归用户体验
增长、活跃、留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能。启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率。因此,确保启动流程的良好体验至关重要。「马蜂窝旅游」App 是马蜂窝为用户提供服务的主要阵地,其承载的业务模块不断丰富和完善,产品功能日趋复杂,已经逐渐成长为一个集合旅行信息、出行决策、自由行产品及服务交易的一...原创 2019-05-20 16:31:45 · 1089 阅读 · 0 评论 -
马蜂窝推荐系统容灾缓存服务的设计与实现
数据库突然断开连接、第三方接口迟迟不返回结果、高峰期网络发生抖动… 当程序突发异常时,我们的应用可以告诉调用方或者用户「对不起,服务器出了点问题」;或者找到更好的方式,达到提升用户体验的目的。一、背景用户在马蜂窝 App 上「刷刷刷」时,推荐系统需要持续给用户推荐可能感兴趣的内容,主要分为根据用户特性和业务场景,召回根据各种机器学习算法计算过的内容,然后对这些内容进行排序后返回给前端这几个步骤...原创 2019-05-20 16:29:46 · 882 阅读 · 0 评论 -
马蜂窝火车票系统服务化改造初探
交通方式是用户旅行前要考虑的核心要素之一。为了帮助用户更好地完成消费决策闭环,马蜂窝上线了大交通业务。现在,用户在马蜂窝也可以完成购买机票、火车票等操作。与大多数业务系统相同,我们一样经历着从无到有,再到快速发展的过程。本文将以火车票业务系统为例,主要从技术的角度,和大家分享在一个新兴业务发展的不同阶段背后,系统建设与架构演变方面的一些经验。第一阶段:从无到有在这个阶段,快速支撑起业务,填补...原创 2019-04-26 11:06:48 · 567 阅读 · 1 评论 -
让前端监控数据采集更高效
随着业务的快速发展,我们对生产环境下的问题感知能力越来越关注。作为距离用户最近的一层,前端的表现是否可靠、稳定、好用,很大程度上决定着用户对整个产品的体验和感受。因此,对于前端的监控不容忽视。搭建一套前端监控平台需要考虑的方面很多,比如数据采集、埋点模式、数据处理和分析、报警以及监控平台在具体业务中的应用等等。在这所有环节中,准确、完整、全面的数据采集是一切的前提,也为后续的用户精细化运营提供基...原创 2019-04-19 10:46:33 · 962 阅读 · 0 评论 -
马蜂窝实时计算平台演进之路
MES 是马蜂窝统一实时计算平台,为各条业务线提供稳定、高效的实时数据计算和查询服务。在整体设计方面,MES 借鉴了 Lambda 架构的思想。本篇文章,我们将从四个方面了解 MES:1. 关于 Lambda 架构2.MES 架构和原理3.MES 优化历程4. 近期规划关于 Lambda 架构Lambda 架构是由 Storm 作者 NathanMarz 根据自己在 Twitter 的...原创 2019-04-12 11:14:14 · 517 阅读 · 0 评论 -
马蜂窝消息总线——面向业务的消息服务设计
引言马蜂窝消息总线于 2017 年 11 月份上线,截至目前,已经被电商、酒店、大交通、社区等多个技术团队投入到生产环境的使用中。近一年时间里,消息总线经历过几次比较重要的功能迭代,承担了 PHP 在线服务异步、削峰、解耦的大部分任务。这篇文章的目的主要是和大家交流下马蜂窝消息总线的设计原因、实现原理以及未来规划,希望能和有潜在需求的研发同学一起探讨。我们为什么需要消息总线?在消息总线上...原创 2019-04-12 11:09:23 · 410 阅读 · 0 评论 -
马蜂窝定制游抢单系统设计与功能核心
「定制旅行」已经逐渐成为旅游行业「消费升级」的一个主流模式。随着用户对旅游服务的要求越来越高,对行程安排有个性化需求的消费者来说,常规的跟团游和自由行产品已经很难满足他们的需求。在这样的环境下,马蜂窝电商业务平台也在不断探索在提供门票、机票、酒店等这样旅游电商「标品」之外,如何充分结合现有的供应商、旅行定制师资源优势,更好得满足用户需求,创造多样化服务。2018 年 6 月,马蜂窝电商业务上线...原创 2019-04-12 11:05:11 · 3822 阅读 · 0 评论 -
基于 HTTP 请求拦截,快速解决跨域和代理 Mock
近几年,随着 Web 开发逐渐成熟,前后端分离的架构设计越来越被众多开发者认可,使得前端和后端可以专注各自的职能,降低沟通成本,提高开发效率。在前后端分离的开发模式下,前端和后端工程师得以并行工作。当遇到前端界面展示需要的数据,而后端对应的接口还没有完成开发的情况时,需要一个数据源来保证前端工作的顺利进行。今天这篇文章,我们会介绍几种常见的方法和其中存在的问题,并提出如何基于HTTP 请求拦截...原创 2019-04-12 10:58:10 · 857 阅读 · 0 评论 -
Flutter 实现原理及在马蜂窝的跨平台开发实践
一直以来,跨平台开发都是困扰移动客户端开发的难题。在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和用户体验。但这两种方式也带来了新的问题。比如使用 WebView 跨平台方式,优点确实非常明显。基于 WebView 的框架集成了当下 Web 开发的诸多优势:丰富的控件库、动态化、良好的技术社区、...原创 2019-04-12 10:50:29 · 595 阅读 · 0 评论 -
马蜂窝搜索基于 Golang 并发代理的一次架构升级
搜索业务是马蜂窝流量分发的重要入口。很多用户在使用马蜂窝时,都会有目的性地主动搜索与自己旅行需求相关的各种信息,衣食住行,事无巨细,从而做出最符合需求的旅行决策。因此在马蜂窝,搜索业务交互的下游模块非常多,主要有目的地、POI、热门景点、美食、商场、酒店、问答、攻略、机票火车票等等,通过实时、精准地返回搜索结果,帮助用户做出个性化旅行决策。面对越来越高的流量,马蜂窝技术团队积极尝试对搜索架构进...原创 2019-04-12 10:39:01 · 244 阅读 · 0 评论 -
状态机在马蜂窝机票订单交易系统中的应用与优化实践
在设计交易系统时,稳定性、可扩展性、可维护性都是我们需要关注的重点。本文将对如何通过状态机在交易系统中的应用解决上述问题做出一些探讨。关于马蜂窝机票订单交易系统交易系统往往存在订单维度多、状态多、交易链路长、流程复杂等特点。以马蜂窝大交通业务中的机票交易为例,用户提交的一个订单除了机票信息之外可能还包含很多信息,比如保险或者其他附加产品。其中保险又分为很多类型,如航意险、航延险、组合险等。从...原创 2019-04-12 10:29:34 · 1921 阅读 · 0 评论 -
如何基于匹配预设句式,动态提取用户评价标签
PHP 技能精进之 PHP-FPM 多进程模型背景1\. 预设标签2\. 句法分析3.多层级标签定义基于匹配预设句式模板动态提取用户评价标签标签系统总体结构具体做法和实施步骤一、建立句式库**二.句式匹配,生成标签**小结网络经济的发展使我们的消费渠道早已不止于实体场景。来自于用户的线上评价,成为如今影响我们消费行为决策的重要因素。背景在网上购物时,即使你已经浏览了商家对于商品的描述,你还是...原创 2019-03-12 15:58:45 · 925 阅读 · 0 评论 -
PHP 技能精进之 PHP-FPM 多进程模型
PHP-FPM 提供了更好的 PHP 进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。那么当我们谈论 PHP-FPM 多进程模型的时候,作为 PHPer 的你了解多少呢?原创 2019-03-12 11:49:51 · 1712 阅读 · 0 评论
分享