有赞发号器多机房方案

有赞发号器多机房方案 发号器一般用来产生全局唯一 ID,有赞发号器的设计及背景参见文章《如何做一个靠谱的发号器》,本文在此基础上进行扩展,提供多机房发号与集群拆分能力,下文中使用 March 表示发号器服务。 图1 展示了改造前发号器双机房的架构,其中:控制台负责管理发号器配置,March 包括主备节点,主节点负责发号,备节点进行灾备,etcd 作为持久化存储。 图1. 发号器架构 问题 根据图1 架构可以看出,…

Read More

有赞 Bond 分布式锁

Bond (邦德), 有赞里的一套分布式锁的标准解决方案,它是一套 SDK 型的中间件。 现在服务于公司里的核心部门或核心链路,Bond 不仅提供一些面向锁语义的 API,还有提供很多场景解决方案,以及产品化相关的特性。 一、背景 有赞内部刚开始也是各自业务部门自己实现的简单分布式锁方案,直接依赖公共的 Codis 、Zookeeper,或者是自己维护一套 Redis 集群,各自实现的方式也不大一样,基于这现象,随着业务的扩展,有一些问题慢慢就会浮现:…

Read More

Apollo在有赞的实践

一. 背景和Apollo简介 在集中式开发时代,配置文件基本足够用了,因为那时配置的管理通常不会成为一个很大的问题,简单一点来说,系统上了生产之后,如果需要修改一个配置,登录到这台生产机器上,修改这个配置文件,然后reload配置文件并不是什么很大的负担。但是在互联网时代,我们的应用都是分布式系统,部署在N台机器上,如果在线上一台一台的重启机器,会造成很大的负担和不稳定。并且对于公司来说,会有多个环境区分(测试环境和线上环境),有时还需要对同一环境中的不同集群做不同的配置。因此需要一个配置中心来集中管理不同环境、不同集群的配置,修改配置后能够实时推送到应用端。 Apollo(阿波罗)…

Read More

有赞iOS精准测试实践

一、背景 近几年有赞零售业务快速发展,为了满足日益增多的业务需求,2019年起零售客户端发版改成了每周一次,在质量保障方面,技术团队要面对更大的挑战。故此我们团队做了很多研究,希望通过技术工具来提升移动端测试的质量和效率,这是我们研发移动端精准测试平台的初衷。 目前业内移动端的测试手段主要有两种,一种是手工测试,手工测试是移动端目前主流的测试手段,一般流程是先根据业务场景梳理出对应的测试用例,然后将测试用例分配给开发和测试人员,由他们分别执行用例,排查问题;另外一种是单元测试,单元测试是通过工具进行自动化执行,执行完单元测试,除了根据单元测试的结果来判断代码质量,还可以获得对应的代码执行覆盖率的信息,这个是对单元测试结果的量化分析。这两种测试也有各自的不足,手工测试的覆盖范围依赖于相关人员的业务理解,…

Read More

SparkSQL在有赞大数据的实践(二)

一、前言 在 2019 年 1 月份的时候,我们发表过一篇博客 SparkSQL在有赞大数据的实践,里面讲述我们在 Spark 里所做的一些优化和任务迁移相关的内容。本文会接着上次的话题继续讲一下我们之后在 SparkSQL 上所做的一些改进,以及如何做到 SparkSQL 占比提升到 91% 以上,最后也分享一些在 Spark 踩过的坑和经验希望能帮助到大家。 本文主要的内容包括: Thrift…

Read More