系统架构设计师需要哪些知识 系统架构设计师掌握什么知识

系统架构设计师需要哪些知识 系统架构设计师掌握什么知识,第1张

系统架构设计师需要的知识如下:

1、软件架构一般概念

软件架构师的角色以及最难处理的问题

系统 架构 的核心原则

系统架构设计的特点、层次、分类

系统架构设计的构想、节奏、预测、验证

系统架构设计的协作和简化

系统架构的主要理论、方向和趋势

如何成为一个好的系统架构师

2、信息化模型与需求过程与领域建模

网络支撑平台模型建立

信息应用平台模型建立

数据 中心 模型建立

信息系统安全模型建立

合理的架构设计来源于正确的需求过程

用例模型和领域模型

分析系统行为

3、高层架构设计中的设计模式

高层设计中的架构分析

GRASP 架构模型

高层架构设计中的层模式

开发工具和开发方法

建模工具

设计工具

编程工具

测试工具

中间件技术

应用服务器技术

J2EE

NET

BEA tuxedo

项目 管理 工具面向服务架构(SOA)

软件架构的品质属性

嵌入式系统高层架构设计和思考的特点

4、详细设计阶段的设计模式

模块设计与设计模式

正确使用外观模式和适配器模式

把不可变部分与可变部分分开

创建对象的策略与工厂模式

适当应用代理模式

利用观察者模式提升架构的生命周期

树状结构和链形结构的对象组织

委托技术与行为型设计模式

c语言嵌入式开发中应用设计模式实现优化

5、RUP及大型软件架构设计案例分析

RUP工作流程与实质

RUP开发阶段与案例核心分析

初始阶段的突出问题和解决方案

精化阶段的主要矛盾及案例分析

进度控制和风险管理

构建阶段中变更管理及其应对技巧

测试中的程度把握问题

产品化阶段要注意的问题

RUP最佳实践及如何在公司实施RUP

6、软件架构设计中有关技术问题分析

概要设计架构体系选择

架构设计中的数据库分析和orm

系统开发的前奏(语言、工具和组织)

架构设计中web容器、ejb容器及常见问题

深入研究spring框架 、问题、矛盾与解决方案

架构师如何面对轻量级和重量级架构的选择

架构师如何看待测试技术

spring中利用aop和ioc这两个有价值的技术

如何合理利用spring整合ejbhibernate与struts

软件架构设计中必须认真考虑仔细推敲的若干问题

7、开发管理

项目范围管理

项目成本管理

项目时间管理

项目配置管理的概念

项目配置管理的解决方案

项目文档管理

项目质量管理

项目分险管理

人力资源管理

8、测试评审方法和系统审计

单元测试、集成测试和系统测试

白盒测试和黑盒测试

面向对象的测试

缺陷的分类和级别

缺陷的评估和分析

排错

测试设计

测试管理

系统调整

阿姆达尔(amdahl)解决方案

负载均衡

基准、系统监视

web服务器的性能评估

系统监视

系统审计的意义

审计方法

审计跟踪

我也是一名UI设计师,也许你会跟我一样,电脑上有很多参考的案例、自己练习的作品、各种项目原文件等等,目前是采用专门管理素材的工具“Eagle”再整理,它支持很多格式,而且收藏、管理、检索功能都做的挺好用。

转载表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。

一、需要解决中央控制端到各节点服务器之间的通信。

这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的 *** 作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。

二、跨语言的socket通信

为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用phppuppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的 *** 作,而python只是个 *** 作代理人的角色而已。

所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了, *** 作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/rece论文,不解释。perl也是 *** 作系统原生带的,但是perl的可维护性太差了,还是算了吧。

所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的 *** 作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。

三、代理端执行结果的获取

无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。

还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。

还有代理端最重要的一点,就是python的版本兼容性。centos5用python24,centos6用python26,ubuntu基本默认都是27。所以一定要最大限度的保证语言的跨版本兼容性,要是每个 *** 作系统和每一个版本我都写一个代理,我一个人就累死了。

四、浏览器端的model,view,controller

这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的 *** 作和数据库 *** 作也要在model里面完成。

如果对tcl/tk很熟,也可以写基于 *** 作系统界面方式的管理,不用浏览器就是了。

view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。

五、跨 *** 作系统的安装文件封装。

要适应不同的 *** 作系统也是个很麻烦的事情,需要用agent提前获知 *** 作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装 *** 作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。

这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。

deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。

六、把这些所有东西,整合到一个系统里面。

关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。

Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apachesvn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。Fortheloveofgod,WhathaveIdone(英文部分请站在山顶仰天长啸)T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)

从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/13135663.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-30
下一篇2025-08-30

发表评论

登录后才能评论

评论列表(0条)

    保存