网站架构师的工作内容(JAVA系统架构师应该看的几本书ThinkinginJavaEffective基础、案例与应用)
优采云 发布时间: 2022-01-06 02:09网站架构师的工作内容(JAVA系统架构师应该看的几本书ThinkinginJavaEffective基础、案例与应用)
概括
最近申请了一个系统架构师,面试回答了一些问题,加上之前的一些功课,搜索了一些文章,觉得有必要总结一下,如何做一个成功的系统架构师
最近申请系统架构师,面试回答了一些问题,加上之前做的一些功课,搜索了一些文章,觉得有必要总结一下,如何做一个成功的系统架构师?
首先,什么是系统架构师?
IBM工程师的描述是:
架构师的主要职责是在开发人员和项目经理之间提供共享的通信媒介。他们负责使业务规则和要求适应工程实践和限制以确保成功
中文维基上的描述是:
系统架构师负责设计系统的整体架构。从需求到设计的每一个细节都要考虑,把握整个项目,使设计的项目尽可能高效、易开发、易维护、易升级。
这两种解释一起基本解释了系统架构师的定义。
JAVA系统架构师应该看的几本书
用Java思考
有效的Java
UML基础、案例和应用
UML 入门改进
软件工匠
设计模式——可重用的面向对象软件的基础
重构——改进现有代码的设计
敏捷软件开发——原则、模式、实践
企业应用架构模式
无需 EJB 的专家*敏*感*词* J2EE 开发
软件工程-从业者的研究方法
软件领导力——成功软件开发的指南
后两本书其实都属于项目经理的范畴,但都不是很深入。成为一名成功的系统架构师是非常有益的。
企业应用系统架构师应该关注的几个方面
数据持久层设计
在 Spring、Hibernate、ibatis 出现之前,几乎每个公司都有自己的一套方法和架构,架构师 50% 的精力也会集中在这上面。EJB 只是增加了架构师的负担。Spring出来之后,基本上大部分的架构师都从重新设计这个轮子的不必要的努力中解脱出来了。Rod 的轮子非常容易使用。基本上,每个人都只需要穿上它们。或者,剩下的最重要的事情就是选择一个具有合适数据库连接池的开源项目。
MVC架构的具体设计
MVC 只是一个笼统的概念。有许多具体的技术来实现它。根据项目设计最合适的架构。
大并发访问
使用缓存,当数据量达到一定程度时,使用集群技术,优先使用服务器集群,其次是硬件集群,最后是应用本身加入集群功能
返回结果的数据量非常大
尽量使用分页,优化SQL语句,循环数据时尽量共享对象,只保留关键数据,及时释放内存
读取和生成大文件
尽快读取大文件并进行分析。写大文件时如何及时释放内存。学习正确使用操作系统的命令行资源来更快地完成任务。
多线程应用和管理
线程池管理与监控、线程启动(包括定时启动)、结束、恢复、释放线程资源
用户界面可用性设计
平衡速度和可用性,适当使用异步和同步技术,重点展示关键数据
分布式数据交换与集成
选择合适的数据交互方式,从最普遍低效的Web Service到最实用的文件共享
集群系统管理
如何保证缓存的同步?如何保证对象的唯一性?如何保证每台机器的同步?
是否使用EJB?如何使用J2EE的特性(如JNDI)
复杂的业务规则
规则引擎和工作流引擎的场景及应用
事实上,作为一个真正的系统架构师,你不应该局限于企业应用系统。此类系统通常具有数据库的局限性。有时候,你应该考虑是否可以横向交叉,直接为其他系统做一些架构上的考虑。在有丰富的实践经验的前提下,只是看别人的系统和代码,就可以给出有效的设计指导。
例如,对于下载软件,可以考虑以*敏*感*词*意事项:
1. 不明非法url检查、下载失败权限、信息记录
2. 多线程下载一个文件,文件分割合并,合并一些丢失的切片的可能性
3. 下载线程管理
4. 服务器或P2P机器之间的通信协议
5. 速度监控和限制
6. 下载进度监控显示
作为一款在线播放软件,可以考虑以下
1. 保证播放速度
机器问题基本不存在,关键是网络问题。如何检测网速,根据影片的质量,缓冲足够的内容,保证播放已经尽可能流畅地完成。
2. 播放质量保证
如何使用DirectX等技术渲染最快,是自己写底层还是使用已有的API
由于没有做过类似的项目,所以写的东西还是少了很多。
系统架构师应具备的素质:
1、 实际编程经验
至少2年,所以我不会谈论它。事实上,如果我开始在大学学习,
2、 书面和口头沟通技巧
使用架构图、UML 图、文本和代码片段来表达您的设计理念。至于Word或ppt,你应该全部拿走
在开发人员中发现架构师最有价值的标准是有效的沟通。您需要技术娴熟、经验丰富的开发人员,他们在项目中与业务相关的问题进行沟通时有经验。建筑师在做出贡献之前,通常必须预测理解上的差距。他们必须愿意克服困难,以确保技术和业务视角的融合。他们不必计划和协调交换意见;它仍然主要是项目经理的工作。他们的任务是确定表达系统设计的最佳工具和组件,以促进有效的意见交流。他们必须能够判断当前方法不足而需要新方法的情况。写作技巧也很重要。
3、 自觉主动;积极解决设计问题
建筑师的日常工作目标往往不明确。许多开发人员直接参考功能规范来列出任务。架构师通常是向这些开发人员提供所需结构以最大限度提高工作效率的人。优秀的应聘者不仅要在沟通上工作,还要能预见和解决各种设计问题——通常不需要任何具体说明。无论分配的职责如何,积极参与项目的开发人员都有机会从一起工作的人中脱颖而出。
4、 抽象思维能力和总结能力
顾名思义,架构师必须能够在构建系统之前有一个草图。如果是对现有系统的修改,那么在阅读系统的文档(如果有的话)和代码之后,就可以总结出系统的架构特点。
架构师必须能够理解表达模糊的概念,并将它们转化为各方都能理解的项目组件。他们必须能够理解抽象概念并用特定语言进行交流。开发人员中的优秀候选人经常会主动询问或主动解释开发生命周期中令人困惑的问题。他们可以快速评估各种想法,并将其纳入后续工作的操作建议中。
开发人员通常具有很强的数学技能,而优秀的架构师往往会表现出更强的口头表达能力。管理者常说开发者有“工程意识”,这是评价架构师很有意义的一个方面。架构师应该有很强的解决技术问题的能力,但他们也必须能够准确地获取关于人们如何与技术交互的更全面的信息。这需要某种形式的抽象思维(而不是代码的细节),这可能很难形成。
5、 综合技术信息吸收能力和选择辨别能力
作为开发者,我有研究特定问题的能力(虽然很多人将其概括为谷歌能力)。但是,能够完全接受和选择性地理解技术信息,并做出正确判断,无非是厂商的噱头,那些技术才是真正可以用在项目中,提高项目质量的好技术。 . 这个能力确实是Critical。