经常看到一些IT老人,和一些刚毕业的坐在一起,整天coding,coding...
我无意贬低这些人,他们每天都在辛勤劳动,并以此养活自己和家人
但他们过的幸福吗?---->答案是否定的.不信,你可以去调查一下,"他们的老板,社会收入制度,社会不平等现状..."会是他们经常抱怨的对象.说白了,一个现状:对目前的收入不满意

也就是说,程序员,不能只会码代码.码一定数量之后,就应该考虑向更高层次发展了.人无远虑,必有近忧.整天抱怨是解决不了问题的.

架构师是一个很不错的方向.
对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。就连世界首富比尔盖茨在2000年卸任公司CEO的同时,也担任了微软公司的荣誉角色“首席软件架构师”,可见“架构师”这一称谓的吸引力。架构师是公司的“金领”,有着非常高的收入,很少需要考虑生存的问题,从而有更多的精力思考关键技术问题,形成“强者愈强”的良性循环。部分优秀的开发人员在工作了一定时间后,就要开始考虑自己的未来到底向哪个方向发展。如果开发人员的沟通能力强过技术能力,在补充一定的项目管理知识后,可以向技术管理的方向转型。如果其对技术一直很感兴趣,而沟通能力也不弱,则可以试着进一步加强技术修养,以期向架构师的方向发展,最终“修成正果”。

那么,到底什么是架构师呢?所谓的架构师,应该是一个技术企业的最高技术决策者。他主要负责公司软件产品或软件项目的技术路线与技术框架的制订。好的架构师都是善良的独裁者,具有很强的技术、良好的写作能力、良好的口头表达能力,能够在各个层次进行沟通。从开发人员到架构师的成长应该是阶梯式的,一般来讲开发人员在刚刚开始工作时只能开发简单的独立软件模块,慢慢的随着经验的增长,他开始接触一些相互之间有信息传递的模块,而后来,他会发现自己接到的开发任务已经不是一个独立的单体,这些任务由一些专门的软件部分组成,可能包含数据库,工作流引擎,消息服务等等各种功能模块,可能分布在不同的服务器上,所有的部分协同起来,完成软件功能。而这时候,体系结构的好坏将直接决定了系统的性能和可扩展性,而就在这时候,这名优秀的开发人员也开始思考架构师应该思考的问题了,或者说,他向成长为架构师的道路迈出了一大步。

什么是架构师最具价值的技能呢?就是要了解不同的知识,做一个“杂家”或者说“博学家”。当然,如果你的数据库技术非常棒,或者你在工作流引擎方面具有不可超越的专家知识,那也是很不错的。好的架构师有好多都是从专家成长过来的。但是,这不是架构师应该做的事情,架构师应该做的是了解所有的东西,既了解技术的宏观面,又了解技术的细节。真正的架构师不仅仅要了解软件,也要了解硬件,在关键的部位使用合适的硬件来取代软件,可以成倍甚至成百倍的提高整个系统的效率。下面我将会以互联网行业对的架构师的要求为例,向大家讲解作为架构师应该具备的知识。
互联网行业是当前最激动人心的行业之一,很多的创新都来自于这个行业,而每一个大型的网站如Google,Yahoo,Myspace等都需要解决一个非常复杂的问题,就是网站的分布式向外扩展(Scale Out)的问题。解决这个问题,需要最优秀的架构师对业务进行剖析,利用软硬件将网站进行重构,甚至根据业务研发相应的分布式技术,解决网站复杂的分布式计算的问题。如果你想在这个行业中成为一名架构师的话,需要至少掌握网络知识,硬件,软件,网站优化等方方面面的知识:

1. 网络知识。
当前的软件已经绝对不是那种仅仅跑在一台单机上的孤立应用了。不仅仅是在互联网行业,任何一个行业的软件,都要求其具有网络功能。因此,网络知识是架构师必备的知识。我们所说的网络知识,不仅仅包括TCP/IP,http等互联网行业常用的软件协议,也包括网络规划,甚至更具体的说,根据网站应用所处的地理环境进行网络规划。比如人们常说:“这世界上最远的距离不是生与死的距离,而是电信到网通的距离”(笑)如果应用是建立在中国的,就要考虑电信用户和网通用户访问网站的速度应该都比较快才可以。这时候的解决方案可能有多种,比如采用CDN(Content Delivery Network内容分发网络)使得网站的内容发布到离用户最近的服务器,又可以采用把服务器放在一些所谓的双线机房中,甚至将几种方案结合起来使用。这些都统统归到网络知识中。做为公司的架构师,要对这些知识都有所了解,才有助于在遇到问题时找到最佳答案。

2. 硬件知识。
了解硬件的极限,是架构师的基本功。我见过一些人,他们的眼中软件硬件都是没有极限的,需要资源就申请,系统性能下降了就买更高级的设备。然而,硬件的性能有很大一部分取决于I/O设备。而这些I/O设备依靠的都是机械物理运动,这种运动是有极限的。因此当资源访问量增大到一定的程度时,这种物理运动将成为瓶颈。比如说,在开发网站的过程中,记录访客的状态是一件很重要的事情,一般来说可以使用HttpSession来记录。而HttpSession的存储问题将是一个很大的挑战,尤其是多机共享Session时,将HttpSession存成文件并通过多机共享或网络备份的方式来解决分布式的问题是常用的方案,然而,架构师必须考虑到这种方案是有I/O极限限制的,很难扩展到超过一定规模的大型网络。同时,架构师应该了解目前最近的硬件发展是否对软件系统会造成一定的影响,比如在多核的条件下是否对软件编程有新的要求,是否会对运行在虚拟机和非虚拟机上的程序有影响等等。

3. 软件知识。
软件知识所包含的范围就更加广泛了。对于互联网行业来讲,架构师要了解操作系统,数据库,应用服务器等各方面的知识。比如说,如果网站使用的操作系统是Linux,就要了解这个Linux版本的性能与局限性,比如说最多可以存放的单个文件为多大。有的数据库的数据是以单个文件来存放的,虽然我们很少见到数据库中的数据多到不能再放入一条记录的情况,但是作为架构师,请时刻注意,这种可能性是有的。而且如果你有幸在一家高速成长的互联网企业中,而你所负责的应用又没有经过优化的话,可能你会很快见到这种现象。这种现象的发生可能是由于操作系统不支持大文件的原因,也可能是数据库不支持大文件。不论如何,架构师应该在这种现象发生之前就把一切都准备好。对数据库中表的拆分是架构师应该遇到的另外一个困难。一般来说增加应用服务器比较简单而增加数据库服务器则是比较复杂的问题,如果一个站点由多个数据库支持,架构师需要考虑如何在保证数据一致的情况下,让多个数据库分担压力。有些解决方案是将数据库的读写分开,使得大多数的查询sql不经过核心数据库,而只是访问数据库的副本,但事实上,这种方式也只能维护规模不大的网站。对于大型的网站来说,把业务分散到不同的数据库中,只共享必要的数据,才是合理的提高网站扩展性的解决方案。

4. 其他知识。
作为系统架构师,可能还需要对分布式系统,负载均衡,网络安全,数据监控等等各方面都有所了解。不仅仅是了解理论知识,也要对相关的产品和业界进展有一定的认识。比如说做负载均衡最好的产品是那种。目前最常用的备份策略是什么,有什么缺点。如何使用缓存,如何做好日志分析等等。
 
  刚刚谈到的是架构师需要掌握的知识,然而,冰冻三尺非一日之寒。这个过程需要我们慢慢的积累。如果你已经进入到公司进行软件开发,请时刻关注你所开发软件的性能与可扩展性,而不仅仅局限在功能上,时刻想着任何一个简单的问题:我开发的模块如果放在多人并发的环境下会怎样,慢慢的就会有所心得。如果你还是一个在校学生,不要想着自己离架构师这个职位还很遥远。要知道,成为架构师的**之路是很长的,甚至可以说是终身的,因此早点进入学习状态,不断**自己。在学校期间学好离散数学,数据结构,操作系统,编译原理,体系结构,数据库原理等关键课程,并积极寻找机会到外面实习,增长自己的工作经验。如果有机会去到一些技术主导的公司中工作,就一定不要放弃这种机会,慢慢就会成长起来。最重要的,你会养成关注技术,勤于思考的好习惯。当有一天你发现自己对任何技术难题都可以一眼看到其本质,并能够将其分解为一个个可轻松解决的模块,你会由衷的感觉到知识给你带来的快乐,或许那一天,你已经是一个架构师了。
http://topic.csdn.net/u/20080920/15/1cc128fa-5503-4b38-a152-68a9ba3c18fa.html?706927728

【转】架构师是一个很不错的方向相关推荐

  1. css搜索的文本框,一个很不错的CSS改写的大表单文本框和搜索按钮组

    <一个很不错的CSS改写的大表单文本框和搜索按钮组>要点: 本文介绍了一个很不错的CSS改写的大表单文本框和搜索按钮组,希望对您有用.如果有疑问,可以联系我们. 先看效果图: 开始爬取 C ...

  2. php上下翻页,一个很不错的PHP翻页类

    一个很不错的PHP翻页类,包含了使用例子,感谢Alan /* * Created on 2007-6-8 * Programmer : Alan , Msn - haowubai@hotmail.co ...

  3. 一个很不错的C++类的练习题目

    //一个很不错的C++类的练习题目1.定义一个C++枚举(作为枚举结构),有以下四个值:一次.每天.每周.每月. 为这个枚举定义一个重载的输出操作符<<,根据枚举值,它将每日.每周.每月和 ...

  4. 一个很不错的bash脚本编写教程

    一个很不错的bash脚本编写教程 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很 ...

  5. yt88加密狗不识别_YT88 是天域一个很不错的加密狗工具,可以源码 ,还 外壳 ,带DLK开发包。 Windows Develop 256万源代码下载- www.pudn.com...

    文件名称: YT88下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Windows_Unix 文件大小: 12909 KB 上传时间: 2016-05-01 下载次数: 0 提 供 ...

  6. 兄弟连,一个很不错的名字。

    兄弟连,一个很不错的名字. 不知道大家有没有看过"兄弟连"这部电视剧 . 一群来自五湖四海的年轻人聚在一起,他们都是一群普普通通的老百姓,但是却 在后来的训练下变成了一支特种部队. ...

  7. python架构师是做什么的_【图片】架构师速成-一个10多年架构师的总结_架构师吧_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 架构师速成5-小学 很高兴你很快的进入了小学,小学的东西会让你更加的耀眼. 阶段: 小学 学时:2-3个月 升学标准 能自己制定目标及计划,get thi ...

  8. 一个很不错的支持Ext JS 4的上传按钮

    以前经常使用的swfUpload,自从2010年开始到现在,很久没更新了.而这几年,flash版本已经换了好多个,所以决定抛弃swfupload,使用新找到的上传按钮. 新的上传按钮由harrydel ...

  9. 阿里架构师耗时一个月整理的《java架构师学习路线》太全了

    很多新手和一些老程序员在学习java的时候都比较迷茫,不知道从哪里开始学起,这里就给大家整理了一份java开发和项目学习路线,比较系统全面,可参考这份大纲来安排学习计划,希望可以帮到你~ 2022年最 ...

  10. 推荐一个很不错的刷题网站

    分享 小伙伴们,还在为学习编程语言找不到好的练习题而苦恼吗?今天小菜分享一个刷题网站:https://www.codewars.com/dashboard.这个网站和力扣不同的是,这真的是适合人类的网 ...

最新文章

  1. 用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)
  2. 常见数据库的Connection URL
  3. Python学习--最完整的基础知识大全
  4. 同一台服务器,mysql登录不了指定端口的问题
  5. 微软官方Windows Server 2008实战攻略系列
  6. 关于安卓手机访问一些网站或者Fiori应用弹出安装证书的提示
  7. python递归求5!_Python | 递归
  8. java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
  9. mysql索引学习笔记
  10. 有的朋友问我创业没有资金怎么办?
  11. Windows XP 下安装Perl cpan模块
  12. Android4.2之Camera系统HAL调用流程
  13. 文件夹批量重命名编号的快速方法
  14. JAVA实训项目第一次日志
  15. 中国名气黑客网站目录
  16. iPhone6和iPhone6Plus的适配
  17. denoted(denoted by)
  18. web项目连接阿里云云数据库RDS-MySQL8.0
  19. cada0图纸框_CAD的图框应该怎么画-百度经验
  20. GUI编程自学,编写自己的计算器!

热门文章

  1. 华三 h3c路由协议BGP对等体组、反射器、路由选路综合实验
  2. 动态路由之RIP综合实验
  3. C语言qsort和C++sort的用法小结和区别比较
  4. opencv笔记(7):直方图均衡化
  5. 【solitidy】生成随机数算法
  6. day 4 基本数据类型/list列表的操作/元组/range数数
  7. 并发编程-------操作系统的发展
  8. 实现一个左滑删除功能
  9. Erlang中的OTP简要
  10. [Yii Framework] Another method to run cron in the share space server.