有赞分层自动化测试实践

1\. 背景======先理一下自动化测试的概念,从广义上来说,一切通过工具(程序)的方式来代替或者辅助手工测试的行为都可以成为自动化。从狭义上来说,通过编写脚本的方式,模拟手工测试的过程,从而替代人工对系统的功能进行验证。有赞是一家互联网行业的创业公司,测试起步较晚,发布非常频繁,就算每次只回归核心功能,对人数极少的几个测试人员来说工作量巨大,且基本是重复劳动,极其枯燥,持续时间长了也...
阅读全文

有赞统一日志平台初探

```【编者的话】从2015年初入职有赞以来,一直致力于后端服务开发,主要设计开发了监控系统Hawk,但这不是本次要分享的点。一个月前,负责日志平台Track的小伙伴寻求梦想出去创业了,有幸接手了日志平台,这对本人确实是个不小的挑战,也同样是个学习成长的机会。此次就借着梳理日志平台的机会,给大家分享一下有赞统一日志平台的架构设计。``` 一、引言自有赞成立以来,发展迅猛,业务增长很快...
阅读全文

Kylin, Mondrian, Saiku系统的整合

本文主要介绍有赞数据团队为了满足在不同维度查看、分析重点指标的需求而搭建的OLAP分析工具。这个工具对Kylin、Mondrian以及Saiku做了一个整合,主要工作包括一些定制化的修改以及环境的配置。 目前这个系统还处于一个需要优化、完善的过程,这篇博文也会相应地更新。背景在来实现这样一个OLAP系统。三巨头 Kylinkylin是apache软件基金会的顶级项目,一个开...
阅读全文

有赞搜索引擎实践(算法篇)

1\. 搜索算法总体架构在上篇文章(工程篇)中, 我们介绍了有赞搜索引擎的基本框架. 搜索引擎主要3个部件构成. 第一, hadoop集群, 用于生成大规模搜索和实时索引; 第二, ElasticSearch集群, 提供分布式搜索方案; 第三, 高级搜索集群, 用于提供商业搜索的特殊功能.商业电商搜索由于搜索的特殊性, 独立的ElasticSearch集群是无法满足多样的算法需求的, 我...
阅读全文

有赞APP IM SDK 组件架构设计

本文主要以Android客户端为例,记录了有赞旗下 App 中使用自研 IM SDK 设计思路,由有赞移动开发组 IM SDK 团队共同讨论完成。 背景==在有赞产品中,存在大量需要交易双方沟通交流的场景,比如,客...
阅读全文

有赞延迟队列设计

延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢?背景==我们先看看以下业务场景: 当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存? 如何定期检查处于退款状态的订单是否已经退款成功? 新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?等等为了解决以上问题,最简单直接的办法就是定时去扫表。每个...
阅读全文

有赞搜索引擎实践(工程篇)

随着互联网数据规模的爆炸式增长, 如何从海量的历史, 实时数据中快速获取有用的信息, 变得越来越有挑战性. 一个中等的电商平台, 每天都要产生百万条原始数据, 上亿条用户行为数据. 一般来说, 电商数据一般有3种主要类型的数据系统:1. 关系型数据库, 大多数互联网公司会选用mysql作为关数据库的主选, 用于存储商品, 用户信息等数据. 关系型数据库对于事务性非常高的OLTP操作(比如订单...
阅读全文

记一次 strace 追踪的 Docker + VirtualBox 的底层 bug

最近在公司搭建一个基于 Docker 的 PHP 环境。背景知识1. Docker 是一种容器技术,它可以提供一个隔离的环境,让用户的程序运行在一个完全隔离的虚拟的系统里,但 Docker 不是虚拟化,使用 Docker 可以在 Linux 上实现对于任意程序打包一次,到处运行。愿意接受安利的同学请移步 。2. Mac OS X 的内核可以算是半个 BSD,Docker 依赖一些...
阅读全文

JavaScript 类型的那些事

概述`JavaScript`的类型判断是前端工程师们每天代码中必备的部分,每天肯定会写上个很多遍`if (a === 'xxx')`或`if (typeof a === 'object')`类似的类型判断语句,所以掌握`JavaScript`中类型判断也是前端必备技能,以下会从`JavaScript`的类型,类型判断以及一些内部实现来让你深入了解`JavaScript`类型的那些事。类型...
阅读全文

预加载系列二:让File Prefetching丝丝润滑无痛无痒

所谓 File Prefetching 就是在一个页面加载成功后,默默去预加载后续可能会被访问到的页面的资源。 前端资源预加载其实没啥新鲜的,我们倒腾这个事情的过程却是很有有意思也很有启发性。第一个版本,简单粗暴有点痛1、建一个独立的页面,里面索引了各种需要预加载的css、js,代码类似下面这样。```html<html <head <link rel=...
阅读全文