- 博客(62)
- 资源 (38)
- 收藏
- 关注
原创 阿里巴巴稳定性保障体系
阿里巴巴稳定性保障体系作者介绍步崖,曾就职于阿里巴巴和蚂蚁金服。熟悉高并发、高可用架构,稳定性保障等。热衷于技术研究和分享,发表过”分布式事务”、”分布式缓存”等多篇文章被广泛阅读和转载前言我从业之初便开始扮演“救火队员”角色,经常去线上执行“救火”、止损、攻关等应急工作,再通过一系列的分析、推理、验证…“抽丝剥茧”的找出背后的根本原因并解决掉,仿佛“经验丰富、从容冷静、思维缜密”的侦探,非常有成就感。以前我一直认为线上问题定位、分析处理能力是技术人员的“看家功底”并常引..
2021-01-24 18:27:41 5424 3
原创 阿里巴巴开源限流降级神器Sentinel大规模生产级应用实践
阿里巴巴开源限流降级神器Sentinel大规模生产级应用实践题图:前言互联网上关于限流算法、Sentinel功能介绍、基本结构、原理分析的文章可谓汗牛充栋,我并不打算重复制造内容。我将为大家分享在实际工作和生产环境中使用、踩坑的经验。如果你正在做限流、熔断的技术选型,那么本文将会为你提供客观、有价值的参考;如果你将来要在生产环境中使用Sentinel,那么本文将会帮助你后续少走弯路;如果你正在准备求职面试,或许可以帮你的技能树和经验上增加亮点,避免你...
2021-01-24 18:16:50 760 1
原创 当我们在谈论“服务治理”的时候,都在谈论些什么?
高并发、高可用架构系列–带你构建大规模分布式服务阅读本(系列)文章,你将会收获:全面、体系化的了解大规模分布式系统中的服务治理一线互联网公司如何应对高并发、大流量场景,稳定性保障体系揭秘(高并发高可用必备)常见限流算法的实现,阿里巴巴(历年双十一)限流、熔断保护利器sentinel的设计原理和实践经验(高并发高可用必备)高性能、高可用配置中心的本质、架构设计思想、原理和实践经验(微服...
2020-01-05 17:51:10 680 1
原创 使用异常还是错误码?
#异常使用和处理建议###使用异常代替错误码这曾经是个社区争论不休的话题,多数人是选择异常替代错误码的。反对者中,有人认为不应该使用异常去控制程序流程,也有些人认为只有"数据库连不上"这种系统异常才算异常,还有些人认为异常会有额外的性能开销…使用异常代替错误码,可以使得代码更清晰,可读性更好,更符合面向对象。况且有些方法压根就是void的无返回值的。至于性能开销这个通常可以忽略。当然,这个...
2019-06-22 18:06:46 4372
原创 缓存在高并发场景下的常见问题
缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 缓存并发问题缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发场景下,有可能多个请求并发的去从数据库获取数据,对后端数据库造成极
2016-12-05 12:41:24 9308 5
原创 RPC是什么?
RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。
2016-12-04 12:54:32 47376 1
原创 如何提高缓存命中率
缓存命中率的介绍命中:可以直接通过缓存获取到需要的数据。不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。如何监控缓存的命中率在memcach
2016-12-01 12:59:22 14931 3
原创 细说缓存在大型网站架构中的应用
缓存的基本知识在整个计算机体系构造中(无论是硬件层面还是软件层面),缓存都是无处不在的。在计算机硬件构造中,由于两种介质的速度不匹配,高速介质在和低速介质交互时速度趋向低速方,这就导致了高速介质的资源闲置。而通过引入第三种介质(速度和成本介于两者中间),将低速方读写的部分内容数据保存在该介质中,高速方大多数情况下则无需和低速方直接交互,这样就能整体提升了交互的性能。这就是计算机体系中缓存的由来。
2016-11-26 21:35:41 3043
原创 水平分库分表的关键步骤和技术难点
在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称
2016-11-17 09:42:10 16476 1
原创 分库分表的几种常见玩法及如何解决跨库查询等问题
在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表垂直分表在
2016-11-17 09:40:20 70537 11
原创 影响数据库性能的因素
论坛上的数据库爱好者们,对于数据库底层的各种细节,内幕,等待事件,隐藏参数等津津乐道,对于调整好一条SQL语句使之在查询优化器/查询引擎下能高性能运转具有巨大的满足感成功感,仿佛自己掌握了天下最有价值的真理,驾驭了天下最有难度的技术。但对于设计和开发出这个数据库系统的人来说,他们看到此情此景,只好躲在一边偷偷的笑了。那么问题来了,使用别人数据库的人被称为大师(如:OCM),那么自己写出一个数据库来的
2016-08-24 21:51:20 4914
原创 APP多版本共存,服务端如何兼容?
小改动或者新加功能的 这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存。 尽量采用数据库层面新增字段和API的方式,应用程序层面就可以兼容了。当然,API层面也可以部署多个版本来同时提供,但这个不是必须的 但最重要的是数据库层面的表结构那些能够兼容到。 或者: 总结: 数据库层面,尽量采用新增字段,而不是修改字段的原则,避免影响以前的业务。
2016-07-02 11:51:32 21308 3
原创 分布式事务及分布式系统一致性解决方案
在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDB
2016-07-02 10:46:24 21047 4
原创 也谈阻塞、非阻塞、同步、异步
最近在招聘中,发现不少人对BIO、NIO、AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解。 在谈这些之前,非常有必要先介绍下Unix 5种IO模型: 阻塞: 阻塞是最常用的IO模型,默认情况下所有的文件操作都是阻塞的。以套接字编程为例。在进程空间中调用recvfrom,其系统调用直到数据报文到达且被拷贝到应用程序进程的缓存区(或者发生错误)后才返回,期间一直在等待。进程在从调用re
2016-01-05 12:27:05 3992 3
原创 sqlserver性能调优方法论与常用工具
早期的文章中,曾经提到过性能调优中的DETECT方法论,这里先简单回顾一下DETECT方法论。Discover the problem :发现问题Explore the conditions:探究原因Track down possible approaches:提供可能解决的方式Execute the most likely approach:执行最好可能的解决方式Check of success
2015-06-13 11:05:11 3986
原创 大型网站架构体系的演变(下)
互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从应用程序的角度去介绍网站架构的扩展和演变。
2015-06-07 12:13:01 9696 5
原创 大型网站架构体系的演变(上)
互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从应用程序的角度去介绍网站架构的扩展和演变。
2015-06-07 11:28:38 15951 5
原创 SOA之基于服务总线的设计
在上文中,主要介绍了SOA的概念,什么叫做“服务”,“服务”应该具备哪些特性。本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计。基于服务总线的设计基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据)。在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是“点对点”的通信方式,但是这样会暴露出一些很明显的问题:系统之间紧密耦合、配置和引用混乱
2015-03-21 16:43:14 20810
原创 SOA是什么
曾今SOA的概念犹如今日“云计算、大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA。而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大厂商的呼吁,使得SOA往往显得“高大上”,令不少企业和架构师们望而却步。第二种恰好相反,有部分人却认为SOA无非是“新瓶装旧酒”。 个人理解,SOA在宏观上确实太复杂,因为它涉及到的不仅仅是技术和架构
2015-03-21 16:21:19 13396 3
原创 B-Tree索引在sqlserver和mysql中的应用
在谈论数据库性能优化的时候,通常都会提到“索引”,但很多人其实没有真正理解索引,并没有搞清楚索引为什么能加快检索速度,以至于在实践中并不能很好的应用索引。事实上,索引可以说是最廉价而且十分有效一种优化手段。一般而言,设计优良的索引对查询性能优化确实能起到立竿见影的效果。
2014-11-23 23:48:50 7560
原创 大型网站图片服务器架构的演进
在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足,造成后期架构上很难兼容和扩展)。本文将以一个真实垂直门户网站的发展历程,向大家娓娓道来。
2014-06-16 21:40:21 28671 5
原创 90%的程序员无法正确实现二分查找算法???
前言 ProgrammingPearls(《编程珠玑》)一书的作者Jon Bentley曾经说过类似的话:“90%的程序员无法正确实现二分查找算法...” 言下之意,只有1/10的程序员能够写出“二分查找算法”来。昨天我突然又看到了这句话,于是就随时打开eclipse写下了,还算顺利。关于“二分查找算法”"二分查找算法",很多地方也被称作是“
2014-03-03 22:55:58 4307 3
原创 分布式缓存那些事儿
在前面的一些文章中,从实战的角度,讲解了有关memcached的应用、容灾、监控等等。但是缺乏对理论的讲解和原理性的剖析。本文将从理论的角度去介绍,让大家从宏观上对“分布式缓存、nosql”等技术有所了解,以便进一步学习和使用。在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而喻。分布式缓存概述1.1 分布式缓存的特性分布式缓存具有如下特性:1) 高性能:当传统数据库面临大规模
2013-06-10 15:17:22 39540 4
原创 sqlserver性能调优入门篇
相信不少的朋友,无论是做开发、架构的,还是DBA等,都经常听说“调优”这个词。说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼。当然,也有很多人对此不屑一顾,因为并不是每个人接触到的项目都很大,也不是每个人做的项目都对性能要求很高。在主流的企业级开发和互联网应用中,数据库的重要性是不言而喻的,而数据库的性能对于整个系统的性能而言也是至关重要的,这里无庸赘述。sqlserve
2013-03-16 23:55:11 8418 3
原创 “集群和负载均衡”等的通俗解释
在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技术,也不是所有人都真正理解了这些“听起来很牛的”技术名词。下面简单解释一下吧。 集群(Cluster) 所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以
2012-12-16 20:02:30 12198 16
原创 关于NoSQL的选型和使用
【内容简介】NoSQL,指的是非关系型的数据库。随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站时,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。就像AK47是非洲人的身份证一样,NoSQL技能如今已成为Web开发软件工程师的必备技能之一。【使用NoSQL
2012-11-13 15:31:29 8685 3
原创 RAID在企业服务器中的应用(RAID几种级别)
企业级的数据库应用大多部署在RAID磁盘阵列的服务器上,这样能提高磁盘的访问性能,并能够实现容错/容灾。RAID(冗余磁盘阵列),简单理解,就是拿一些廉价的硬盘来做成阵列。其目的无非是为了扩展存储容量,提升读写性能,实现数据冗余(备份容灾)。就像很早就有老外拿N台旧PC,做成一个强大的“服务器集群”。RAID技术诞生于1987年,由美国加州大学伯克利分校提出。主流的大概可以分为几个级别:RAID
2012-09-09 16:55:10 25752 7
原创 javascript中创建对象的几种方式
前言: 随着web 2.0 的兴起(最具代表性的是Ajax技术了),javascript不再是程序员眼中的“玩具语言”。 编程在不断的简化,可是“用户体验、性能、兼容性、可扩展......”要求却在不断提高,随之涌现出Prototype、jQuery、ExtJs、Dojo等优秀的框架(类库),大大简化了web开发。 越来越多的人开始深入研究和使用javascript,当
2012-08-27 22:24:33 21496 4
原创 写给想从事数据库方面工作的朋友
经常有人问我,有关数据库方面的职位、职业规划、转型等相关的问题。对于经常听到的“DBA(数据库管理员)、数据库开发工程师、数据挖掘工程师、数据库架构师......”这些职位,之前我也比较迷惑,甚至搞不清楚这些岗位具体的工作任务和职责,更别提什么职业规划了。后来询问了一些专门从事数据库方面工作的朋友,也查了一些资料,加入了自己的一点点见解。抽空整理了一下,写出本文,希望能够帮助到想走这条路的朋友。由
2012-04-12 13:02:50 42696 8
原创 sqlserver数据库大型应用解决方案总结
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服
2012-01-04 17:08:14 4088 4
原创 从XML文件乱码问题,探寻其背后的原理
在日常开发工作中,我们经常会使用到XML,早已成为了一种标准。它的用途非常的广泛,但这些不是本文所重点讨论的。相信大家在做开始时候经常碰到过“乱码”的问题,这是中国程序员非常头疼的问题。我一直很想深入研究关于“编码”的原理,无奈水平有限,那些枯燥的理论(二进制,ASCII,Unicode,UTF-8,gb2312,ISO ...光这些就让我看的两眼发黑了),实在看不下去,也很难真正搞懂搞明白。
2011-10-21 23:16:24 28318 1
原创 SQL Server 2008下轻松调试T-SQL语句和存储过程
今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了。于是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGE
2011-10-19 10:57:32 80886 6
转载 浅谈大型web系统架构
动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平
2011-10-11 18:27:00 71154 10
原创 Apache shenyu,Java 微服务网关的首选
简单总结一下网关的职责:- 请求流量的路由转发、负载均衡- 安全验证(身份认证、请求鉴权等)- 限流、熔断- 日志、指标度量等- 协议适配- 请求缓存- ...
2023-09-19 09:56:13 1129
转载 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
最近在对CDN进行优化,对浏览器缓存深入研究了一下,记录一下,方便后来者画了一个草图:每个状态的详细说明如下:1、Last-Modified在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修改的时间,格式类似这样:Last-Modified:Tue, 24
2014-07-26 12:42:58 2328 1
转载 cache策略实现的原理(200、304返回码含义)
什么是cache?定义:浏览器缓存(Browser Caching)是为了加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。cache的作用:1、减少延迟,让你的网站更快,提高用户体验。2、避免网络拥塞,减少请求量,减少输出带宽。 页面内容Cache策略:目前我们业务的JS、css、静态页面文件和图片等资源
2014-07-26 12:37:36 7106
原创 sql连接查询中,where关键字的位置
最近一直在忙,也没有太多时间停留下来写博客。晚上遇到一个觉得很有趣的sql题,可能对初学者和我这种菜鸟会有帮助,所以决定分享给大家。由于笔者天生笨拙,且思维不严谨,也实在不擅长写sql语句,高手请勿见笑,就请直接跳过本文吧。背景就不多介绍了,先建表,插入测试数据吧。字段那些都有注释--医生表CREATE TABLE doctor ( id INT IDENTITY(1, 1)
2012-08-20 23:56:38 5712 9
汪渊 - 技术领导者的产品哲学_myslide.cn_.pdf
2020-11-23
进化的覆盖率--实时代码染色_2019_0625_1500_pub【tool.lu】.pdf
2020-10-03
和坚-什么样的企业需要中台【tool.lu】.pdf
2020-10-02
淘宝技术部技术专家陈康贤(龙隆) - 网游直充如何应对大促及突发的流量高峰_myslide.cn_.pdf
2020-10-02
Sentinel 微服务流控降级实践-Eric Zhao-DTED-201907.pdf
2019-08-11
Sentinel 1.6.0 网关流控新特性介绍-Eric Zhao-DTED-201905.pdf
2019-08-11
微博应对突发热点事件的弹性调度实践 胡忠想 微博_myslide.cn_.pdf
2019-08-11
滴滴稳定性体系建设
2019-02-17
Hacking the Code ASP.NET Web Application Security.pdf
2013-07-30
Building Secure ASP.NET Applications.pdf 微软
2013-07-30
MongoDB管理与开发精要
2012-06-28
mysql 5.1 中文参考手册
2012-05-26
enyim-EnyimMemcached源代码
2011-10-29
Memcached-1.49 源代码
2011-10-29
memcached-1.2.4-Win32
2011-10-29
Memcached Providers 1.2 For .NET 3.5
2011-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人