- 博客(1138)
- 资源 (1)
- 收藏
- 关注
原创 阿里巴巴2022届应届生招聘 阿里云存储基础技术 研发&测试&算法
学弟学妹们好,我们是阿里云存储基础技术团队,正在进行2022届校招。团队业务核心,团队氛围nice,对于每位实习同学都会配师兄专职辅导。本次招聘为部门直招,简历直接推给Leader,反应更快速,合适不合适都会给反馈,机不可失~关于我们阿里云存储是目前国内规模最大的云存储服务商,拥有全球云计算厂商中最完整的存储产品线,包括块存储、对象存储、文件存储等存储系列产品。我们是存储下的基础技术团队,通过一致性协同服务、高性能网络、内核Tracing设施支持着阿里云存储的各个产品,同时也为阿里巴巴经
2021-07-29 18:41:42 928
原创 分布式系统核心—日志
分布式系统的核心组件:日志。有时也叫write-ahead logs 、commit logs 或者事物 logs, 通常指在应用所有的修改之前先写入日志,一般会将重放日志、撤销日志都写进去。 NoSQL数据库、KV存储、Hadoop、raft、paxos 以及版本控制等等,这些中间件或者协议本质上都或多或少依赖于日志,可以发现日志一直都在分布式系统中扮演者非常重要的角色。 ...
2019-02-17 17:56:54 5906 1
原创 Lamport 逻辑时钟
分布式系统中按是否存在节点交互可分为三类事件,一类发生于节点内部,二是发送事件,三是接收事件。注意: 以下文章中提及的时间戳如无特别说明,都指的是Lamport 逻辑时钟的时间戳,不是物理时钟的时间戳。 如果a在进程Pi中,b在进程Pj中,Ci(a) = Cj(b)且i < j,那么a在b之前。形式化一点,我们可以把系统事件E上的全序关系“=>”定义为: ...
2019-02-11 23:07:45 4272 1
原创 TCP连接阻塞的监控和处理
TCP连接阻塞的监控和处理那么,什么样的TCP连接属于上述发生阻塞的异常连接呢?结合线上运维经验,我们整理出符合该类异常的特征如下:该连接的Recv_Q的值特别大(超过3M) 该连接的Recv_Q的值持续上涨,造成堆积(在一定滑动时间窗口内) 服务...
2019-01-16 22:14:35 5423 1
转载 C++ 如何避免内存泄露
转载于:https://zhuanlan.zhihu.com/p/51898119前言近年来,讨论 C++ 的人越来越少了,一方面是由于像 Python,Go 等优秀的语言的流行,另一方面,大家也越来越明白一个道理,并不是所有的场景都必须使用 C++ 进行开发。Python 可以应付大部分对性能要求不高的场景,Go 可以应付大部分对并发要求较高的场景,而由于 C++ 的复杂性,只有在对性能...
2019-01-12 20:24:40 5072
原创 基于分布式一致性系统实现的分布式锁的生命期问题探究
基于分布式一致性系统实现的分布式锁的生命期问题探究分布式锁的生命期,即占有分布式锁所有权的Client与Quorum Server之间建立连接上耦合的Session的生命期,依赖着Client与Quorum Server之间定期心跳来更新。Client与Quorum Server,如果在本端...
2018-11-08 15:25:53 380 1
转载 filebeat工作原理
Filebeat工作原理Filebeat是本地文件的日志数据采集器。 作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,tail file,并将它们转发给Elasticsearch或Logstash进...
2018-10-30 00:15:22 2549
原创 leveldb之log文件
leveldb之log文件1. log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中...
2018-09-23 18:10:32 1719 4
原创 LevelDB系统的整体架构
LevelDB系统的整体架构 上图简单展示了 LevelDB 的整体架构。LevelDB 的静态结构主要由六个部分组成:MemTable:内存数据结构,具体实现是 SkipList。 接受用户的读写请求,...
2018-09-23 17:48:36 610
原创 Raft的PreVote实现机制
Raft的PreVote实现机制1. 背景在Basic Raft算法中,当一个Follower与其他节点网络隔离,如下图所示:Follower_2在electionTimeout没收到心跳之后,会发起选举,并转...
2018-09-19 23:54:43 2533 1
原创 分布式系统之数据分片
分布式系统之数据分片详细参考:http://www.cnblogs.com/xybaby/p/7076731.html...
2018-09-18 18:07:21 1031
转载 分布式存储的读修复和周期性静默修复的原理
分布式存储的读修复和周期性静默修复的原理 什么是静默错误?简单来说,就是磁盘写入数据返回成功,或者当时写入是正确的,放置一段时间后,由于硬件错误、固件 BUG 或者软件 BUG、供电问题、介质损坏等等各种原因,数据被改变了。正常来讲,分布式存储内部都会在读取数据时,或...
2018-09-04 23:26:17 1242
原创 HDD/SSD/NVM存储介质
HDD/SSD/NVM存储介质NonVolatile Memory,非易失存储器,具有非易失、按字节存取、存储密度高、低能耗、读写性能接近DRAM,但读写速度不对称,读远快于写,寿命有限(需要像ssd一样考虑磨损均衡)。当电流关...
2018-09-04 22:48:53 3349
转载 数据库为什么使用B+树而不是B树
数据库为什么使用B+树而不是B树B树和B+树的区别B树和B+树的区别主要有两点:在B树中,你可以将键和值存放在内部节点和叶子节点,但在B+树中,内部节点都是键,没有值。叶子节点同时存放键和值 B+树的叶子节点有一条链相连,而B+树的叶子节点各自独立。B树与B+树的对比示意图使用B+树...
2018-08-30 23:14:48 1584
原创 能耗相关名词介绍
能耗相关名词介绍1. ACPI: 高级配置和电源管理接口2. IPMI: 智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格IPMI协议被广泛用于服务器监控中,包括采集CPU温度、风扇转速、主板温度...
2018-07-24 09:12:02 1312
原创 获取机器当前CPU频率
获取机器当前CPU频率struct perf_cpu_info{ int tsc; int index; int mhz;};struct perf_cpu_info *cpu_list;static unsigned long long native_read_tsc(void...
2018-07-17 23:41:25 4812
原创 超线程简介
超线程简介超线程的技术原理超线程技术在一个物理核上模拟两个逻辑核,两个逻辑核具有各自独立的寄存器(eax、ebx、ecx、msr等等)和APIC,但会共享使用物理核的执行资源,包括执行引擎、L1/L2缓存、TLB和系统总线等等。超线程对性能的影响分析可以看出,超线程技术仅仅是在一个物理核心上使用了两个物理任务描述符,物理计算能力并没有增加。现在很多程序如web application, 都采用多w...
2018-07-04 22:36:14 3339
原创 关于CPU C-States 省电模式,你需要知道的事情
为了在CPU空闲的时候降低功耗,CPU可以被命令进入low-power模式。每个CPU都有几种power模式,这些模式被统称为C-states或者C-modes。lower-power模式最早在486DX4处理器上被引入,到现在,更多power mode被引入和增强,来进一步降低CPU的功耗。这些模式最基本的思想是通过CPU内部的idle unit切断CPU的clock信号和供电。越多的CPU单元...
2018-06-13 10:41:22 114738
原创 实现一个高性能网络通讯库的要点
实现一个高性能网络通讯库的要点 由于硬件的发展速度快,本来占时间消耗小头的软件层,变成了大头,原本占性能比例非常小的的中断、上下文切换,也成为了性能优化的方向。 许多bypass kernel的方案开始发展起来,以前在千兆网卡普及的时代,就有用户态报文处理框架如netmap,需要自己加载一个特殊的内核模块,将驱动使用的内存mmap到用户空间,供用户进程使用。也有我们现在在用的DPDK。...
2018-04-07 16:24:16 995
原创 网络QoS解决方案
网络QoS解决方案 在网络带宽不足时,对网络流量做区别服务。优先传输那些重要的、要求网络延迟小的、如果丢弃会导致更大业务代价的数据,并对不同应用的数据做合理的带宽分配与控制。如果一定需要丢弃一些数据,则丢弃那些代价比较低的。这就是网络 QoS 要实现的目标。 在数据包从网卡发出前修改IP包头的TOS字段的指定6bit的DSCP相应的值,使得数据包在被送到网络
2018-03-26 23:52:41 2693
原创 Redis 高可用架构最佳实践
Redis 高可用架构最佳实践1. Redis sentinel原理Sentinel 集群通过给定的配置文件发现 master,启动时会监控 master。通过向 master 发送 info 信息获得该服务器下面的所有从服务器。Sentinel 集群通过命令连接向被监视的主从服务器发送 hello 信息 (每秒一次),该信息包括 Sentinel 本身的 IP、
2018-03-18 18:36:06 559
转载 Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结Nginx对于中间件nginx常用来做流量的分发,同时nginx本身也有自己的缓存(容量有限),我们可以用来缓存热点数据,让用户的请求直接走缓存并返回,减少流向服务器的流量一、模板引擎通常我们可以配合使用freemaker/velocity等模板引擎来抗住大量的请求。小型系统可能直接在服务器端渲染出所有的页面并放入缓存,之...
2018-03-17 12:50:42 1012 2
转载 2018 存储技术热点与趋势总结
2018 存储技术热点与趋势总结https://mp.weixin.qq.com/s/lqWY8DBibCbdHTV-xiUmqA
2018-03-16 23:58:38 1062
原创 键值数据库PebblesDB读后感
键值数据库PebblesDB读后感 在LevelDB/RocksDB这种分层思路上,PebblesDB提出了一种减少写放大的思路,下面学习并总结,所述以论文为基础,也有个人 观点,客观论述请看原文。虽然LSM的写放大最近被研究很多,但是就写放大本身而言,是一个很古老的问题。在计算机体系中,如果相邻两层的处理单元不一致或者应用对一致性等有特殊的需求,就很可能出现
2018-03-16 23:47:51 1586
原创 分布式系统技术—心跳
分布式系统技术—心跳心跳顾名思义,就是以固定的频率向其他节点汇报当前节点状态的方式。收到心跳,一般可以认为一个节点和现在的网络拓扑是良好的。当然,心跳汇报时,一般也会携带一些附加的状态、元数据信息,以便管理。故障检测是任何一个拥有容错性的分布式系统的基本功能,而实际上所有的故障检测协议都基于心跳通讯机制,原理很简单,被监控的组件定期发送心跳信息给监控进程(或者由监控进程轮询被监控组件)
2018-03-11 22:56:42 7439 1
原创 Quorum Journal Manager原理
Quorum Journal Manager原理 在一个典型的HA集群,两个独立的物理节点配置为NameNodes。在任何时间点,其中之一NameNodes是处于Active状态,另一种是在Standby状态。 Active NameNode负责所有的客户端的操作,而Standby NameNode尽用来保存好足够多的状态,以提供快速的故障恢复能力。 为了保
2018-03-11 22:21:08 1691
原创 一种多级缓存的系统架构
一种多级缓存的系统架构 下面这个也是比较常用的多级缓存的系统架构图: 这是一个使用了多级缓存的系统。Nginx应用服务器的本地缓存解决了热点数据的缓存问题。Redis分布式缓存集群减少了访问回源率。Tomcat应用集群使用的平台级缓存防止了缓存失效/奔溃之后的冲击。数据库缓存提升了数据库查询时的效率。
2018-03-11 10:55:09 2326 1
原创 版本分支策略之思考
版本分支策略之思考下面给出一种比较好的版本分支策略:上面分支的解释:1. 长期存在的分支 a) master分支 (开发集成分支):用于开发阶段代码的集成,接受当前版本新特性代码的持续合入 b) live分支 (稳定集成分支):用于代码冻结后的稳定版本的持续集成,如需合入代码必须通过更加严格的review和测试。所有中版本 (e.g. v3.3, v3.4)在live分支上进行发布 c) x...
2018-03-10 19:28:42 1000
原创 zookeeper的服务容量和自我保护实现思考
zookeeper的服务容量和自我保护实现思考1)服务自我保护能力,通过基于租户+Throtting机制,能够对访问请求限流,确保核心服务自我恢复能力; 引入租户管理,为后续限流,性能统计等功能提供一个基础的信息;通过Throtting来达到API的限速(常见的有楼桶算法和令牌桶算法)。2)服务容量扩容能力,通过将部分流量迁移至新搭建Quorum,分散集群访问压力; 通过资源...
2018-03-10 16:23:14 926
原创 一致性哈希之应用twemproxy与codis
一致性哈希之应用twemproxy与codis一. twemproxytwemproxy 是 twitter 开源的一个轻量级的后端代理,兼容 redis/memcache 协议,可用以管理 redis/memcache 集群。 twemproxy 内部有实现一致性哈希算法,对于客户端而言,twemproxy 相当于是缓存数据库的入口,它无需知道后端的...
2018-03-08 22:28:06 2722
原创 HANA内存数据库简介
HANA内存数据库简介 SAP HANA是一个软硬件结合体,提供高性能的数据操作功能。HANA 的精髓就是把所有的数据放到内存里——离处理数据最近的地方,也是计算机全身除了CPU 速度最快的地方。而不像传统数据库,数据放在硬盘里,走过复杂的读操作,走过系统总线,在内存里被短暂的处理,然后再走过同样的路回去,躺在硬盘里。HANA的基本原理如下图所示:
2018-03-05 09:45:19 15804
原创 Fisher–Yates shuffle 洗牌算法
Fisher–Yates shuffle 洗牌算法 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。同时这个算法非常高效。 算法的复杂度是O(n),伪代码如下:-- To shuffle an array a of n elements (indices 0..n-1):
2018-02-24 15:43:35 804
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人