- 博客(54)
- 收藏
- 关注
原创 架构师速成-架构目标之伸缩性\安全性
为满足伸缩性,所需的架构模式包含:分布式,这个前面有单独的章节进行了讲解,分布式是互联网时代的主旋律。负载均衡,前面已经有讲解。服务拆分,按照业务进行系统服务的拆分并单独部署。为满足伸缩性,需要的支撑系统:运维系统:自动扩容,缩容监控系统监控流量,确定何时伸缩为满足安全性,所需的架构模式包含:数据加密,密码的加密存
2015-09-16 09:00:58
811
1
原创 架构师速成-架构目标之可用性
服务器等,从而共同完成工作任务。各种负载均衡的软硬件有很多,我们可以单独讲解一下。配置中心,原来单一节点的配置,被类似zookeeper的多节点配置中心取代。流量控制,流量控制是保证大流量下系统可用性的重要手段,当系统流量不足以支撑所有流量时,只保留合理的流量处理。其他流量直接丢弃,否则系统会被压垮,造成雪崩。功能降级,另外大流量情况下,有些无关紧要的功能可以暂时降级,后期通过数据补全的方式进行修
2015-09-13 21:34:30
696
原创 架构师速成-架构目标之正确性
本系统架构模式:统一异常统一异常处理是保证程序正确性的第一步,这是第一个架构模式。具体如何实现,详见前面的文章。日志日志也是保证程序正确的一大手段,虽然是在错误出现后,日志才会记录。但是日志是快速确认问题,并分析出隐藏问题的重要手段。关键点日志文件按照级别进行区分,将错误和普通调试日志分开日志文件滚动方式,可以按天及按大小滚动,定时清理日志级别可以实时调整设置性
2015-09-08 19:37:46
685
原创 架构师速成-架构的目标
架构的目标为了实现以下特性:正确性系统首先需要正确,运行稳定可用性软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠,一般99.99%是一个比较基本的要求。快速开发互联网目前是一个快鱼吃慢鱼的时代,已经不是大鱼吃小鱼了。因为小鱼在一夜之间就长大了,把大鱼吃掉了。诺基亚就是明证,facebook就是明证。良好体验良好的体验对用户
2015-09-07 11:39:53
689
原创 架构师速成-架构体系
经过这段时间的反思和整理,终于对架构有了一个较为明确的理解。架构是产品从无到有以及慢慢壮大过程中所需要的全部技术体系总称,架构过程:配置、编码、测试、运维、监控分析、安全、运营等一系列技术体系的选型、取舍技术选型基础上进行规划、设计、实现、迭代、制定相关规范相关技术及规范运用到产品开发的整个过程中,并在产品迭代过程中对架构进行迭代优化架构不止包含技术的框架,比如有人用了spring
2015-09-05 20:24:02
919
原创 程序员都很闷骚
假定:程序员都是闷骚的程序员有独特的搞笑方式程序员80%都不满于现状,需要发泄程序员都有一点色所以:子龙左手青釭剑,右手亮银枪,跨下白龙马,一身白盔白甲,帅到爆炸!如今我们左手xmind,右手eclipse,uml在脚下,也是无比潇(ku)洒(bi) 他们是喜欢的亚美蝶,揍我不行,揍我小舅子可以。 他们是喜欢的老板说:哎呀,我们方向错了,我们重新搞一个方向吧!(产品、码农、
2015-08-14 08:25:53
2101
原创 架构师速成8.4-分库分表的关键点
我们还是由浅入深(这个词我喜欢,你呢?)的讨论一下,分库分表的关键点(本故事纯属虚构,仅为搞笑):当你的系统很小的时候,只有一个数据库,每个表的主键都是自增的,你都不去关心主键变成了多少,反正db保证自增,小日子过的很是惬意。但惬意的日子总是短暂的,你因为DB宕机被老板fire 3次(见上一个故事)。进入第4个公司的时候,你发粪涂墙,将集群改成主备HA,结果顺利出任CTO,迎娶白富美,走向
2015-08-13 09:13:57
1433
原创 架构师速成-有关架构的思考
架构是什么?架构的目标是什么?如果解决这2个问题,可能我能更好的梳理杂乱的架构理论。经过2天的思考,总算有了一点眉目。我们从一个产品的本质来说,追本朔源,自上而下:大概就是这样的,当然架构不止需要解决这些问题,本产品只是其中一个部分,要支撑一个web产品还需要依赖很多的外部公共系统,对这些系统整合也算作架构的范畴。架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于
2015-08-11 08:55:16
1307
原创 架构师速成8.3-可用性之分库分表
有状态分布式,涉及的知识就比较多了,不过我们可以拿几个现实的例子由浅入深的来理解。数据库的分库分表假设你是一个开发负责人,开始使用单机的数据库,突然一天数据库硬盘挂掉了。你没有做备份,然后就没有然后了。进入第2个公司,你意识到备份的重要性,每天定时备份到另一台机器,突然有一天,数据库硬盘挂掉了。你心想幸好我有备份,然后巴拉巴拉的恢复起来,用了2个小时。老板说不错,但是—-我们因为宕
2015-08-10 08:00:18
1922
2
原创 架构师速成-如何高效编程
今天看见有个csdn的征文大赛,谈谈如何高效编程,正好之前有些感触,先沉淀下来。引子赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境。那枪浑身上下,若舞梨花;遍体纷纷,如飘瑞雪。赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手。为什么?其实古时打仗也是一门技术活,需要有勇有谋,跟it没有什么太大的区别。打仗要修身、修
2015-08-08 18:07:55
3080
原创 架构师速成8.3-可用性之分布式
分布式算是软件界发展的一个里程碑,它开辟一个新的软件时代,其他的溢美之词我就不再乱说了。分布式按照我的观点,应该分为有状态和无状态2种:有状态分布式数据库分布式存储无状态分布式计算分布式web系统当然分布式尽量做成无状态的分布式,但是存储最终因为最终存储的是有状态的数据,所以不得不变的有状态。当然web系统也可以是有状态的,但是最好做成无状态的,因为
2015-08-08 09:45:55
2164
3
原创 架构师速成8.3-可用性
作为一个软件系统可用性是第一位的,如果一个系统不可用,你其他的地方做的再怎么好,然并卵。一般什么情况下软件会不可用:我方发生故障,导致系统不可用,当然会出现单机的不可用及n多机器群的全部不可用。程序故障 功能错误、程序退出系统故障 CPU超负荷、内存超负荷、网络超负荷物理故障 机器死机 断电 断网不可恢复故障 地震、海啸等等客户方也会发生相同故障,导致系统不可用,
2015-08-07 09:18:22
1061
1
转载 架构师速成8.3-架构师必须要了解的规则
作为一个架构师,有些规则是必须要掌握的,这就想软件的公理,如果你学物理不知道牛顿定律,那就不要学了。在软件行业也有类似的东西,我称之为软件定律。例如:ACID,CAP,BASEACID传统数据库系统中,事务具有ACID 4个属性(1)原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。(2)一致性(Consis
2015-08-07 09:17:22
862
原创 架构师速成6.15-开发框架-单点登录
单点登录应该归为架构的部分了,但是一般网站在开始的时候最好有单点登录的思想,防止后期再做大量的修改。而且单点登录对于开发人员来说并没有增加太多额外的工作量,所以提前讲一下对大家都是好的。先说一下单点登录的机制(摘自百度百科,给我广告费):当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返
2015-08-06 07:10:50
1086
原创 架构师速成6.14-开发框架-异常处理
异常为什么需要单独一节来讲解呢?因为异常是软件设计里一项需要架构者自己构思处理的一个特殊部分。一般的框架没有提供统一的处理方式,而且会被很多同学忘记处理,或者是比较粗糙处理掉。想一想有很多网站出错时,用户会看到一大段的英文异常,甚至执行的sql都包含在里面,你会不会觉得很不专业呢?首先异常应该分类,确定异常分类至关重要,这是后期进行不同处理的基础:业务异常,是用户在执行业务请求时,
2015-08-05 08:52:53
955
原创 架构师速成6.13-开发框架-前后结合
前面说完了前端和后端的封装,本节再单独讲解一下哪些地方需要前后结合。AJAX的前后端结合:定义统一的返回消息体,{isError:true/false,message:’需要返回的消息’,data:{返回的数据},postAction:{后续的动作}}根据消息体的返回,进行不同类别的展示,例如:错误提示,加载页面片段,数据刷新,页面跳转,或者自定义后续处理服务端能自动判断是JSON
2015-08-04 08:14:50
872
原创 架构师速成6.12-开发框架-前端封装
做一个网站不只有写后端代码,为了更好的用户体验以及更优雅的代码实现,我们也需要对前端进行封装。但是在谈封装之前还是要先提一下统一的规范,前端统一的规范尤为重要,这是给用户一致性体验最核心的关键点。我举一个反面的例子,大家可能一下就明白前端规范的重要性了。之前做过一个网站,流程如下:设计给图片前端照图片进行静态页面生成后端再加入代码,最终成为一个网站这个流程没有什么问题,但是设计没有
2015-08-03 07:49:54
2044
原创 架构师速成6.11-开发框架-后端封装思路
要做一个好的开发框架并不是直接找一个现成的Spring就ok了,这个对于一般新手来说学习难度还是有点高。另外Spring还是一个通用性的框架,我们需要针对业务的定制化封装。我以java为例讲解一下后端需要做什么:确定层数结构parentcommontestdaoservice-commonserviceweb-commonwebparent统一引入的类库及版本,通过
2015-07-31 07:46:48
2652
原创 架构师速成6.9-如何写好代码
读过很多代码,有些人写了5年以上的代码,但是代码烂到直接让人无从读起。有人写的代码让人读的赏心悦目,为什么人与人之间的差距这么大呢?看来如何写好代码还是一件很值得一说的事情。关键思想:人写代码是用来给别人读的,而不是给机器执行的。写代码就应该像写小说一样,让人读的轻松愉快。软件的生命周期中,维护周期占1半以上,所以不看避免要有人来改动你的代码你如果更换工作岗位,你的
2015-07-30 18:38:06
948
转载 架构师速成6.8-设计开发思路-领域驱动
领域驱动设计简称DDD,很好的名字,先来普及一下相关的名词缩写:测试驱动设计 TDD,行为驱动设计 BDD,面向对象设计 OOD,面向过程设计 OPD。设计思路和方法是一项专门的技能,区别于设计模式,编程语言。UML是设计的工具,设计方法是设计的灵魂,而且设计方法并没有好坏之分。关键是你需要掌握各种设计方法,在做项目时信手拈来,才是真正的高手。为什么要讲领域驱动设计,因为在做大型系
2015-07-30 18:28:44
978
原创 架构师速成6.7-设计开发思路-uml
uml是什么东西?统一建模语言,一门语言,是用来进行软件设计的一门语言。其实一门语言的诞生并不伟大,让大多数人都使用才足够伟大。uml就是一门伟大的语言,因为目前软件设计的唯一语言就是它。UML其实还是比较简单的,就那么几个图形,那么几种模式,但是因为他是唯一的语言,所以有设计能力的人都能很容易看懂你说的什么,这就是他的伟大之处。我说一下在软件设计中最常用的几个,以及我的心
2015-07-29 18:25:13
1150
原创 架构师速成5.2-价值观和目标
价值观和人生目标是gtd的最上层要素,如果你整个人生的价值观和目标都不清晰,后面的路会因为失去方向而走的比较艰辛。但好多人都不太清楚价值观和人生目标如何确定,这2个东西太抽象了。首先要先说一下价值观是什么?心理学家发现我们会受到不同的事物所鼓舞和推动,这些动力往往归纳为:需要、兴趣、价值、信念及喜好。对部分人来说,这些动力根深蒂固,而一般认为这是由于我们成长中所接受的教育,以及性格上的基因
2015-07-28 19:18:52
817
原创 架构师速成7.6-高中书单资料推荐
速读速记:如何高效阅读10倍速影像阅读法超右脑快速记忆法项目管理:敏捷开发的艺术敏捷软件开发硝烟中的Scrum 和XP精益开发实战走出软件作坊人件人月神话黑客与画家死亡之旅企业架构:企业应用架构模式devOps:持续集成:软件质量改进和风险降低之道性能:深入理解Java虚拟机Java性能优化权威指南
2015-07-22 12:18:43
1107
原创 架构师速成6.18-初中书单资料推荐
思维导图你的第一本思维导图操作书画出好成绩-通过思维导图提升分数思维导图系列知识管理你的知识需要管理面向对象写给大家看的面向对象编程书面向对象分析与设计深入浅出面向对象分析与设计软件设计UML精粹UML基础、案例与应用Head First软件开发领域驱动设计写好代码重构:改善既有代码的设计代码大全代码整洁之道设计模式:
2015-07-21 22:01:22
913
原创 架构师速成4.6-软技能和硬技能
在投职和面试的过程中,雇主通常会查看求职者的两种技能:硬技能与软技能。硬技能就是能够通过培训或可以容易量化的技能。硬技能包括下面这些:熟练的外语能力文凭或证书打字速度计算机程序编写能力而软技能,则是较难量化的主观性技能,例如:团队合作沟通时间管理而且绝多数的日常软性技能都是可以跨领域迁移,硬技能有时候随着工作的变迁,就失去了价值。我也极为推崇软技能的练习和培养。
2015-07-20 22:59:31
1308
原创 架构师速成7.5-性能优化为什么写的这么晚?
性能优化是程序员的G点,一碰就会高潮!(小朋友不懂的不不要懂了)但是我为啥这么晚才抛出这个命题,其实有人早就急不可待吧。我这么晚写是有这么晚写的理由的,其实性能优化,在做一个小的网站,根本没有什么卵用。一个流量小的网站,框架做好,架构做好,表结构设计好,根本没有太大的必要去优化,因为机器都闲着没有什么卵用,有时间不如把产品做好,吸引更多的人气。其实我在到阿里之前,做过几个网站,而且
2015-07-19 20:03:16
924
原创 架构师速成5.5-小学书单资料推荐
ppt进阶写给大家看的PPT设计书说服力 让你的PPT会说话PPT,要你好看别告诉我你懂PPT时间管理小强升职记把时间当作朋友高效能人士的七个习惯技术类head first javahead first sqlhead first html cssthinking in javaeffective java
2015-07-19 09:00:58
1033
原创 架构师速成4.8-幼儿园书单资料推荐
java学习head first java高效学习如何高效学习学习之道学习要像加勒比海盗如何高效阅读沟通沟通的艺术沟通:用故事产生共鸣演讲之禅60天完美口才打造计划学习资料站http://www.read.org.cn/http://book.douban.com/
2015-07-18 11:03:13
1282
原创 架构师速成8.2-架构师要懂产品
产品和架构两个截然不同的职业,好像风马牛不相及,其实不是这样的。产品的思想需要经过技术的手来成为现实,在成为现实之前,需要技术理解、评估、碰撞、优化、把控、验证等等。当然架构师就承担了这一系列技术的责任,而且在一个产品的实现过程中,技术架构并不是很重要的,前期可以没有架构,简单快速验证,只有在用户多了之后,架构才有真正的用处。在初创公司,很多架构师都等不到用户多了的那一天,来实现自己的架构梦。所以
2015-07-18 07:25:19
1034
原创 架构师速成8.1-谈做技术人员的态度
谦卑,永远保持谦卑。热情,永远保持热情。 同行相轻在中国好像是一个惯例,互相看不起,互相贬低,也充斥了软件行业的每个角落。想成为一个架构师请先保持你的内心的谦卑,永远不要嘲笑或贬低任何一个人。因为当你嘲笑或者贬低一个人时,世界就给你关了一扇门。其实群体的意志才是最强大的,当你有一个团队,一般情况下团队的力量总是会比一个人要强大。所以要时刻想着如何激发整个团队的热情,而不是轻
2015-07-18 07:22:50
831
原创 架构师速成6.6-知识的收集整理学习
知识如何学习前面已经讲了2节,这节主要讲知识的整理和沉淀。其实我之前也一直没有好好的思考过这个问题,今天在整理自己的wiz知识库的时候突发灵感,所以有了这一节。其实知识获取的过程分为搜索->收集->整理->精化->应用->分享,前一部分跟时间管理的收集也很相近吧。知识获取的思路适用于有目的的知识收集和日常的备忘性的知识收集。当然你随机收集一些资料记录下来其实效果并不是很理想,重要的
2015-07-16 21:50:42
1074
原创 架构师速成7.4-架构师为什么要带团队
有人说架构师明明只需要做架构,干嘛要扯出来带团队,带团队不是项目经理或者CTO之类的管理人员干的事情吗?其实这个是一个误区,架构师其实是一个全栈的特殊人物,应该项目开发的所有的环节和角色都有深入了解,尤其是带过团队对你的帮助会更大。那种只做架构,而且仅会做架构的架构师,是大公司畸形的产物,在我看来,不太接地气。大公司人员体系庞大,分工明确而且细致,技术只是负责技术就好了,管理自然有专门的管
2015-07-15 09:12:28
2385
原创 架构师速成6.5-也谈设计模式
回头来回顾之前写的文章,发现初中阶段的内容缺了一块很重要的内容就是设计模式。设计模式是程序员的另一个G点,无论吹牛,还是面试,还是设计都会秀一下设计模式,这也奠定了设计模式不可动摇的地位。我主要讲一下设计模式如何学习,哪些虚的我就不讲了。找2本书就可以了,大话设计模式和head first设计模式速读2遍,对设计模式有总体的概念整理思维导图,先把印象最深的5个列下来,用你的语言通俗
2015-07-14 19:48:54
1514
原创 架构师速成7.2-为什么要学习协议、规范
我们在开发过程中会碰到很多协议,标准规范类的东西,比如http协议,比如 javaEE标准等等。有人觉得这些很枯燥,根本不需要去关注,但是恰恰相反,这个很重要。协议和标准规范,是一个时代人类智慧的结晶,汇聚了很多牛人和专家的智慧。你需要从中吸取他们设计的理念,对程序的设计也会有很大的帮助。理解协议对于你的故障排查很有帮助,比如一个http请求出错,如果了解协议很容易判断,是浏览器端还是服务
2015-07-12 20:50:43
1285
原创 架构师速成7.3-devops为什么很重要
evops是一个很高大上的名字,其实说的简单点就是开发和运维本身就是一个团队的,要干就一起把事情干好。谁出了问题,网站都不行。作为一个架构师,必须要devops,而且要知道如何推行devops。首先要自动化,举个阿里的例子,阿里通过aone系统来实现半自动化部署:开发人员开发代码先自测通过后,提交代码到git。在aone中一键部署到日常环境。部署是自动化扫描依赖冲突,系统安全等问题
2015-07-07 17:22:18
2288
原创 架构师速成7.1-速读、速记
速读速记一直是很多人梦寐以求的技能,想象一下,别人看一本书2天,你看一本半天,而且记得比别人清楚,这是一件多么开心的事情。当然有人不相信有这样的技能的存在,我只能说呵呵。如果你看过记牌或者任意图像的记忆分辨,你会吓哭的。我觉得我好像可以速读,但是速记练过一段时间,没有坚持下来,所以速记算是没有的。不过当时练习记牌,一副牌洗乱了,我能看2遍记下来。后来觉得对于记录数字比较有用,而且需要练习图
2015-07-06 09:56:22
1152
原创 架构师速成6.4-开发框架
经历了很多公司,看过好多代码。传统行业公司普遍都有自己一套统一的开发框架,封装的非常傻瓜化,门槛极低,便于不同的项目快速开发上线。比如有一个银行业框架封装到开发人员只需要在界面上拖拽就完成大部分工作,然后在拖拽好的模块里面添加一些业务代码就ok了。用友,华为也是类似。当然传统行业缺点是,一套框架用n年,老掉牙了也在用,有时候跟不上时代。小的互联网公司有时候就不太注重,基本就以快速上线为主,
2015-07-05 11:18:37
1480
原创 架构师速成6.3-设计开发思路
面向对象,是一个伟大的设计思想,应该是软件开发史上的一次革命。当然理解面向对象也很难,有好多人用着面向对象的语言,写着面向过程的逻辑,而且一写就是好多年。但是有高手,用c照样可以写出很牛的面向对象的程序。面向对象其实是一种思考问题的方式,重点如下:面向对象是用来反映显示世界的,而不是强行创造世界。这句话,说起来简单,但是做起来很难。现实世界中你绝对不会把狗腿,按在一个人身上
2015-07-04 12:10:25
1209
原创 架构师速成6.2-知识什么时候才是你的
很多人上了很多年学,读了很多年书,他们其中的很多人压根就没有用上这些知识,我就是其中的一员。当时我还是化学课代表,化学牛人,高三的化学卷,别人做1个半小时,我只需要半小时,而且顶多会错2个选择。然而并没有什么卵用,我发现上了大学之后,化学、物理统统交回去了。所以学过!=你的知识。另外我还看过很多书,然而并没有什么卵用,都忘了。所以看过!=你的知识。参加工作以来,我用过的语言也有不下
2015-07-02 17:35:14
1110
原创 架构师速成5.2-如何掌握综合性技能
买菜、洗菜、切菜很多人都会,但是把几种菜混在一起做成一道可口的佳肴就不是一般人能掌握的。今天就讲解一下如何学会做一道好菜。举个例子,做网站,其实跟做菜一样。先看菜谱,看需要哪些配料,做网站,当然需要html,css,js,java,mysql这些菜,当然还需要设计模式、面向对象、框架这些调料,eclipse这样的刀,另外还需要tomcat这样的锅。磨刀 基本工具要首先用熟,
2015-06-30 11:18:24
1113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人