摘要:
背景 曾今SOA的概念犹如今日“云计算、大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA.而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大厂商的呼吁,使得SOA往往显得“高大上”,令不少企业和架构师们望而却步.第二种恰好相反,有部分 阅读全文
摘要:
由于现在的互联网企业业务比较繁忙,导致产品狗不停地提需求,还总是改来改去,最后留给程序猿的时间少之又少。程序猿也不是吃素的,干脆直接copy一下代码随便搞一下实现功能就行,也谈不上所谓的精心设计了。这样的确是缩短了开发的时间,但是到处都是重复代码,大大提高了软件维护的成本,为日后软件的发展带来了隐患 阅读全文
摘要:
大对象演化过程: 在很多遗留的系统中,当我们将数千行的大函数分解成数十个小函数时,却出现了另一个问题,就是这些小函数在类中杂乱无章地放着,使得这个类成为功能无所不包的超级类,功能极度耦合,稍作修改就可能踩坑,引入一些Bug。 大对象拆分方法 拆分大对象的方法就是“抽取类”:过程其实非常简单,就是将原 阅读全文
摘要:
如何写好一个方法? 1.方法名 方法名最好用英文缩写,每个单词首字母大写:例如GetHotelNameByCode 2.是否有返回值 如果有返回值,看是什么类型,例如string类型,把类型名(string)放在方法名前面;如果没有返回值,则把void放在方法名前面 3.是否为公有方法 如果是共有方 阅读全文
摘要:
你被爬虫侵扰过么?当你看到“爬虫”两个字的时候,是不是已经有点血脉贲张的感觉了?千万要忍耐,稍稍做点什么,就可以在名义上让他们胜利,实际上让他们受损失。 一、为什么要反爬虫 1、爬虫占总PV比例较高,这样浪费钱(尤其是三月份爬虫)。 三月份爬虫是个什么概念呢?每年的三月份我们会迎接一次爬虫高峰期。 阅读全文
摘要:
一.CAP起源 CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance)都需要的情景,然而这是不可能都实 阅读全文
摘要:
本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种Scale-up : 纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Sc 阅读全文
摘要:
一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 一、积累是必不可少的 架构师不是一天练成的。 1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几 阅读全文
摘要:
大规模流量的网站架构,从来都是慢慢“成长”而来。而这个过程中,会遇到很多问题,在不断解决问题的过程中,Web系统变得越来越大。并且,新的挑战又往往出现在旧的解决方案之上。 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会 阅读全文
摘要:
不论什么系统,采用什么架构,都应该从“分解大函数”开始,这样做准没错! 分解大函数前的准备 梳理大函数逻辑:认真阅读大函数的源码,添加必要的注释,调整不合理的代码顺序,将代码分段,将前后有明显关系的代码放在一起。 分解大函数实质 其实就是“抽取方法”,将被我们分段、加注释的代码从原函数里边抽取出来, 阅读全文