阿里Java架构师谈谈架构和如何成为一个Java架构师
架构的定义
我们来看看软件架构的一般定义:
程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。
该体系结构不是可操作的软件。 具体来说,这是一个表达式,它使软件工程师能够:
分析满足监管要求的设计有效性。
在设计更改相对容易的阶段,请考虑架构的可能选项。
降低与软件构建相关的风险。
软件架构的重要性
我为什么说软件架构非常重要? 直接编程直接开发,请多看看以下几点?:
软件架构可以满足系统的质量
体系结构设计允许受益者达成一致的目标
架构设计可以支持规划过程
架构设计对系统开发的指导性
架构设计有效管理复杂性
架构设计为复用奠定了基础
架构设计降低了维护成本
架构设计可以支持冲突分析
什么是好的软件架构
这个问题可能会被大家问到,包括一些IT公司也在问,这个问题的答案可能不仅仅是简单的句子或者定义可以回答,我们来看下面几个图片的例子:
这是什么东西? 乐高玩具,乐高玩具,我们都玩过吗?
它可以作为一个完整的模型出售给您,您也可以将其全部分解并自由地将其从一个模型重新组装到另一个模型,因为每个Lego模块都有一个水平和坚定方向的标准。 界面,这就是我们常说的高内聚和低耦合。
什么是坏架构
我们来看看上面的图片。
一个是清代的八封信,另一个是孔乙己。
记住四种写作方式?
然后,你专门研究了回写单词的四种方式,但你有没有想过我可以将单词转化为单词? 这是一个很好的折扣吗?
要知道最时尚并不一定是最好的
为什么M1A2和Apache直升机中的A8处理器或最新奔腾处理器没有? 实用,测试是最好的!
成功的软件又是怎么样的呢
我们谈论软件架构。 该架构的最终体现是一款软件。 什么是成功的架构? 什么是成功的软件?
我们看上边的图片,这是美国的阿里巴巴级宙斯盾驱逐舰。 右边是印度的“德里级”驱逐舰库里盾,由美国安吉斯自己设计和建造。
两艘军舰有什么区别?
一种是模块化设计,整体线条流畅,模块可随意更换。
一种是拼凑而成的,线条被暴露出来,并且甲板上充满了各种电子设备和天线。 一旦被损坏,维护起来非常困难。
JAVA通用领域的相关技术
当然,我们这里主要讲JAVA。 所以,作为一名JAVA和J2EE架构师,需要什么样的技能才能达到架构师的水平?
上面的图片,我们这样看,它分为三部分:
在顶端,我们需要掌握一些技术领域的知识,它可以使我们能够解决诸如电子商务,公司OA,银行保险金融等解决方案和设计其他领域的共同领域。
在中间,为了达到这些技术的顶端,我们需要了解一些中间件,数据库,开发框架知识,它是一个支柱。
底部,底部? 这是我们的基础,为我们达到中层或上层奠定基石,这就是为什么人们有时会发现我的博客和其他博客有不同的地方,不仅是编程,而且还有“中间”层。也就是说,数据库, 安全和框架建设混杂在一起,因为我不希望每个人都通过阅读我的博客而停留在码,码和螺丝的水平。
架构师的职能
说了这么多架构之后,我们来谈谈架构师。
如果您看到它,架构师的首要责任是集中于:非功能需求,即非功能需求。
许多人仍然不清楚功能需求与非功能需求之间的界限。 这里有两个例子来说明:
功能性需求
页面查询时,这个查询与哪个数据库表关联,因为我的业务是这样的一个需求,在界面A中有一个按钮,然后弹出窗口B,在窗口B中显示什么样的数据,最终的界面 点K结束后,打开界面B时哪个数据发生了变化。
非功能性需求
我们的系统查询速度小于2S,是否考虑使用异步查询,采用团队排队机制,系统需求可容纳1000个并发,这个系统应该做成插件,能够水平扩展,能够遵守XXX协议,此Web服务是否要使用SOAP HEAD和BASIC身份验证,NTLM身份验证或令牌环身份验证?该下拉框可以被输入并且可以被下拉。此身份验证是否可以访问LDAP?
许多面向商业的项目公司认为,架构师在解决问题(即故障排除,故障排除,错误,然后找到架构师)时,将架构师视为消防员。你不会为自己考虑为什么问题架构师已经出现了2秒钟,2分钟或1天半的时间来解决过去几个月无法解决的问题。好?
解决这是人们应该解决的问题,说人类建筑师失败了?是不是我们应该从这个软件和架构的最早框架中找到问题?
建筑师,这不是一个问题解决问题。
在节日之前,我还进行了一些采访。从纯粹的技术角度来看,我选择了建筑师TECH LEADER的候选人。
我仍然发现很多问题。这在中国是一个普遍的问题:我们的程序员经常不做程序,但更多时候他们在做业务逻辑并成为某个领域的商人。
当然,我们的程序员在他们职业生涯的头三年和四年都会为某个领域编写代码。这不是问题,但请务必记住我们是编码,IT和程序员。 ,而不是“业务人员”!
它是什么?什么是程序员?什么是技术领导者?什么是建筑师?
我们必须很好地问自己这个问题。好好想一想。建筑师的要求是什么?
我随便在这里说些什么:我相信这对于一些想要走技术之路的学生很有帮助:
TCP / IP协议,加密和解密,计算机原理(附加补码),JPG代码,MPEG2-3协议,逻辑电子电路,计算机编译原理(堆栈,堆栈,队列),这些东西在工作时总是使用?这些是你一直关注的底层吗?
如果您要采取技术路线,一定要记住“数据库+ ASP / JSP”不是技术。它只比表格制作强大一点。报告作者有点强大。
请记住,技术线主要关注非功能性需求。非功能性需求只是一站式的东西。有了这个基础,任何需求都很清楚。你什么都没有。 “困难”,或者如果你去上学,你可以用不同的方式来做。
我最近一直在采访一些候选人并担任建筑师。我对这个过程深感不安。找到一名程序员来开发和招聘一名建筑师并不困难。这很难......呃,我认为我们需要考虑一下,如果我采用技术路线,我缺少什么,如何补充它,还有什么我应该注意?
科学技术是第一生产力。所谓的六西格玛管理方法论是六西格玛的第一个。 “技术人才是当前企业的第一生产力。”让我们看看哪些公司可以发财。阿里,淘宝,支付宝,GOOGLE,腾讯,互联网,高科技等等,以及其他一些公司,他们依靠的不是业务逻辑,而是真正的技术,这足以解释问题,所以如果你想走技术路线,请注意更多细节和更低层次的东西。
性能调优
应用框架源码解读
分布式架构
微服务专题
团队协作开发
B2C商城项目实战