关闭

[置顶] 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。...
阅读(174) 评论(0)

[置顶] 缓存在高并发场景下的常见问题

缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 缓存并发问题缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发场景下,有可能多个请求并发的去从数据库获取数据,对后端数据库造成极...
阅读(4703) 评论(5)

[置顶] RPC是什么?

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

[置顶] 如何提高缓存命中率

缓存命中率的介绍命中:可以直接通过缓存获取到需要的数据。不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。如何监控缓存的命中率在memcach...
阅读(4999) 评论(1)

[置顶] 细说缓存在大型网站架构中的应用

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

[置顶] 水平分库分表的关键步骤和技术难点

在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称...
阅读(6576) 评论(1)

[置顶] 分库分表的几种常见玩法及如何解决跨库查询等问题

在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表垂直分表在...
阅读(13409) 评论(5)

[置顶] 影响数据库性能的因素

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

[置顶] APP多版本共存,服务端如何兼容?

小改动或者新加功能的 这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存。 尽量采用数据库层面新增字段和API的方式,应用程序层面就可以兼容了。当然,API层面也可以部署多个版本来同时提供,但这个不是必须的 但最重要的是数据库层面的表结构那些能够兼容到。 或者: 总结: 数据库层面,尽量采用新增字段,而不是修改字段的原则,避免影响以前的业务。...
阅读(7745) 评论(3)

[置顶] 分布式事务及分布式系统一致性解决方案

在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDB...
阅读(14467) 评论(2)

[置顶] 也谈阻塞、非阻塞、同步、异步

最近在招聘中,发现不少人对BIO、NIO、AIO等理解非常模糊,觉得有必要写文章来纠正下很多人的误解。 在谈这些之前,非常有必要先介绍下Unix 5种IO模型: 阻塞: 阻塞是最常用的IO模型,默认情况下所有的文件操作都是阻塞的。以套接字编程为例。在进程空间中调用recvfrom,其系统调用直到数据报文到达且被拷贝到应用程序进程的缓存区(或者发生错误)后才返回,期间一直在等待。进程在从调用re...
阅读(2478) 评论(3)

[置顶] sqlserver性能调优方法论与常用工具

早期的文章中,曾经提到过性能调优中的DETECT方法论,这里先简单回顾一下DETECT方法论。Discover the problem :发现问题Explore the conditions:探究原因Track down possible approaches:提供可能解决的方式Execute the most likely approach:执行最好可能的解决方式Check of success...
阅读(2225) 评论(0)

[置顶] 大型网站架构体系的演变(下)

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

[置顶] 大型网站架构体系的演变(上)

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

[置顶] SOA之基于服务总线的设计

在上文中,主要介绍了SOA的概念,什么叫做“服务”,“服务”应该具备哪些特性。本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计。基于服务总线的设计基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据)。在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是“点对点”的通信方式,但是这样会暴露出一些很明显的问题:系统之间紧密耦合、配置和引用混乱...
阅读(11326) 评论(0)

[置顶] SOA是什么

曾今SOA的概念犹如今日“云计算、大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA。而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大厂商的呼吁,使得SOA往往显得“高大上”,令不少企业和架构师们望而却步。第二种恰好相反,有部分人却认为SOA无非是“新瓶装旧酒”。 个人理解,SOA在宏观上确实太复杂,因为它涉及到的不仅仅是技术和架构...
阅读(3427) 评论(3)

[置顶] B-Tree索引在sqlserver和mysql中的应用

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

[置顶] Tier和Layer

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

[置顶] 大型网站图片服务器架构的演进

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

[置顶] 90%的程序员无法正确实现二分查找算法???

前言            ProgrammingPearls(《编程珠玑》)一书的作者Jon Bentley曾经说过类似的话:“90%的程序员无法正确实现二分查找算法...”      言下之意,只有1/10的程序员能够写出“二分查找算法”来。昨天我突然又看到了这句话,于是就随时打开eclipse写下了,还算顺利。 关于“二分查找算法” "二分查找算法",很多地方也被称作是“...
阅读(3150) 评论(2)

[置顶] 分布式缓存那些事儿

在前面的一些文章中,从实战的角度,讲解了有关memcached的应用、容灾、监控等等。但是缺乏对理论的讲解和原理性的剖析。本文将从理论的角度去介绍,让大家从宏观上对“分布式缓存、nosql”等技术有所了解,以便进一步学习和使用。在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而喻。分布式缓存概述1.1 分布式缓存的特性分布式缓存具有如下特性:1) 高性能:当传统数据库面临大规模...
阅读(32444) 评论(4)

[置顶] sqlserver性能调优入门篇

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

[置顶] “集群和负载均衡”等的通俗解释

在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信不少朋友都听说过甚至常与人提起“集群,负载均衡”等,但不是所有人都有机会真正接触到这些技术,也不是所有人都真正理解了这些“听起来很牛的”技术名词。下面简单解释一下吧。       集群(Cluster)  所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以...
阅读(9280) 评论(15)

[置顶] 关于NoSQL的选型和使用

【内容简介】NoSQL,指的是非关系型的数据库。随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站时,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。就像AK47是非洲人的身份证一样,NoSQL技能如今已成为Web开发软件工程师的必备技能之一。【使用NoSQL...
阅读(7261) 评论(4)

[置顶] RAID在企业服务器中的应用(RAID几种级别)

企业级的数据库应用大多部署在RAID磁盘阵列的服务器上,这样能提高磁盘的访问性能,并能够实现容错/容灾。RAID(冗余磁盘阵列),简单理解,就是拿一些廉价的硬盘来做成阵列。其目的无非是为了扩展存储容量,提升读写性能,实现数据冗余(备份容灾)。就像很早就有老外拿N台旧PC,做成一个强大的“服务器集群”。RAID技术诞生于1987年,由美国加州大学伯克利分校提出。主流的大概可以分为几个级别:RAID...
阅读(19035) 评论(7)

[置顶] javascript中创建对象的几种方式

前言:         随着web 2.0 的兴起(最具代表性的是Ajax技术了),javascript不再是程序员眼中的“玩具语言”。 编程在不断的简化,可是“用户体验、性能、兼容性、可扩展......”要求却在不断提高,随之涌现出Prototype、jQuery、ExtJs、Dojo等优秀的框架(类库),大大简化了web开发。       越来越多的人开始深入研究和使用javascript,当...
阅读(8465) 评论(4)

[置顶] 程序员,你真的懂得收发电子邮件吗?

前言在几年以前,相信不少朋友都听说过,马云同志创办阿里巴巴的时候,还不会发邮件。也不知道在阿里巴巴上市之后,他学会收发邮件了没有!呵呵。我是曾经从内心里“瞧不起”过,至少认为在这一点上我比他强很多。后来我才发现,我未必懂得收发邮件。除了我,还有很多的码农也根本不懂得收发邮件,更不懂得Email里面的工作原理。借此,向大家介绍一下和Email相关的技术。老实说,我在七八年前就有了自己的雅虎邮箱,一直...
阅读(8621) 评论(18)

[置顶] asp.net中常用的几种身份验证方式

前言在B/S系统开发中,经常需要使用“身份验证”。因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性。通俗点来说:对于大多数的内部系统、业务支撑平台等而言,用户必须登录,否则无法访问和操作任何页面。而对于互联网(网站)而言,又有些差异,因为通...
阅读(2957) 评论(1)

[置顶] .NET好书盘点(二)

上篇中向大家推荐了一些比较不错的书籍,但大多是比较基础的,适合入门或参考。本文中,我将会推荐一些偏高级的技术书籍,当然,包括软件工程,数据库等领域。1.数据库方面的:【SQL 必知必会(第3版)】把这本书排第一个,不是因为它是最好的。我个人觉得,拿这本书学习sql语句入门还不错,例如写写连接查询,分组,排序......【SQL Server编程必知必会】这是上本书的“升级版”,主要是讲解T-SQL...
阅读(5183) 评论(7)

[置顶] .NET好书盘点(一)

本人身为一个典型的技术宅,平时看了一些技术书籍。算不上是“博览群书”,但也涉猎不少。抽空出来整理一下,把个人认为不错的推荐给大家,希望能帮助到同仁们。注:本文标题是“.NET...”,但并不局限于.NET领域的,也涵盖一些web开发,数据库相关的等。本人也不是什么高手或者大牛,所以几乎可以完全排除“书托”的嫌疑。(排名部分先后,按记忆整理。基本是按照一般人的学习顺序来的。如果您有自己的不同看法或者...
阅读(14332) 评论(38)

[置顶] 写给想从事数据库方面工作的朋友

经常有人问我,有关数据库方面的职位、职业规划、转型等相关的问题。对于经常听到的“DBA(数据库管理员)、数据库开发工程师、数据挖掘工程师、数据库架构师......”这些职位,之前我也比较迷惑,甚至搞不清楚这些岗位具体的工作任务和职责,更别提什么职业规划了。后来询问了一些专门从事数据库方面工作的朋友,也查了一些资料,加入了自己的一点点见解。抽空整理了一下,写出本文,希望能够帮助到想走这条路的朋友。由...
阅读(28157) 评论(6)

[置顶] Asp.net中服务端控件事件是如何触发的?

初学ASP.NET的时候,曾被各种控件的强大功能所折服。当然,也很容易被搞晕,仅仅记住那些控件的名字都不是一件简单的事儿,何况还有那么多的属性、事件、功能、配置步骤......哈哈。后来越发觉得这些东西确实没啥价值,在企业级开发中很少用到。 写本文的目的并不是要“贬低”或者刻意“排斥”webform中的服务端控件,这里对其优劣也不做过多的讨论。 不过有情提示初学者:其实很多控件的用法都...
阅读(5201) 评论(1)

[置顶] http协议与web本质

当你在浏览器地址栏敲入“http://www.csdn.net/”,然后猛按回车,呈现在你面前的,将是csdn的首页了(这真是废话,你会认为这是理所当然的)。作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?......疑惑和细节真是太多了。坦白讲,要想彻彻底底的弄清楚以...
阅读(7660) 评论(7)

[置顶] 解决AJAX跨域问题

从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在。这似乎是一个很经典的问题了。是由于javascript的同源策略(这里不作深入探讨)所导致。解决的办法,大概有如下几种:1. 使用中间层过渡的方式(可以理解为“代理”):中间过渡,很明显,就是在AJAX与不同域的服务器进行通讯的中间加一层过渡,这一层过渡可以是PHP、JSP、c++等任何具备网络通讯功能的语言,由中...
阅读(16415) 评论(2)

[置顶] sqlserver数据库大型应用解决方案总结

随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服...
阅读(3314) 评论(5)

[置顶] memcached单点故障与负载均衡

在上文中,主要教大家如何搭建在windows  IIS 7.5下搭建php环境,使用常见的两种memcached性能监视工具。通过自己动手实践,观察监控工具上数据,相信大家对于memcached的了解一定深入了很多。但是同样还有些疑惑。本文将用图文的方式,继续讲解memcached在集群环境下的使用技巧。曾经看到过这样的文字(大概是翻译过来的,算是比较权威的)memcached如何处理容错的?不处...
阅读(19679) 评论(8)

[置顶] memcached性能监控

在上文“在Windows .NET平台下使用Memcached”中,我给大家介绍了如何在Windows平台上部署Memecached服务端,如何在.NET平台中应用Memcached,详细介绍了两种流行的客户端组件的配置,使用(存储、取值、替换、删除、缓存时间设定等),优缺点等。在我们的测试项目中,主要是针对“单台服务器”的应用场景。事实上,在我们实际开发中,往往需要多台服务器。这样才能形成真正的...
阅读(15126) 评论(4)

[置顶] 由IsPostBack引发的思考(续)

上篇文章中讲了关于Page类的IsPostBack属性的相关知识,并引发了思考。本文中,将借助实例,来帮助大家更好的理解WebForm中的这些知识,相信读者会有意外的收获。 WebForm技术,看起来简单,做起来也看似很简单,但你真正深入去思考,去探索,会发现其非常非常的复杂。 好了,首先借助一个实例,来探索当发生“跨页投递”的这种情况时候,当前“响应页面”的IsPostBack和“请求页面”...
阅读(2939) 评论(0)

[置顶] 由IsPostBack引发的思考

我看过无数篇讲解webform相关技术文章,其中不乏优秀的。但是据我看来,大多只是“知其然而不知其所以然”。主要是教你“如何做”,而很少有人会讲解其背后的原理。 这大概和微软的整个技术体系有关。呵呵。当然,这不是本章介绍的重点。本章中,我将借助一个常见的IsPostBack属性,从web本质去讲解,希望能引发读者的思考。 关于IsPostBack的解释,网上一搜,真实铺天盖地的。但我认为,...
阅读(5517) 评论(1)

[置顶] 如何将DataTable转换成List<T>呢?

昨日在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型)。第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List泛型集合了),而且还要用到“反射”相关的。呵呵。很快,我就做出了一个小实例,测试通过。下面我将代码贴出来,分享给大家。代码都有详细的注释,读者朋友可以很清晰的看懂我的思路。 首先,这是我写的一个通用转换类,完成此类操作...
阅读(35315) 评论(17)

[置顶] 在Windows .NET平台下使用Memcached

网上关于Memcached的文章很多,但据我观察,大多是互相转载或者抄袭的,千篇一律。有些则是直接整理的一些超链接然后贴出来。那些超链接笔者大概都进去看了,其实关于Memcached的中文的技术文章,也就那么几篇,优秀的也就更少了。也许是笔者理解、学习能力太差了吧。最近在.NET项目中可能要使用到Memcached这款出色的分布式缓存系统,所以笔者就笨鸟先飞,先研究了一下下。下面我会将总结一下自己...
阅读(20927) 评论(20)

[置顶] 从XML文件乱码问题,探寻其背后的原理

在日常开发工作中,我们经常会使用到XML,早已成为了一种标准。它的用途非常的广泛,但这些不是本文所重点讨论的。 相信大家在做开始时候经常碰到过“乱码”的问题,这是中国程序员非常头疼的问题。我一直很想深入研究关于“编码”的原理,无奈水平有限,那些枯燥的理论(二进制,ASCII,Unicode,UTF-8,gb2312,ISO ...光这些就让我看的两眼发黑了),实在看不下去,也很难真正搞懂搞明白。...
阅读(13543) 评论(1)

[置顶] SQL Server 2008下轻松调试T-SQL语句和存储过程

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

[置顶] 浅谈大型web系统架构

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。  大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平...
阅读(62442) 评论(11)

sqlserver性能调优工具

工欲善其事,必先利其器......
阅读(1184) 评论(0)

sqlserver性能调优方法论

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

大公司c#&.net转型java的原因有哪些?

历来我就听说有编程语言“鄙视链”的说法,而如今月经贴上的那些事儿,还真让我给遇到了。以下内容来自知乎,纯属扯淡,易引发口水战,看完勿人身攻击。目的给盲目的公司决策者、开发人员科普下,有个客观清醒的认识。顺带给妄自菲薄的开发人员鼓励。问题:国内技术转型java的大公司,京东、点评,携程也在慢慢转型java,数据库由sql server在转型mysql,原因有哪些呢?我想到的原因有以下几点:1. 开源...
阅读(4701) 评论(0)
162条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:961420次
    • 积分:10607
    • 等级:
    • 排名:第1705名
    • 原创:142篇
    • 转载:15篇
    • 译文:5篇
    • 评论:394条
    作者简介
    丁码农,非知名架构师。略懂互联网高性能、高并发、高可用的分布式系统架构设计与实现。 在服务化、分库分表、消息中间件、性能调优、分布式搜索、NoSql等方面有一定的研究和实践经验。

    微信扫码,向我提问
    最新评论