chaos

Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收

我们两清 提交于 2020-03-18 12:28:09
某厂面试归来,发现自己落伍了!>>> TiDB 挑战赛第二季之 易用性挑战赛 已经开始一周了,由于有参加过上一季 性能挑战赛 的老玩家强势加入,这一季挑战赛的竞争格外激烈,短短一周的时间,已有 3 支队伍获得了上千积分! 完整积分排行榜可以登陆 活动官网 查看。 战况简介: BABAIsWatchingYou Team 通过 改进 Rust-Prometheus 中 Thread Local Metrics 的易用性 获得 2530 分。 niedhui Team 通过 为 TiDB-Dashboard 增加 TLS 支持 获得 1680 分。 hawking&chacha Team 通过 为 RocksDB WAL 写延迟增加监控 获得了 1300 分。 .* Team 通过 使用单独的日志文件存储 TiKV 慢查询日志 获得了 950 分。 羡慕不如行动!我们也在这里简单分享一些捞分技巧,希望能够帮助大家快速上手,追上这些排名靠前的参赛选手们。 捞分技巧 1:用户投票结果中排名前三的需求有高额加分! 为鼓励大家选择用户呼声更高的任务,本次挑战赛中用户投票排名前三的需求对应的任务,会在原有积分的基础上分别额外增加 10000、8000、6000 分。比如这个排名第三的需求: record access statistics of databases, tables and

Cloud Native 云原生时代如何不落伍?

只谈情不闲聊 提交于 2020-02-26 05:23:58
1.综述 一句话: 关注 CNCF 基金会 Cloud Native 云原生互动全景图 CNCF云原生互动全景图 打开网站,全景图是可以点击的,在图中找你关注的领域 2.找到你关注的分类领域 比如我关注“API Gateway API网关”,就点击他的图标就可以看到相关信息 APISIX KrakenD 非常直观的一个概览 项目开发语言,代码提交柱状图,等开源代码维护情况信息 可以说CNCF的全景图就是一张开启云原始大门的大地图,地图在手开始遨游吧 3.CNCF分类大纲 (截止2020年02月08日) CNCF云原生互动全景图 App Definition and Development 应用定义和开发 Database 数据库 Streaming & Messaging 流处理和消息系统 Application Definition & Image Build 应用程序定义和图像构建 Continuous Integration & Delivery 持续集成与交付 Orchestration & Management 编排和管理 Scheduling & Orchestration 计划与编排 Coordination & Service Discovery 协调与服务发现 Remote Procedure Call 远程过程调用 Service Proxy 服务代理 API

PingCAP 唐刘:如何利用混沌工程打造健壮的分布式系统?

穿精又带淫゛_ 提交于 2020-01-07 04:53:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者:赵钰莹 本文转载于 InfoQ。 原文链接 : https://www.infoq.cn/article/EEKM947YbboGtD_zQuLw 作为混沌工程的重要推动者,Netflix 在混沌工程手册( https://www.infoq.cn/article/AsN34J2T9QDXB0s-t9JN )中谈到,在生产环境进行软件验证的想法通常会被嘲笑。过去,这句话基本都被翻译为“我们在发布之前不打算完善地验证这些代码”。在经典的测试链路中,寻找软件缺陷的普遍信条是离生产环境越远越好。例如,在单元测试中发现缺陷要比在集成测试中发现更好,这里的逻辑是:离生产环境越远,或者是离发布越远的时候,发现的缺陷就越容易被找到根本原因并彻底修复。 对于混沌工程而言,整个链路刚好反过来:在离生产环境越近的地方进行实验越好,理想的实践就是直接在生产环境中执行。对于软件工程师来说,最难的莫过于,系统用户永远不会如预期那样与系统进行交互,混沌工程是解决这一问题的理想方法,可以让开发者了解除代码之外,整个系统其他方面的情况,特别是状态、输入、以及第三方系统导致的难以预见的行为。 据了解,在 TiDB 的研发初期,PingCAP 就引入了混沌工程,以此保证 TiDB 在各种极端情况下的稳定性。在 ArchSummit

Stacey矩阵简介

旧城冷巷雨未停 提交于 2020-01-07 03:55:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. Stacey 矩阵包含哪几个区域? 1区:Simple 第一个区域, 需求明确,技术(解决方案)也确定,这类项目就是简单的项目(Simple) ;比如注册一个新公司,需求很明确,手续也很清楚,就那么几步规定动作,因此大量代理机构都可以帮你完成这个项目。 既然需求明确,怎么实现也清楚,最好提前把计划做到位,预测型开发模式最适合。 2区:Complex 第二个区域, 需求明确,技术却不确定,也就是说怎么实现不知道,这类项目叫复杂的项目(Complex),也叫棘手的项目 。比如“无人驾驶”,这项目需求明确吧?“无人驾驶”四个字把需求说的明明白白,就是不要人开,车自己会走。但是“无人驾驶”研究了几十年,各种方法都试过了,一直也没搞定,最近随着人工智能技术的发展才让无人驾驶离现实越来越接近。 技术不确定,怎么实现不知道,只能摸索着来,推荐用 迭代开发 。 3区:Complicated 第三个区域, 技术很确定,需求却不明确 ,这类项目最坑爹,比如我们经常遇到这样的客户,让我们开发一个信息系统,问我们会什么技术。你都不耐烦了:“老子啥都会,这根本就不需要什么新技术,问题不是我会什么,关键是你到底要什么?”这类项目是烧脑型的项目(Complicated),愁死个人! 既然客户要什么还没想明白,那就想明白什么先做什么

Chaos Mesh —— 让应用跟混沌在 Kubernetes 上共舞

本秂侑毒 提交于 2020-01-07 03:35:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者:殷成文 2019 年 12 月 31 日,我们在 GitHub 上正式开源了 Chaos Mesh。作为一个云原生的混沌测试平台,Chaos Mesh 提供在 Kubernetes 平台上进行混沌测试的能力。本篇文章将围绕 Chaos Mesh 起源及原理等方面进行介绍,并结合具体案例带领大家一起探索混沌测试的世界。 现实世界中,各类故障可能会随时随地的发生,其中有很多故障我们无法避免,例如磁盘突然写坏,或者机房突然断网断电等等。这些故障可能会给公司造成巨大损失,因此提升系统对于故障的容忍度成为很多工程师努力的目标。 为了更方便地验证系统对于各种故障的容忍能力,Netflix 创造了一只名为 Chaos 的猴子,并且将它放到 AWS 云上,用于向基础设施以及业务系统中注入各类故障类型。这只 “猴子” 就是混沌工程起源。 在 PingCAP 我们也面临同样的问题,所以在很早的时候就开始探索混沌工程,并逐渐在公司内部实践落地。 在最初的实践中我们为 TiDB 定制了一套自动化测试平台,在平台中我们可以自己定义测试场景,并支持模拟各类错误情况。但是由于 TiDB 生态的不断成熟,各类周边工具 TiDB Binlog 、 TiDB Data Migration 、 TiDB Lightning 等的出现

如何成为优秀的技术主管?你要做到这三点

本秂侑毒 提交于 2020-01-07 01:32:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转至: https://mp.weixin.qq.com/s/0LVj1IcWMWAuUeY6U7r4hg 阿里妹导读:技术主管,又叫「技术经理」,英文一般是 Tech Leader ,简称 TL。随着工作经验的不断积累,能力的不断提升,每个人都有机会成为Team Leader。然而在机会到来前,我们必须提前做好准备,对TL的工作职责有一定了解。当然,这也会为当下更好地配合TL工作打下基础。 今天,阿里巴巴高级技术专家云狄将结合自己多年的经验,从开发规范、开发流程、技术规划与管理三个角度出发,分享对技术TL这一角色的理解与思考,欢迎一起探讨交流。 「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。 一个技术主管的 60% ~ 70% 的时间可能花在了开发任务分解分配、开发实践、技术架构评审、代码审核和风险识别上,而余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。 接下来基于我在技术TL这个角色上,在开发规范、开发流程、技术管理与规划等方面我的一些心路历程,和大家共勉。

发布说明

白昼怎懂夜的黑 提交于 2020-01-06 23:30:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Kuiper 团队宣布发布 Kuiper 0.1。Kuiper 0.1 可以从这里下载 。 EMQ X Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 Apache Spark , Apache Storm 和 Apache Flink 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于 源 (Source) , SQL (业务逻辑处理) , 目标 (Sink) 的规则引擎来实现边缘端的流式数据处理。 网址: https://www.emqx.io/products/kuiper Github仓库: https://github.com/emqx/kuiper 概览 功能 性能优化 提供了针对 Kuiper 规则设置并发度的配置选项,在不同的场景下可以对其优化 在 source 里的 concurrency 设置:设置运行的协程数,默认值为1。如果设置协程数大于1,必须使用共享订阅模式。 在 sink 里的 concurrency 设置:设置运行的线程数。该参数值大于1时,消息发出的顺序可能无法保证。 在

在我们睡觉的时候,程序能不能自动查 bug?

二次信任 提交于 2019-12-06 13:55:45
作者介绍:我和我的 SQL 队(成员:杜沁园、韩玉博、黄宝灵、满俊朋),他们的项目「基于路径统计的 sql bug root cause 分析」获得了 TiDB Hackathon 2019 的三等奖。 曾在 Hacker News 上看到过一个 Oracle 工程师处理 bug 的 日常 : 先花两周左右时间来理解 20 个参数如何通过神奇的组合引发 bug。 改了几行代码,尝试对 bug 进行修复,提交测试集群开始跑近百万个测试 case,通常要 20~30 小时。 运气好的话会有 100 多个 case 没过,有时候上千个也有可能,只好挑选几个来看,发现还有 10 个参数之前没有注意到。 又过了两周,终于找到了引起 bug 的真正参数组合,并跑通了所有测试。并增加 100 多个测试 case 确保覆盖他的修改。 经过一个多月的代码 review,他的修改终于合并了,开始处理下一个 bug…… 后来这个工程师感慨说:“I don't work for Oracle anymore. Will never work for Oracle again!” Oracle 12.2 有将近 2500 万行 C 代码,复杂系统的测试是一件艰难、艰苦和艰巨的事情。而测试一个分布式数据库的情况就更复杂了,我们永远不知道用户可能写出什么样的 SQL,表结构和索引有多少种组合

在我们睡觉的时候,程序能不能自动查 bug?

匆匆过客 提交于 2019-12-06 07:39:15
作者介绍:我和我的 SQL 队(成员:杜沁园、韩玉博、黄宝灵、满俊朋),他们的项目「基于路径统计的 sql bug root cause 分析」获得了 TiDB Hackathon 2019 的三等奖。 曾在 Hacker News 上看到过一个 Oracle 工程师处理 bug 的 日常 : 先花两周左右时间来理解 20 个参数如何通过神奇的组合引发 bug。 改了几行代码,尝试对 bug 进行修复,提交测试集群开始跑近百万个测试 case,通常要 20~30 小时。 运气好的话会有 100 多个 case 没过,有时候上千个也有可能,只好挑选几个来看,发现还有 10 个参数之前没有注意到。 又过了两周,终于找到了引起 bug 的真正参数组合,并跑通了所有测试。并增加 100 多个测试 case 确保覆盖他的修改。 经过一个多月的代码 review,他的修改终于合并了,开始处理下一个 bug…… 后来这个工程师感慨说:“I don't work for Oracle anymore. Will never work for Oracle again!” Oracle 12.2 有将近 2500 万行 C 代码,复杂系统的测试是一件艰难、艰苦和艰巨的事情。而测试一个分布式数据库的情况就更复杂了,我们永远不知道用户可能写出什么样的 SQL,表结构和索引有多少种组合

在我们睡觉的时候,程序能不能自动查 bug?

孤街浪徒 提交于 2019-12-06 07:34:50
作者介绍:我和我的 SQL 队(成员:杜沁园、韩玉博、黄宝灵、满俊朋),他们的项目「基于路径统计的 sql bug root cause 分析」获得了 TiDB Hackathon 2019 的三等奖。 曾在 Hacker News 上看到过一个 Oracle 工程师处理 bug 的 日常 : 先花两周左右时间来理解 20 个参数如何通过神奇的组合引发 bug。 改了几行代码,尝试对 bug 进行修复,提交测试集群开始跑近百万个测试 case,通常要 20~30 小时。 运气好的话会有 100 多个 case 没过,有时候上千个也有可能,只好挑选几个来看,发现还有 10 个参数之前没有注意到。 又过了两周,终于找到了引起 bug 的真正参数组合,并跑通了所有测试。并增加 100 多个测试 case 确保覆盖他的修改。 经过一个多月的代码 review,他的修改终于合并了,开始处理下一个 bug…… 后来这个工程师感慨说:“I don't work for Oracle anymore. Will never work for Oracle again!” Oracle 12.2 有将近 2500 万行 C 代码,复杂系统的测试是一件艰难、艰苦和艰巨的事情。而测试一个分布式数据库的情况就更复杂了,我们永远不知道用户可能写出什么样的 SQL,表结构和索引有多少种组合