自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丁码农

Committed to building High-Performance 、High-Availability 、Scalable 、Security Web Applications ...

原创 当我们在谈论“服务治理”的时候,都在谈论些什么?

高并发、高可用架构系列 –带你构建大规模分布式服务 阅读本(系列)文章,你将会收获: 全面、体系化的了解大规模分布式系统中的服务治理 一线互联网公司如何应对高并发、大流量场景,稳定性保障体系揭秘(高并发高可用必备) 常见限流算法的实现,阿里巴巴(历年双十一)限流、熔断保护利器sentinel的设...

2020-01-05 17:51:10 144 1

原创 使用异常还是错误码?

#异常使用和处理建议 ###使用异常代替错误码 这曾经是个社区争论不休的话题,多数人是选择异常替代错误码的。反对者中,有人认为不应该使用异常去控制程序流程,也有些人认为只有"数据库连不上"这种系统异常才算异常,还有些人认为异常会有额外的性能开销… 使用异常代替错误码,可以使得代...

2019-06-22 18:06:46 658 0

原创 缓存在高并发场景下的常见问题

缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 缓存并发问题缓存过期后将尝试从后端数据库获取数据,这...

2016-12-05 12:41:24 8458 5

原创 RPC是什么?

RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。

2016-12-04 12:54:32 17085 1

原创 如何提高缓存命中率

缓存命中率的介绍命中:可以直接通过缓存获取到需要的数据。不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强...

2016-12-01 12:59:22 13104 3

原创 细说缓存在大型网站架构中的应用

缓存的基本知识在整个计算机体系构造中(无论是硬件层面还是软件层面),缓存都是无处不在的。在计算机硬件构造中,由于两种介质的速度不匹配,高速介质在和低速介质交互时速度趋向低速方,这就导致了高速介质的资源闲置。而通过引入第三种介质(速度和成本介于两者中间),将低速方读写的部分内容数据保存在该介质中,高...

2016-11-26 21:35:41 2663 0

原创 水平分库分表的关键步骤和技术难点

在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器...

2016-11-17 09:42:10 14689 1

原创 分库分表的几种常见玩法及如何解决跨库查询等问题

在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此...

2016-11-17 09:40:20 61882 9

原创 影响数据库性能的因素

论坛上的数据库爱好者们,对于数据库底层的各种细节,内幕,等待事件,隐藏参数等津津乐道,对于调整好一条SQL语句使之在查询优化器/查询引擎下能高性能运转具有巨大的满足感成功感,仿佛自己掌握了天下最有价值的真理,驾驭了天下最有难度的技术。但对于设计和开发出这个数据库系统的人来说,他们看到此情此景,只好...

2016-08-24 21:51:20 3816 0

原创 APP多版本共存,服务端如何兼容?

小改动或者新加功能的 这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存。 尽量采用数据库层面新增字段和API的方式,应用程序层面就可以兼容了。当然,API层面也可以部署多个版本来同时提供,但这个不是必须的 但最重要的是数据库层面的表结构那些能够兼容...

2016-07-02 11:51:32 17907 3

原创 分布式事务及分布式系统一致性解决方案

在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在...

2016-07-02 10:46:24 19189 3

原创 也谈阻塞、非阻塞、同步、异步

最近在招聘中,发现不少人对BIO、NIO、AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解。 在谈这些之前,非常有必要先介绍下Unix 5种IO模型: 阻塞: 阻塞是最常用的IO模型,默认情况下所有的文件操作都是阻塞的。以套接字编程为例。在进程空间中调用recvfrom,其系统调用...

2016-01-05 12:27:05 3174 3

原创 sqlserver性能调优方法论与常用工具

早期的文章中,曾经提到过性能调优中的DETECT方法论,这里先简单回顾一下DETECT方法论。Discover the problem :发现问题Explore the conditions:探究原因Track down possible approaches:提供可能解决的方式Execute t...

2015-06-13 11:05:11 3253 0

原创 大型网站架构体系的演变(下)

互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。 本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从应用程序的角度去介绍网站架构的扩展和演变。

2015-06-07 12:13:01 9070 5

原创 大型网站架构体系的演变(上)

互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。 本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从应用程序的角度去介绍网站架构的扩展和演变。

2015-06-07 11:28:38 14989 5

原创 SOA之基于服务总线的设计

在上文中,主要介绍了SOA的概念,什么叫做“服务”,“服务”应该具备哪些特性。本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计。基于服务总线的设计基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据)。在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较...

2015-03-21 16:43:14 17640 0

原创 SOA是什么

曾今SOA的概念犹如今日“云计算、大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA。而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大厂商的呼吁,使得SOA往往显得“高大上”,令不少企业和架构师们望而却步。第二种恰好相反,有部分人却...

2015-03-21 16:21:19 5310 3

原创 B-Tree索引在sqlserver和mysql中的应用

在谈论数据库性能优化的时候,通常都会提到“索引”,但很多人其实没有真正理解索引,并没有搞清楚索引为什么能加快检索速度,以至于在实践中并不能很好的应用索引。 事实上,索引可以说是最廉价而且十分有效一种优化手段。一般而言,设计优良的索引对查询性能优化确实能起到立竿见影的效果。

2014-11-23 23:48:50 6101 0

原创 Tier和Layer

笔者总结了实践中对架构的一些理解,希望能够补充很多初学者对架构认识上的不足,纠正初学者的一些误解。

2014-08-17 11:43:43 10339 2

原创 大型网站图片服务器架构的演进

在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足,造成后期架构上很难兼容和扩展)。 本文将以一个真实垂直门户网站的发展历程,向大家娓娓道来。

2014-06-16 21:40:21 27647 5

原创 90%的程序员无法正确实现二分查找算法???

前言            ProgrammingPearls(《编程珠玑》)一书的作者Jon Bentley曾经说过类似的话:“90%的程序员无法正确实现二分查找算法...”      言下之意,只有1/10的程序员能够写出“二分查找算法”来。昨天我突然又看到了这句话,于是就随时打开ec...

2014-03-03 22:55:58 3834 2

原创 分布式缓存那些事儿

在前面的一些文章中,从实战的角度,讲解了有关memcached的应用、容灾、监控等等。但是缺乏对理论的讲解和原理性的剖析。本文将从理论的角度去介绍,让大家从宏观上对“分布式缓存、nosql”等技术有所了解,以便进一步学习和使用。在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而...

2013-06-10 15:17:22 36795 4

原创 sqlserver性能调优入门篇

相信不少的朋友,无论是做开发、架构的,还是DBA等,都经常听说“调优”这个词。说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼。当然,也有很多人对此不屑一顾,因为并不是每个人接触到的项目都很大,也不是每个人做的项目都对性能要求很高。在主流的企业级开发和互联网应用中,数据库的...

2013-03-16 23:55:11 7296 3

原创 “集群和负载均衡”等的通俗解释

在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技术,也不是所有人都真正理解了这些“听起来很牛的”技术名词。下面简单解释一下吧。       集群(Cluster)  所谓集群...

2012-12-16 20:02:30 11592 16

原创 关于NoSQL的选型和使用

【内容简介】NoSQL,指的是非关系型的数据库。随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站时,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。就像AK...

2012-11-13 15:31:29 8050 3

原创 RAID在企业服务器中的应用(RAID几种级别)

企业级的数据库应用大多部署在RAID磁盘阵列的服务器上,这样能提高磁盘的访问性能,并能够实现容错/容灾。RAID(冗余磁盘阵列),简单理解,就是拿一些廉价的硬盘来做成阵列。其目的无非是为了扩展存储容量,提升读写性能,实现数据冗余(备份容灾)。就像很早就有老外拿N台旧PC,做成一个强大的“服务器集群...

2012-09-09 16:55:10 22678 7

原创 javascript中创建对象的几种方式

前言:         随着web 2.0 的兴起(最具代表性的是Ajax技术了),javascript不再是程序员眼中的“玩具语言”。 编程在不断的简化,可是“用户体验、性能、兼容性、可扩展......”要求却在不断提高,随之涌现出Prototype、jQuery、ExtJs、Dojo等优秀的框...

2012-08-27 22:24:33 11808 4

原创 写给想从事数据库方面工作的朋友

经常有人问我,有关数据库方面的职位、职业规划、转型等相关的问题。对于经常听到的“DBA(数据库管理员)、数据库开发工程师、数据挖掘工程师、数据库架构师......”这些职位,之前我也比较迷惑,甚至搞不清楚这些岗位具体的工作任务和职责,更别提什么职业规划了。后来询问了一些专门从事数据库方面工作的朋友...

2012-04-12 13:02:50 40441 8

原创 sqlserver数据库大型应用解决方案总结

随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器...

2012-01-04 17:08:14 3585 4

原创 从XML文件乱码问题,探寻其背后的原理

在日常开发工作中,我们经常会使用到XML,早已成为了一种标准。它的用途非常的广泛,但这些不是本文所重点讨论的。 相信大家在做开始时候经常碰到过“乱码”的问题,这是中国程序员非常头疼的问题。我一直很想深入研究关于“编码”的原理,无奈水平有限,那些枯燥的理论(二进制,ASCII,Unicode,UT...

2011-10-21 23:16:24 19977 1

原创 SQL Server 2008下轻松调试T-SQL语句和存储过程

今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了。 于是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGE

2011-10-19 10:57:32 76311 6

原创 浅谈大型web系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。  大型动态应用系统平台主要是针对于大流量、高并发网站建立的底...

2011-10-11 18:27:00 68962 10

原创 sqlserver性能调优工具

工欲善其事,必先利其器...

2016-08-24 22:27:59 2011 0

原创 sqlserver性能调优方法论

在《浅谈sqlserver性能调优》中文末有提到DETECT方法论,这里展开介绍一下...

2016-08-24 22:23:28 1501 0

转载 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明

最近在对CDN进行优化,对浏览器缓存深入研究了一下,记录一下,方便后来者画了一个草图:每个状态的详细说明如下:1、Last-Modified在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse H...

2014-07-26 12:42:58 1995 1

转载 cache策略实现的原理(200、304返回码含义)

什么是cache?定义:浏览器缓存(Browser Caching)是为了加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。cache的作用:1、减少延迟,让你的网站更快,提高用户体验。2、避免网络拥塞,减...

2014-07-26 12:37:36 6347 0

原创 sql连接查询中,where关键字的位置

最近一直在忙,也没有太多时间停留下来写博客。晚上遇到一个觉得很有趣的sql题,可能对初学者和我这种菜鸟会有帮助,所以决定分享给大家。由于笔者天生笨拙,且思维不严谨,也实在不擅长写sql语句,高手请勿见笑,就请直接跳过本文吧。背景就不多介绍了,先建表,插入测试数据吧。字段那些都有注释--医生表 CR...

2012-08-20 23:56:38 4797 9

转载 技术普及帖:你刚才在淘宝上买了一件东西

你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com。这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是 不一样的,这首先涉及到负载均...

2012-02-25 15:06:33 2085 0

原创 浅谈sqlserver中的事务和锁

昨日“拜读”《sqlserver2005高级程序设计》和《SQL Server 2008编程入门经典(第3版)》这两本翻译后的中文版书籍。竟然发现目录结构大致一样,其讲解的内容几乎差不多。有抄袭的嫌疑。看到“事务和锁”那一张中,发现连举的小例子、表格都一模一样。哈哈。。。对这类书籍,真不想做太...

2012-01-16 10:09:51 5221 1

原创 表复制语句(SELECT INTO 和 INSERT INTO SELECT )

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到tab...

2011-12-22 14:09:44 1695 0

提示
确定要删除当前文章?
取消 删除