一、引言 本文是京东到家自动化测试体系建设过程中的一些回顾和总结,删减了部分系统设计与实践的章节,保留了组织与文化相关的内容,整理成文,以飨读者。 下面就以QA(Quality Assurance)的视角来探讨工作中经常面临的问题与挑战。 关于软件质量,不知道你有没有以下困惑: 西医中“头疼医头,脚 ...
Uber公司技术栈介绍 Uber(Uber Technologies,Inc.)中文译作“优步”,是一家美国硅谷的科技公司。Uber在2009年,由加利福尼亚大学洛杉矶分校辍学生特拉维斯·卡兰尼克和好友加勒特·坎普(Garrett Camp)创立。因旗下同名打车APP而名声大噪。Uber已经进入中国 ...
一、为什么要做稳定性建设 1、从熵增定律引出稳定性建设的必要性 物理学上,用“熵”来描述一个体系的混乱程度。卡尔·弗里德曼提出熵增定律,他认为在一个封闭的系统内,如果没有外力的作用,一切物质都会从有序状态向无序状态发展。 如果我们不希望系统变混乱,有什么办法呢?答案是对抗熵增定律,对抗熵增定律的方法 ...
不同行业基本都会有自己独特的业务,甚至同行的不同企业之间的业务逻辑也会相差千里,只有最大程度抽象出通用性、标准性和普适性的系统才能够成为平台系统,平台系统开发的成本和难度可想而知。 个人深度参与或独立设计开发过的公共服务型平台系统,主要包括基础数据平台、支付平台、财务平台、结算平台、配送平台、CRM ...
设计一个具有创意性的物联网系统需要充分发挥创新思维,考虑系统的实用性、可靠性、成本效益和可扩展性。以下是一些设计建议: ...
01、spring IOC基本使用 (1)使用maven的方式来构建项目 定义项目的groupId、artifactId (2)添加对应的pom依赖 4.0.0 <groupId>com.mashibing</groupId> <artifactId>springHelloword23</artif ...
系统设计之缓存五种策略 当我们在架构中引入缓存时,缓存和数据库之间的同步就变得不可避免。 让我们看看如何保持数据同步的五种常见策略。 1)阅读策略: 缓存在一边 通读2)写策略:写周围 回信 写通缓存策略经常组合使用。例如,write-around 通常与 cache-aside 一起使用,以确保缓 ...
日志管理包含日志数据存储、处理、分析和可视化,通过利用日志管理工具,可以监控性能趋势、解决问题、检测异常并优化整体系统性能。 近年来,开源日志管理解决方案在大家寻求灵活且经济有效的方式来管理现代系统典型的大量日志数据时,获得了显著的关注。这些工具为商业产品提供了有力的替代方案,使各种规模的企业都能有 ...
3 系统设计面试 你刚刚获得了梦想公司梦寐以求的现场面试机会。HR给你发来了当天的日程安排。扫了一眼名单,你感觉良好,直到你的目光落到了这个面试环节--系统设计面试。 系统设计面试通常让人望而生畏。可能是"设计一款知名产品 X"这样含糊不清的问题。问题模棱两可,似乎宽泛得不合理。你的疲惫是可以理解的 ...
#4 设计限速器 在网络系统中,限速器用于控制客户端或服务发送流量的速率。在HTTP世界中,限速器限制在指定时间内允许发送的客户端请求数量。如果API请求数超过了限速器定义的阈值,超出调用都会被阻止。下面是几个例子: - 用户每秒最多只能写2篇文章。 - 同一IP地址每天最多只能创建10个账户。 - ...
#5 设计一致哈希(HASHING) 要实现横向扩展,就必须在服务器之间高效、均匀地分配请求/数据。一致哈希是实现这一目标的常用技术。不过,首先让我们深入了解一下这个问题。 ##5.1 重散列(rehashing)问题 如果有n台缓存服务器,平衡负载的常用方法是使用下面的散列方法: serverIn ...
这篇文章的主要内容包括:1、数据架构的演变历史与各种架构的优缺点。2、流批一体的价值。3、流批一体架构中流与批的关系。 ...
## 软件开发原则 | 原则 | 介绍 | | | | | 单一职责原则 | 一个类或模块应该只负责一项任务或功能 | | 开闭原则 | 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭 | | 里氏替换原则 | 子类应该能够替换其父类并且不会破坏程序的正确性 | | 接口隔离原则 | 客户端 ...
注:单点登录原理是一个重要知识点,也常被问及,很多童鞋照葫芦画瓢搭建过单点登录,但是被问到原理时可能说不出来,下面简单介绍,抛砖引玉,希望对大家有所帮助。
单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用... ...
导语 一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统,那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。 Kafka 体系架构简介 以下是 Kafka 的软件架构,整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeeper 组 ...
今天给大家介绍下扫码登录功能是怎么设计的。 扫码登录功能主要分为三个阶段:待扫描、已扫描待确认、已确认。 整体流程图如图。 下面分阶段来看看设计原理。 1、待扫描阶段 首先是待扫描阶段,这个阶段是 PC 端跟服务端的交互过程。 每次用户打开PC端登陆请求,系统返回一个唯一的二维码ID,并将二维码ID ...
#2 封底估算 在系统设计面试中,有时会要求你使用 "封底估算"(back-of-the-envelope estimation)来估算系统容量或性能需求。根据谷歌高级研究员杰夫-迪恩(Jeff Dean)的说法,"封底估算是你结合思想实验和常见性能数字进行的估算,目的是让你对哪些设计能满足你的要求 ...
#1 从零扩展到百万用户 设计支持数百万用户的系统是一项挑战,是需要不断完善和无止境改进的过程。在本章中,我们将构建一个支持单个用户的系统,并逐步将其扩展到为数百万用户提供服务。 ## 1.1 单服务器设置 下图展示了单服务器设置的示意图,其中所有内容都运行在一台服务器上:网络应用程序、数据库、缓存 ...
前言 前面说了很多Kafka的性能优点,有些童鞋要说了,这Kafka在企业开发或者企业级应用中要怎么用呢?今天咱们就来简单探究一下。 1、 使用 Kafka 进行消息的异步处理 Kafka 提供了一个可靠的消息传递机制,使得企业能够将不同组件之间的通信解耦,实现高效的异步处理。在企业级应用中,可以通 ...
# 核心原理 长链接转为短链接的核心原理是: 将短链接与原始长链接做一个映射,访问短链接的时候,通过重定向的方式转到长链接。 # 应用场景 比如分享功能,查看分享信息的原始链接通常是很长的,直接发给用户,体验不是很好,这时候就可以将其映射为一个短链接再发给用户。 又比如我们熟知的百度网盘分享文件,虽 ...