如何做一个成功的系统架构师

2023-10-30

首先,何谓系统架构师?

 IBM工程师的说明是:
  架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功

 中文Wiki上的说明是:
  系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单

 这两个解释,加起来基本说明了系统架构师的定义。


JAVA系统架构师应该看的几本书

Thinking in Java
Effective Java

UML基础、案例与应用
UML入门提高

软件工匠
设计模式——可复用面向对象软件的基础

重构-改善既有代码的设计
敏捷软件开发-原则、模式、实践

企业应用架构模式
Expert One-on-One J2EE Development without EJB
 
软件工程——实践者的研究方法
软件领导--成功开发软件的指导准则

后面的两本书,其实已经有点属于项目经理的范畴了,不过还不是很深入,看看对做成功的系统架构师是很有好处。

企业应用的系统架构师应该关注的几个方面

数据持久层的设计
 在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、 全面的技术资讯吸收能力和选择鉴别能力
  作为开发人员出身,对于某一个具体问题的研究能力(虽然很多人总结为google能力),已经相当具备了。但是对技术资讯的全面接受和选择性深入了解能力,并且做出正确的判断,那些技术无非是厂家的噱头,而那些技术是真正可以用到项目,提高项目质量的好技术,这种能力确实至关重要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何做一个成功的系统架构师 的相关文章

  • 2021-01-25Redis存取list

    redis存取list类型数据 首先 为了避免高并发给myql数据库增加负担 所有大多数时候会利用redis数据库解决这个问题 1 首先启动redis服务 在bin目录下打开powshell命令如下 PS D devtools Redis
  • 高校俱乐部参会成员餐票领取安排及第二届研讨会邀请信

    尊敬的高校俱乐部合作伙伴 您好 感谢您参加移动开发者大会 今天下午电子门票已全部发出 请按照门票信息到国家会议中心签到处进行门票注册 北京周五和周六的天气温和 天气预报显示不会下雨 气温区间20 10摄氏度 需要一件外套 请在入场后到附件地
  • 继电器驱动电路原理及注意事项

    继电器驱动电流一般需要20 40mA或更大 线圈电阻100 200欧姆 因此要加驱动电路 1 晶体管用来驱动继电器 必须将晶体管的发射极接地 具体电路如下 NPN晶体管 PNP晶体管 NPN晶体管驱动时 当晶体管T1基极被输入高电平时 晶体
  • 开发工程师的职场人生路

    新闻来源 伯乐在线 当你选择计算机或者电子 自控等专业进入大学时 你本来还是有机会从事其它行业的 可你毕业时执迷不悟 仍然选择了开发做为你的职业 真是自做孽不可活 不过 欢迎你和我一样加入这个被其它人认为是风光无限的 白领 吧 恭喜 你选择
  • IT自由职业者的成功秘诀

    原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和 半生不熟 的Web应用程序 尤其是后台语言是PHP的网站 我从事自由职业已有十余年了 有时候在我有全职
  • 搜索引擎批量查询控制脚本

    seo的工作需要我们会经常查询gg和百度的结果 收录也好排名也好 所以在做查询脚本时一定要控制查询时间来防止百度封锁禁止你的查询 当然有两种方法 1 不断变换代理 当然代价较大 2 控制查询请求的间隔 3 前两者结合使用 一般的脚本我们从性
  • 不吐不快:程序员到底有没有前途(一位前辈写的)

    早上到单位 看昨天晚上QQ群里的内容 有人在问做程序员怎么样 马上就有人跳出来告诉他程序员又苦 又累 要求又高 赚得也不比人多 而且30岁以后肯定失业那一套 对程序员的前途 自己有自己的想法 但这没什么好说的 而且每个人都有适合本人的路 也
  • vi的复制粘贴命令

    vi编辑器有3种模式 命令模式 输入模式 末行模式 掌握这三种模式十分重要 命令模式 vi启动后默认进入的是命令模式 从这个模式使用命令可以切换到另外两种模式 同时无论在任何模式下只要按一下 Esc 键都可以返回命令模式 在命令模式中输入字
  • 硬件参数 调整 麦克风MIC灵敏度 原理

    1 先看MIC电路连接 这是个差分输入的例子 MICP2和MICN2是一对差分信号 经过C156的滤波 输入到MIC两端 MIC两引脚分别是到地和供电 上图的R177参数就关系到MIC输入的灵敏度 2 电阻R177影响灵敏度分析 MICBI
  • 深入理解const char*p,char const*p,char *const p,const char **p,char *const*p ...

    一 可能的组合 1 const char p 2 char const p 3 char const p 4 const char p 5 char const p 6 char const p 7 char const p 当然还有在 5
  • SCSI硬盘

    SCSI硬盘即采用SCSI接口的硬盘 它由于性能好 稳定性高 因此在服务器上得到广泛应用 同时其价格也不菲 正因它的价格昂贵 所以在普通PC上很少见到它的踪迹 说到SCSI硬盘必须提到SCSI接口 SCSI是Small Computer S
  • 作好项目经理的12个要点

    1 了解项目管理的背景情况 成为一个成功的项目经理所面临的大部分困难来自于项目经理对公司内部各种挑战的理解和认识 项目是组织的一种特殊形式 它们作为一种机制 促进了一种产品和服务推向市场的效率 但是 它们还迫使项目经理在传统型 职能化的权利
  • 项目架构图

    前言 前段时间一直在找工作 面试过程终于到了不少问题 有些是自己会的 有些是自己看过却无法整理出来的 说到底是理解不够透彻 记忆不够深刻 当然还有些是完全懵逼的 下面就来说下经常被问及 自己却无法当场整理出来的一个问题 那就是让你画出自己做
  • 构造函数不能被继承

    构造函数不同于其他类方法 因为他创建新的对象 而其他类方法只是被现有的对象调用 这是构造函数不被继承的原因之一 继承意味着派生类对象可以使用基类的方法 然而 构造函数在完成工作之前 对象并不存在 构造函数不能是虚函数 创建派生类对象时 将调
  • 一个程序员的现状

    前一阵子读了 Java夜未眠 有一个系列是说台湾程序员的的生活现状的 看后还真是有够感慨的 于是就想把自己的现状整理一下 再结合自己的工作经历 看看是否能反映出我们这一批程序员的普遍的生存状态 一 从专业说起 论程序员的出身专业 那无非就两
  • 无线路由、AP、网桥之区别详解篇

    通过无线上网冲浪 现在已经不是新鲜的事情 随着近一两年无线 网络的飞速发展 从企业到家庭都开始在不同的领域体验着 自由上网 的乐趣 笔者接触无线网络也有一段时间了 经常在一些无线论坛逛游 无论是在现实生活还是在论坛中 总会有朋友不断的问这样
  • 我的英雄之路--转自HERO2008会刊

    HERO2007仍落落在目 HERO2008即将来临 能参加两届英雄大会 甚是荣幸 于是想写一写我的英雄之路 提笔易 落笔难 反复问自己是否配得上 英雄 二字 打开社区 看看自己的排名 虽排名速降 尚位居前列 于是厚起脸皮说说自己的在CSD
  • 高效程序员的40个好习惯和行为方式

    每一个好的习惯 开头都会相应有一个唱反调的句子哦 1 做事 出了问题 第一重要的是确定元凶 找到那个人 一旦证实了是他的错误 就可以保证这样的问题永远也不会再发生了 指责不会修复bug 把矛头对准问题的解决办法 而不是人 这是真正有用处的正
  • 中国中间件第一人---袁红岗

    最早开发Windows上的企业应用软件 打造独立知识产权的EJB服务器Apusus 很多JAVA程序员对袁红岗极其佩服 源于他做了很多人不敢想更不敢做的事情 这就是他打造了国产的EJB服务器 很快 金蝶将在国内推出自主产权EJB服务器的3
  • 前端基础Vue项目中的插槽使用

    概念 简单理解就是组件内部留一个或多个的插槽位置 可供组件传对应的模板代码进去 插槽的出现 让组件变的更加灵活 1 匿名插槽 父组件

随机推荐

  • Python-mock

    文章目录 一 接口测试中Mock的用处 二 使用步骤 1 Moco框架搭建Mock服务 Moco说明 2 Python unittest模块自带的mock 一 接口测试中Mock的用处 前后端开发 后端接口未开发完成 前端调用mock数据进
  • 网易云音乐评论抓取(js逆向)

    网易云音乐评论抓取 js逆向 本文通过分析网易云音乐的js加密 通过构造相关的参数 获取网易云音乐评论 所用语言和相关模块 python3 6 requests 网站特点分析 通过分析网站可知 评论获取的url https music 16
  • JavaScript和C++的一些显著差异和学习tips

    之前学习JS来做Vue Node js前后端 最近开始重新学习C 显然这两者的差异巨大 主要注意的点 C 的语法结构 while for JS中没有数据类型 而C 的数据类型需要学习 例如DWORD等等 面向对象 JavaScript的对象
  • 人工智能基础篇

    人工智能基础篇 本篇目录 一 人工智能 机器学习 深度学习的关系 1 关系图 2 人工智能 3 人类智能过程 4 机器学习 5 深度学习 二 人工智能研究的领域 三 人工智能的应用场景 1 计算机视觉 2 语音技术 3 自然语言处理 4 决
  • C++学习第二弹之整数数据类型

    本文主要介绍C 数 整数 包括创建变量和编写各种类型的常量 整数 不同C 数据类型使用不同的内存来存储整数 内存越大能够表示的数值就越大 同时有的类型可以表示正值和负值 有些不能表示负值 C 基本整型有char short int long
  • C++设计模式由浅入深(一)—— 继承和多态

    一 继承和多态 C 首先是一个面向对象的语言 对象是C 程序的基石 通过类的继承和派生 软件工程师可以自由表达对软件系统中各个部分之间的关系与交互逻辑 定义各个组件之间的接口和实现 有秩序地组织起数据结构和代码 本书的目的不是为了教授C 语
  • 项目——电子词典(客户端、服务器交互,字典导入,单词查询)

    一 项目要求 登录注册功能 不能重复登录 重复注册 单词查询功能 历史记录功能 存储单词 意思 以及查询时间 基于TCP 支持多客户端连接 采用数据库保存用户信息与历史记录 将dict txt的数据导入到数据库中保存 按下ctrl c退出客
  • Fiddler抓包工具总结

    序章 Fiddler是一个蛮好用的抓包工具 可以将网络传输发送与接受的数据包进行截获 重发 编辑 转存等操作 也可以用来检测网络安全 反正好处多多 举之不尽呀 当年学习的时候也蛮费劲 一些蛮实用隐藏的小功能用了之后就忘记了 每次去网站上找也
  • qt 智能指针介绍

    简介 Qt 提供了很多智能指针 比较常见的有 QPointer QSharedDataPointer QSharedPointer QWeakPointer 和 QScopedPointer 描述 QPointer 4 0 已经过时 可以被
  • php fastcgi,配置apache以fastcgi运行php

    apache默认是用自带的mod php模块运行php 现在我们介绍使用fastcgi来执行php脚本 先说下fastcgi的优点 Fastcgi的优点 从稳定性上看 fastcgi是以独立的进程池运行来cgi 单独一个进程死掉 系统可以很
  • 解决高德地图AMap is not defined

    传送门 https blog csdn net qq 36317441 article details 77187369 总结一下 就是将script 标签引入的高德地图地址 放到body中
  • Leetcode 面试题 01.06.字符串压缩(Compress String LCCI)

    Leetcode 面试题 01 06 字符串压缩 1 题目描述 Leetcode题目链接 字符串压缩 利用字符重复出现的次数 编写一种方法 实现基本的字符串压缩功能 比如 字符串aabcccccaaa会变为a2b1c5a3 若 压缩 后的字
  • 虚拟机占用磁盘越来越大的解决方案大总结

    原文链接 https blog csdn net Shine Su article details 119676646 作者 填坑小霸王 在电脑上安装Vmware 安装ubuntu16 04 进行开发 使用过程中没有在意 忽然有一天发现磁盘
  • 【esp32&lvgl】-2.1 # esp32移植lvgl7驱动st7789屏幕(ESP-IDF框架)

    目录 一 前言 二 代码 三 硬件说明 四 ESP IDF设置 重要 五 屏幕偏移修改驱动文件 参考资料 一 前言 前几天在ardiuno框架下基于platformIO用TFT eSPI库实现了lvgl库的移植 这种方法虽然在lvgl的版本
  • 电源系列1:LDO 基本 原理(一)

    微信公众号 工程师看海 后台回复 LDO仿真文件 转载请注明原文地址 https blog csdn net u013608300 article details 108994763 1 前言 目前市场上无论什么电子产品 只要涉及到电就必须
  • ssh 运行 java,通过ssh将Java应用程序作为后台进程运行

    I m currently developing a simple deployment script for vms running ubuntu All these machines are supposed to run a java
  • 基于Springboot的SSO单点登陆系统的登陆操作实战

    一 前言 1 使用环境 SpringBoot2 X MyBatis 基于redis存储的springSession 2 基础学习 关于SSO的基础学习可以参考该文章 单点登录 SSO 从原理到实现 代码风格使用的是晓风轻的代码规范 对于其中
  • c语言的文法,c语言实现First文法

    最近编译原理课程实验做LL 1 中的First和Follow文法的算法实现 百度了半天 要么是要钱 要么是觉得好复杂 作为学渣的我看不懂 那为了完成实验 只能自己慢慢搞出来 由于之前的课也没怎么听 研究这两个文法都用了好长时间 那么关于Fi
  • Maven下Druid连接池配置及使用

    1 在pom xml中导入架包及jdbc架包
  • 如何做一个成功的系统架构师

    首先 何谓系统架构师 IBM工程师的说明是 架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体 他们负责让业务规则及需求与工程实践及限制相适应 以确保成功 中文Wiki上的说明是 系统架构师负责设计系统整体架构 从需求到设计的每个细