小米运维
小米技术
这个作者很懒,什么都没留下…
展开
-
2021-04-27
该账号内容已迁移至公众号“小米技术”, 获取最新小米技术相关内容及动态, 请在微信订阅号中搜索关注“小米技术”。 小米技术,定期推送有关小米云计算、大数据、人工智能等相关产品和技术文章,精品内容,等你来看!...原创 2021-04-27 16:05:39 · 141 阅读 · 0 评论 -
Talos读写一致性
前文《万亿级消息背后:小米消息队列的实践》整体介绍了 Talos。本文将深入介绍该系统设计中的关键问题—读写一致性。Talos 消息队列做为一种特殊的存储系统,其一致性包含两方面: 存储层多副本数据一致性 调度层处理逻辑的读写一致性 前者由 Talos 基于 HDFS 的存储层来保障,本文将详细展开调度层一致性逻辑。Talos中的读写一致性问题做为一个消息队列系统,需要保证消息的读写一致性。这需要满足两个方面: 单条消息是连续的字节存放,不同消息的字节数据不能交错存放转载 2020-05-22 17:45:34 · 537 阅读 · 0 评论 -
消息队列价值思考
目录一、日志与消息队列二、消息队列的应用价值 数据集成与系统解耦 异步处理与事件驱动 流量削峰 事务消息与分布式事务的最终一致 三、从历史看消息队列的价值演化四、小米的消息队列产品Talos与EMQ Talos/EMQ与开源产品的区别 Talos与EMQ的区别 五、后续文章六、参考文献时常会思考消息队列的...原创 2019-10-31 17:11:58 · 1379 阅读 · 0 评论 -
使用 python 实现简单的共享锁和排他锁
本文通过代码实操讲解了如何使用 python 实现简单的共享锁和排他锁。上篇文章回顾:记一次容量提升5倍的HttpDns业务Cache调优共享锁和排它锁1、什么是共享锁共享锁又称为读锁。从多线程的角度来讲,共享锁允许多个线程同时访问资源,但是对写资源只能又一个线程进行。从事务的角度来讲,若事务 T 对数据 A 加上共享锁,则事务 T 只能读 A; 其他事务也只能对数据 ...原创 2019-03-28 17:37:47 · 2544 阅读 · 1 评论 -
通过git bisect快速定位大型工程中的问题
本文介绍了如何通过git bisect来快速定位大型工程中所存在的问题背景在开发测试一个重IO操作的应用场景时,我们发现SSD的随机混合读写的数值,在 linux 4.9.2内核上和在linux 4.8.2上有很大的差异,基于此我们开始探索各种方法来解决定位的问题。 方法探...原创 2019-04-04 17:24:52 · 437 阅读 · 0 评论 -
记一次容量提升5倍的HttpDns业务Cache调优
本文主要介绍了HttpDns业务Cache调优的相关问题及解决办法。上篇文章回顾:小米自动化运维平台演进设计思路这是最近做的一次业务优化,以一个小方案的形式分享一下优化过程。业务简介公司内部叫Resolver服务,其本质是一个httpdns系统,以http形式提供域名解析的服务,用户在连接业务时,先通过Resolver服务获取ip地址列表,然后通过拿到的ip列表连接...原创 2019-03-26 17:28:38 · 334 阅读 · 0 评论 -
浅谈SYNPROXY
本文主要介绍了SYNPROXY的相关原理、DDoS简述、LVS相关应用等内容。上篇文章回顾:容器进程Core Dump处理SYNPROXY简述SYNPROXY是防御DDoS攻击的有力手段。SYNPROXY是一个TCP握手代理,原生支持是从Linux内核3.13开始的。当一个TCP请求从客户端发出时,首先与该握手代理进行三次握手,其采用SYNCookie技术,只有该请求通过cookie...原创 2019-03-12 17:03:26 · 2966 阅读 · 0 评论 -
crond不断唤起sendmail导致资源耗尽的排查
本文主要介绍了crond不断唤起sendmail导致资源耗尽的排查相关内容。上篇文章回顾:理解Nginx中Server和Location的匹配逻辑春节值班期间收到反馈,c3-im-msg-tun001.bj 和 c3-im-msg-tun002.bj 这两台服务器资源使用异常,主要是mem和disk,监控图如下,图中资源占用突降是手动清理进程和文件的结果,这种手段治标不治本。 ...原创 2019-03-19 17:15:39 · 616 阅读 · 1 评论 -
容器进程Core Dump处理
本文主要介绍了Core Dump实现容器进程的方法和相关内容。上篇文章回顾:IPv6入门教程引子在我们调试程序时经常会使用到core dump功能,使用调试器(如gdb)分析其产生的Core Dump文件(以下称"core文件"),对于排查问题、定位bug堪称无往不利的利器。当前容器技术使用愈加普遍,线上大量业务使用容器技术部署,那我们的业务进程在容器环境下core文件是如何产生、与在宿...原创 2019-03-07 17:06:26 · 1362 阅读 · 0 评论 -
理解Nginx中Server和Location的匹配逻辑
本文主要介绍了Server和Location匹配逻辑相关内容。上篇文章回顾:浅谈SYNPROXYServer的匹配逻辑Nginx在决定请求由哪个server块执行时,主要关注的是server块中的listen和server_name两个字段listen指令listen字段定义server响应的ip和端口,如果没有明确配置listen字段,默认监听0.0.0.0:80(root)或...原创 2019-03-14 17:08:53 · 627 阅读 · 0 评论 -
golang中的slice操作
本文总结了Go语言中切片的一些使用技巧和在实际使用中可能会踩“坑”的地方上篇文章回顾:bats-Bash自动化测试工具 Go语言中的切片切片(slice)是Go语言中最基本和最常用的数据结构之一,在本文中希望可以帮助读者更好的使用这一数据结构。 ...原创 2019-02-26 17:05:14 · 935 阅读 · 0 评论 -
IPv6入门教程
本篇文章主要从基础概念、IPv6的相关网络工具、关于移动应用在IPv6和IPv4网络环境中自动降级机制的研究等三个方面介绍了IPv6的入门教程。上篇文章回顾:gRPC-web现状及测试 前言众所周知,32位的IPv4地址已经基本耗尽(这里的耗尽只是说的分配完了,实际上有相当一部分并没有投入到使用中),新一...原创 2019-03-05 17:02:27 · 5008 阅读 · 0 评论 -
公有云运维福利-开源监控小工具:Open-Falcon插件cloud-mon
本文介绍了一款基于Open-Falcon的公有云运维监控工具及使用说明。上篇文章回顾:使用python实现简单的共享锁和排他锁背景当你成为公有云的一名管理员,权限和安全之间的权衡便成为了始终萦绕在我们身边的一个话题。每天在我们专心解决问题,或者code的时候,一会儿有人来找你:能不能帮我们看看×××机器所在的NAT网关带宽多大呀?目前使用量是什么情况呀?一会儿有人问:我们在做业务...转载 2019-04-02 17:07:10 · 1058 阅读 · 0 评论 -
MacPorts打包过程简介
本文主要为大家介绍一下MacPorts的打包过程。往期回顾:通过git bisect快速定位大型工程中的问题MacPorts 与 HomebrewHomebrew 相信很多人都听说过,它是 macOS 上用户最多的包管理软件。但 macOS 上的包管理软件并非只有 Homebrew 一家,MacPorts、Nix 也是各有其独特之处的 macOS 包管理器。MacPorts 与...原创 2019-04-09 17:35:11 · 362 阅读 · 0 评论 -
如何解决Redis中的key过期问题
最近我们在Redis集群中发现了一个有趣的问题。在花费大量时间进行调试和测试后,通过更改key过期,我们可以将某些集群中的Redis内存使用量减少25%。Twitter内部运行着多个缓存服务。其中一个是由Redis实现的。我们的Redis集群中存储了一些Twitter重要的用例数据,例如展示和参与度数据、广告支出计数和直接消息。问题背景早在2016年初,Twitter的Cache团队就...转载 2019-04-25 18:59:06 · 1770 阅读 · 0 评论 -
Docker最佳实践:5个方法精简镜像
精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患。优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而有差异。本文将介绍精简Docker镜像的几种通用方法。精简Docker镜像大小的必要性Docker镜像由很多镜像层(Layers)组成(最多127层),镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-wri...转载 2019-07-04 19:24:57 · 2162 阅读 · 0 评论 -
HBase实战:记一次Safepoint导致长时间STW的踩坑之旅
本文记录了HBase中Safepoint导致长时间STW此问题的解决思路及办法。上篇文章回顾:HBase Replication详解过 程 记 录现象:小米有一个比较大的公共离线HBase集群,用户很多,每天有大量的MapReduce或Spark离线分析任务在进行访问,同时有很多其他在线集群Replication过来的数据写入,集群因为读写压力较大,且离线分析任务对延迟不...原创 2019-07-02 17:00:00 · 2447 阅读 · 1 评论 -
HBaseConAsia2019 盛会来袭
号外!号外!第三届Apache HBaseConAsia 峰会将于【7月20日】在北京金隅喜来登举行~!HBaseCon大会是Apache HBase™官方自2012年发起并延续至今的技术峰会。作为Apache基金会旗下HBase社区的顶级用户峰会,届时将会有超20位来自亚洲一线互联网和大数据生态相关企业的技术专家和社区领袖亮相峰会,带来HBase及大数据技术生态的最新洞察和行业实践。...原创 2019-07-08 16:02:05 · 2060 阅读 · 0 评论 -
HDFS短路读详解
本文介绍了HDFS的短路读演进、安全的短路读以及小米在安全短路读的优化。上篇文章回顾:HDFS Decommission问题分析背景Hadoop的一个重要思想就是移动计算,而不是移动数据。我们更愿意尽可能将计算移动到数据所在节点。因此,HDFS中经常出现客户端和数据在一个节点上,当客户端读取一个数据块时,就会出现本地读取。例如HBase场景,ResionServer写数据一般在HDFS中...原创 2019-06-04 17:03:22 · 1949 阅读 · 0 评论 -
记一次kubernetes集群异常:kubelet连接apiserver超时
本文通过记录kubelet连接apiserver超时问题的原因及修复办法。上篇文章回顾:一文读懂HBase多租户背 景kubernetes是master-slave结构,master node是集群的大脑,当master node发生故障时整个集群都"out of control"。master node中最重要的当属apiserver组件,它负责处理所有请求,并持久化状态到etc...原创 2019-06-11 17:00:00 · 4950 阅读 · 1 评论 -
记一次Open-Falcon-Graph频繁OOM问题排查
本文介绍了Falcon-Graph模块频繁OOM的排查经过及解决办法。上篇文章回顾:浅谈Dcoker的安全性支持(下篇)业务背景Falcon-Graph负责将监控数据持久化,供用户后期查询、汇总等功能。4月初,Open-Falcon业务量逐渐上升,由0.29billion counter增长至现在0.32 billion,由此带来graph集群内存占比平均上升8%(now:...原创 2019-05-28 17:02:42 · 890 阅读 · 0 评论 -
HDFS Decommission问题分析
本文通过更改配置及数据结构改造,快速解决HDFS Decommission缓慢问题。上篇文章回顾:记一次Open-Falcon-Graph频繁OOM问题排查背景c3prc-xiami有大量raid单副本文件,decommission单个datanode速度很慢,观察监控指标,发现: 网卡流量始终保持低速,60~80mb/s 磁盘io util也是单个磁盘100%在某...转载 2019-05-30 17:10:48 · 1036 阅读 · 0 评论 -
Golang 1.x版本泛型编程
Go是一门天生为服务器程序设计的简洁的语言,因此Go的设计原则聚焦在可扩展性、可读性和并发性,而多态性并不是这门语言的设计初衷,因此就被放在了一边。虽然在2.0版本之前还没有泛型的支持,但是Go自带的一些语言特性可以满足一些类似“泛型”的要求,比如内置类型: array slice map chan 这四种类型可以用任意类型的元素初始化,例如map[your...转载 2019-04-23 17:02:07 · 739 阅读 · 0 评论 -
浅谈动态追踪技术
本文主要介绍了动态追踪技术,并举例说明动态追踪技术的应用。身为一个SRE,工作中经常会遇到各种奇奇怪怪的服务异常问题。这些问题在staging(测试环境)没有发现,但放到真实的生产环境就会碰到,最关键的是难以复现,某些问题可能是几个月才会复现。初次碰到可能会手忙脚乱,暴力的解决手段是将机器拉下线,然后开始专家会诊,但是脱离了线上真实环境,没有线上真实流量,某些问题可能不好复现了,这种方...原创 2019-04-18 18:17:45 · 9591 阅读 · 0 评论 -
bats-Bash自动化测试工具
本文分析了bats--Bash自动化测试工具的安装、语法、常用指令及常用函数等内容。上篇文章回顾:学习RAID 01/10/10E的区别bats 是一个符合 TAP 标准 的 Bash 版测试框架,它使用了一种极为简便的方法来验证命令行程序是否正常运行。bats 要求 Bash 的最低版本是 3.2.57 ,bats 测试文件实际上一个 bash 的脚本文件,完全可以使用 shell 的...原创 2019-02-19 17:06:10 · 1916 阅读 · 0 评论 -
gRPC-网络现状及测试
本文主要介绍了gRPC,网络现状及测试的简介,好不好用等相关内容。上篇文章回顾:golang中的切片操作 gRPC是什么?gRPC是谷歌开源的一款不那么快的基于原型缓冲区的RPC框架。既然不那么快,为什么还要提它呢?相较于节俭,gRPC会慢一点,但是,本文的着眼点并不在于RPC吞吐量的极限值,也不是框架的通...原创 2019-02-28 17:05:39 · 1205 阅读 · 0 评论 -
从HBase offheap到Netty的内存管理
本文主要介绍了Netty的内存管理和性能。相关文章回顾:HBase 2.0之修复工具HBCK2运维指南 HBase的offheap现状HBase作为一款流行的分布式NoSQL数据库,被各个公司大量应用,其中有很多业务场景,例如信息流和广告业务,对访问的吞吐和延迟要求都非常高。HBase2.0为了尽最大可能避免J...原创 2019-02-28 10:22:09 · 528 阅读 · 0 评论 -
初探Firewalld
本文主要从概念及架构、核心组成、常用命令等几个方面详细介绍了Firewalld,并附加介绍了iptables四表五链和netfilter的知识。上篇文章回顾:Linux日志服务初识 一、简介1、Firewalld提供更加智能化的防火墙管理规则,优化策略配置方案,支持网络“zones(域)”,并为网络及其关联的链接、接口或源分配信任级别,不同信任级别默认开放服务不同。2、支持IPV...原创 2019-01-11 09:47:29 · 414 阅读 · 0 评论 -
2018年度小米运维盘点
元旦假期一眨眼就没了,2018年也嗖的一下就过去了,这一年里发生的大事件你都还记得吗?下面就让小编带你回顾一下过去这一年里小米运维的知识点吧!2018年我们推送了很多被读者认可的文章,这些文章涵盖了DPDK LVS、SQL协议、监控等方面的内容,可见跟我们一起成长的童鞋都是技能全面、知识面广阔的最酷工程师。为了帮助大家回顾今年学到的知识点,我们在101篇文章中筛选出年度TOP 9的文章:...原创 2019-01-04 10:27:42 · 7758 阅读 · 2 评论 -
GO interface实现分析
本文介绍了Go语言中接口(interface)的内部实现、nil interface和nil的区别以及使用时的一些坑。上篇文章回顾:Elasticsearch SQL用法详解前言接口(interface)代表一种“约定”或“协议”,是多个方法声明的集合。允许在非显示关联情况下,组合并调用其它类型的方法。接口无需依赖类型,带来的优点就是减少调用者可视化方法,隐藏类型内部结构和具体方法实现细...原创 2018-12-19 10:27:21 · 818 阅读 · 0 评论 -
被抛弃的tcp_recycle
本文从一次巧合发现高版本Linux不再支持tcp_tw_recycle,深入研究了连接状态TIME_WAIT的原理,进而分析了tcp_tw族内核参数和如何应用它们对Linux的连接进行调优。上篇文章回顾:任播、自治系统与全球负载均衡1、背景最近准备搭建一个新的kubernetes集群,将内核从3.18更新到了4.14版本,并执行一些常规的优化操作。在执行sysctl -p操作时突然...原创 2018-12-24 10:14:51 · 5611 阅读 · 0 评论 -
由ORM谈Python元类
本文主要介绍了什么是类,如何动态的创建类,什么是元类,类的_metaclass_属性以及如何自己实现ORM。上篇文章回顾:浅谈TLS 1.3 在谈Python元类之前,我们先来看看ORM是什么:ORM 为Object Relational Mapping 的简称,中文意思为对象关系映射,ORM的出现,是为了解决面向对象和关系数据库之间不相匹配而出现的技术,目的是使用面向对象的思...原创 2018-12-28 12:59:03 · 206 阅读 · 0 评论 -
Elasticsearch SQL用法详解
本文详细介绍了不同版本中Elasticsearch SQL的使用方法,总结了实际中常用的方法和操作,并给出了几个具体例子。上篇文章回顾:看示例学awk一、5.x中ES-SQL用法Elasticsearch 5.x版本中,SQL功能还没有集成到Elasticsearch源码中,需要下载第三方插件后才能使用,配置过程如下: 1.安装ES-SQL依赖node npm ES-SQL...原创 2018-12-17 13:54:39 · 6880 阅读 · 1 评论 -
浅谈DHCP协议
本文从分配方式、工作过程、租约、数据包格式、中继代理等几个方面介绍了DHCP协议对IPV4地址的分配过程。上篇文章回顾:GO interface实现分析概要DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,使用udp协议进行工作,可以为局域网的客户端动态的分配IP地址。DHCP协议有常用的三个端口,分别为67,68和546。其中6...原创 2018-12-21 10:02:23 · 278 阅读 · 0 评论 -
浅谈 TLS 1.3
本文主要从TLS 1.3的优势、部署和时间发展线介绍了这种用于为计算机网络通信提供安全性的密码协议TLS。上篇文章回顾:浅谈DHCP协议 TLS简介按照维基百科的定义,TLS 是一种用于为计算机网络通信提供安全性的密码协议,其前身安全套接层(SSL)想必很多人都听说过。TLS 被广泛应用于基于 IP 的网络协议,如 HTTP、SMTP、FTP 等。最近几年内,Let's En...原创 2018-12-26 18:25:26 · 1870 阅读 · 0 评论 -
Linux IPsec离奇事件
本文通过复盘排查IPSec故障的整体过程,揭示分析故障的方法,以及通过该故障学习相关知识。上篇文章回顾:被抛弃的tcp_recycle由于业务需要,我们在海外的某些节点上搭建了VPN,方便海外节点之间的数据交互,某天我们在两个新节点之间搭建了一条新的VPN,上线之后Ping、traceroute测试无异常,观察已经有流量通过,监控指标等一切正常。但是过了半个小时后,业务反馈两个新节点之...原创 2018-12-06 17:21:50 · 363 阅读 · 0 评论 -
小米开源的自研智能SQL优化与改写工具SOAR使用指南
本文简述了SOAR的下载安装和使用方法,并介绍了SOAR的基础设置和应用的四个场景。上篇文章回顾:基于线性回归的故障恢复时间预测在10月20日的开源先锋日(OSCAR)上,小米开源了自研的SOAR(SQL Optimizer And Rewriter)。这是一款智能SQL优化和改写工具,开发人员可以直接通过此工具快速的对自己的SQL进行质量检查,生成评估报告,防止将问题SQL带到线上从...原创 2018-10-25 13:37:35 · 5424 阅读 · 1 评论 -
阵列卡缓存电池充放电问题详解
本文主要详细解释了与阵列卡缓存电池充放电相关的各方面的问题。上篇文章回顾:由ORM谈Python元类 磁盘阵列是服务器上历史悠久的一项技术,它能够通过不同的阵列模式合理利用空间和性能配比出性价比极高的磁盘阵列,被大部分服务器OEM厂商所广泛采用。其中以LSI公司的MegaRAID SAS产品为主,广泛用于各品牌(除惠普外)x86服务器。为何有缓存?阵列卡核心技术包含三部分内...原创 2019-01-02 09:38:07 · 1869 阅读 · 0 评论 -
任播、自治系统与全球负载均衡
本文由DNS出发,分别介绍了任播、自治系统及负载均衡和容灾等相关网络知识。上篇文章回顾:模拟网络状态的利器TC //前言//我在初中的时候遇到过一个问题:家里的联通宽带没有下发DNS地址,导致不能上网,年幼的我掏出了我的小米8(笑),帅气地打开搜索引擎,键入:DNS没了怎么办看来现在这个问题也很火啊第一个页面就是114DNS,专属于SRE的嗅觉告诉我,这就是我要的答案,将...原创 2019-01-07 12:44:13 · 695 阅读 · 1 评论 -
Apache Ranger——Hadoop ACL控制工具
本文主要通过ranger在hdfs acl中的应用以及原理介绍一下ranger的使用,另外介绍一下实际使用过程中碰到的问题。上篇文章回顾:时间服务器—NTP目前公司内部大多通过数据工场来管理hdfs上的数据,工场开发团队和hdfs、yarn的SRE同学也配合紧密。由于涉及到管理数据,那么不得不说到权限控制的问题。接触过hadoop的同学都应该了解hdfs上数据的权限类似linux中的权限...原创 2019-01-17 17:15:13 · 1356 阅读 · 0 评论