网站架构师的工作内容(程序员来说“如何升级”和“平时工作内容”两方面 )

优采云 发布时间: 2022-01-02 02:05

  网站架构师的工作内容(程序员来说“如何升级”和“平时工作内容”两方面

)

  点击上方的“Programming Featured”并选择“Preferred Official Account”

  技术文章尽快发货!

  对于程序员来说,架构师是职业发展的障碍。如果你跨越它,你将拥有光明的未来。否则,您可能必须一直进行代码编码。本文将从“如何升级”和“日常工作内容”两个方面谈谈我对架构师的理解。

  1 先说说大家对建筑师的误解。

  

  1 架构师不是不吃烟花,他不仅仅在一个人的隔间里设计架构,还需要和产品方、需求方、程序员等人打交道。

  2 架构师专注于技术,这是事实,但他们不能成为技术完美主义者,因为任何产品或网站架构都充满了妥协。

  3 高级程序员和架构师之间的界限并不明显。高级程序员并不是有一天能把一门课学好。一旦他们掌握了一项技术,他们将自动升级为架构。在一些要求不高的项目中,甚至高级开发来充当架构的角色。

  4 架构师并不是每个方面都精通,但他们必须知道针对某个需求可以实施哪些实施方案,然后根据当前的预算、人员、等

  5 对于建筑师来说,并不是所有的东西都必须由他们自己设计。比如在实现负载均衡的时候,架构师不可能用java实现一套解决方案,但至少可以在项目中使用哪些组件,比如nginx来构建这组组件。

  6 建筑师设计的是产品,不一定是艺术品。建筑师设计的产品可能只能满*敏*感*词*通等需求,可能只能远观,但近看可能会一团糟。但公司只求结果,产品开发周期会很紧,所以最终的线上架构只能满足现在的需求。

  2 从高级开发升级到架构师的先决条件

  在很多场景下,高级开发只有满足以下条件才有资格升级为架构师。这里我以java架构为例。

  1 Java Core 和 Java web 的基本技能,比如集合、多线程、SSM 框架,更不用说,这个是必须要掌握的。

  2 至少能在Linux上读取日志,如果可能,最好有在Linux上部署和运行程序的能力。

  3 具备一定的调优能力,例如需要能够通过查看日志进行JVM内存调优,或者通过查看执行计划进行SQL调优。

  4 你要了解设计模式,你不需要精通,但至少你要知道,在哪些场景下,可以使用哪些模式来优化结构。

  5 这是关键。在考虑问题时,必须摆脱“*敏*感*词*”的限制。在知识储备中,必须收录负载均衡、消息队列、数据库集群等基于分布式的知识点。

  6 与人打交道,至少没有障碍,至少要能把意思表达清楚。

  3 高级开发不会自动升级到架构,除非你精心准备

  在大多数公司中,都有高级开发人员升级为架构师的情况。我也见过很多高级开发人员通过跳槽成为架构师的案例。但机会只属于有准备的人。

  如果进阶开发总是关注手头的东西,下班后不学习,那可能就无法完成升级了,而且这个升级步骤比初级开发到进阶难度要大很多,为什么呢?

  公司一般需要有实践经验的架构,进阶开发一般通过跳槽完成升级,但是如果你目前是进阶开发,估计很难有实践的机会架构,所以很难通过架构 老师的面试中架构师没有实践机会,那么如何升级呢?这似乎是一个无限循环。

  说说我见过的完成升级的捷径:

  1 如果你的公司是互联网公司,那么高级开发者会接触到一些分布式高并发架构的知识,所以高级开发者可以在平时多观察和积累。组里的建筑师离开时,一般都会有机会。

  2 一些公司仍然使用传统技术,如单机SSM甚至JDBC+java开发模式。在这种类型的公司里,升级似乎很难,但也不是不可能。对于在公司工作的高级开发人员,我通常会阅读更多相关书籍。阅读时,我关注一个主题:如果要求我设计一个能够满足双十一流程的架构,我该怎么办?更具体地说,如果我要设计一个高并发流量的尖峰系统,我该怎么办?事实上,很多结构化面试问题都是围绕这两个方面展开的。

  学习之后,至少高级开发人员可以拥有架构师的技能。对于这样的资深开发者在简历中如何写架构的经验,不要问我,我说不出来,或者大家都知道,但我说不出来。

  架构师的 4 项基本技能(以及如何升级)

  1 围绕我刚才说的,要实现一个可以满足高并发的系统,需要了解负载均衡、限流、模块间消息队列、缓存、热备冗余、数据库集群等知识。

  其实对于进阶开发来说,学习本身并不是难点。关键是不知道要学什么,每个点应该学到什么程度?在这里,如果你想面试成功,那就对每个知识点有个大概的了解。

  2 具体到学习路线,目前知道阿里路线,也看到有人彻底了解spring cloud的组件然后完成升级的案例。

  3 对我来说,升级的时候看了《百万流量网站架构核心技术》一书,知识面比较全,接下来我就按照里面给出的知识体系做一个由一个。再深入一点,比如我读到它提到使用hystrix进行限流,我会看看其他材料,以深入了解该组件的配置和其他详细用法。总之,先看表面,再深入,然后基于各个组件组装一个可以应对高并发的系统。

  4 练习很重要,不要害怕在练习中犯错,但要及时总结。

  可以说,建筑师开始了几个设计项目,一定很可怕,而且肯定会不断地重构。所以在建筑师的实习阶段,加班很常见,领导甚至可能会继续说设计的产品也可能被投诉。

  这个时候一定要坚持,然后不断的反省。同时,在设计架构时,一定要接触各种相关知识,让架构师慢慢成长起来。

  5 这是比较容易被忽视的一点。架构师必须能够沟通。这往往是升级的瓶颈。

  架构师要与产品沟通,得到系统的需求,同时与需求方进行协调。在有限的时间内,他们一定不能无所不能,必须放弃。这必须提前协商。然后设计,拼接组件,然后和开发或开发经理沟通,不要让开发者在设计架构的时候误解了他们的初衷。

  我目前不是架构师,我还在升级的路上。根据我接触过的架构师的升级经验和我自己的升级经验,总结一下架构师技术升级的关键点:用两个词描述:集群,用三个词:分布式,然后用更多词:将海量流量和数据合理分配给合适数量的机器。

  如果你想明白这一点,你就会知道后面要学什么,比如流量分配中的负载均衡,存储海量数据时的数据库集群,或者子库和表。为了防止单点故障,必须设计冗余。系统和系统通信必须使用消息中间件。你不能让每个请求都进入后台,所以你可以建立一个缓存。单个缓存容易失效,可以搭建分布式缓存。为了监控性能,需要一些监控措施,比如监控JVM,监控数据等,为了等待查看日志,需要一些日志组件。等

  掌握了以上知识点后,就可以进行拼装了,比如搭建一个秒杀系统来测试他们的学习效果。

  5 建筑师通常做什么?

  1 会议、需求会议、设计审查会议等,大概会占到平时工作的 30% 到 50%。

  2 如果您不是高级架构师或技术总监,您可能不会设计新架构。往往是在现有基础上的改进,如扩容、分库分表、新的日志监控系统等。对此,架构师经常会做一个案例,比如在linux上搭建一个日志系统,把步骤写清楚,让开发遵循同样的模式。对于高级架构,您可能需要从头开始设计,或者决定调整技术组件等。这通常首先在某些系统或某些机器上完成。

  3 解决技术问题。这些问题不一定在架构层面,但只要是高级开发无法解决的问题,架构一般是可以接受的。谁使架构最好?如果是架构组件方面的问题,例如配置或部署问题,那么架构师会更好。

  4 但最重要的是学习。比如当前流量是每秒2000个,达到5000个怎么办?然后找一些机器搭建一些组件进行实验。

  6 建筑师更多地与人打交道

  与技术打交道容易,与人打交道难,因为一百个人就有一百个想法。

  所以,除了技术,架构师还必须具备以下能力:

  1 能够通过交流表达自己的想法。

  2 当各方利益不一致时,必须协调和妥协。其实这也要看各方的沟通。

  3 管理团队的能力。

  4 能够充分倾听他人的想法。

  所以,很多公司的架构师绝不是“对窗外的事情闭上耳朵”。当然也有这样的建筑师,但绝对是大神级别的。

  7 博文的总结、推荐和主题

  我通常以建筑师的身份从事一些工作,但我觉得自己不像建筑师。所以本文的另一个目的是提供一些想法,以便真正的架构师可以指导您。虽然我不是组织,但我最近合作的公司都不小。有许多组织甚至高级组织。在他们的帮助下,我在这方面取得了一些成绩。因此,本文的内容并非空穴来风。是实践总结出来的。

  过去的建议:

  -END-

  原文:./JavaArchitect/p/9130007.html

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线