和部门新来的大厂Java架构师聊完后,才知道做架构是要掌握这些

架构设计系列之程序员如何转型成为架构师 转型成为架构师是一个综合性的过程,需要技术深度和广度、领导力和全局视角的全方位能力要求。成功的架构师是能够平衡技术与业务、理论与实践的专业认识。通过不断学习、实践和拓展技能,程序员是可以更好地迎接这个转型挑战的。 阅读详情

下面是作者根据自己5年的互联网经验总结的,Java程序员进阶架构师的路线图,希望对初入职场的同学和对自己技术发展路线不太明确的同学有所帮助!

Java程序员进阶架构师学习路线图:

详细介绍如下:

JVM

  1. 基本参数调优(Xmx,Xms,Xss,-XX:NewRatio,-XX:SurvivorRatio等)
  2. GC收集器选择(根据系统特点,比如是吞吐量优先还是响应时间优先,老年代和新生代选择什么收集器,选择Serial,Parallel,CMS还是G1等)
  3. 常见JVM问题(OOM,内存泄漏,频繁Full GC,线程阻塞等)
  4. 关键命令应用(Jmap,Jstack,Jstat,jps,jinfo等)
  5. 内存模型

     

Java基础

  1. 集合类
  2. 锁(自旋锁,可重入锁,偏向锁,乐观锁,悲观锁等等概念的理解)
  3. 并发编程
  • 并发包(java.util.concurrent)
  • 原子包 java.util.concurrent.atomic

     

4. 设计模式

数据迁移

  1. 数据结构不变(加从库)
  2. 数据结构改变(双写双读)

数据一致性

  1. 强一致(XA,两阶段提交)
  2. 最终一致,补偿机制(Tcc,Saga,Seata,事务型消息等,详见作者原创文章《服务化带来的数据一致问题---分布式事务,事务型消息》)
  3. 幂等性(一个操作访问多次,结果都一样。比如支付接口要保证幂等,由于网络等原因接口重试后,不能多次扣款)

服务网关(Zuul,Gateway等)

  1. 流控,限流(整体限流,避免突发流量给系统带来过大压力;对用户限流,防脚本、机器人刷单)
  2. 熔断(下游服务出问题,上游服务不再继续发送请求到下游服务,直接快速返回默认数据,避免线程长时间阻塞造成线程池线程耗尽;下游服务压力得到缓解,恢复几率也会变大)
  3. 鉴权(比如token验证,可以在网关层处理)
  4. 路由(根据请求路径等信息,将请求路由到相应的服务上)
  5. 黑白名单
  6. 接口聚合(将同一个页面多个接口的返回结果聚合成一个返回给前端,减少网络访问频次)

     

服务治理

  1. 服务发现(在服务节点上下线过程中,自动发现服务节点,无需人工介入)
  2. 负载均衡
  3. 限流(网关层整体限流,避免突发流量给系统带来过大压力;对用户限流,防脚本、机器人刷单)
  4. 熔断(开源熔断组件hystrix、resilience4j等。下游服务出问题,上游服务不再继续发送请求到下游服务,直接快速返回默认数据,避免线程长时间阻塞造成线程池线程耗尽;下游服务压力得到缓解,恢复几率也会变大)
  5. 资源隔离(分组部署,jvm内部线程隔离)
  6. 配置中心(配置和代码分离,灵活支持生产,测试和开发环境;提高安全性,提高修改配置效率)
  7. 服务降级(除了,限流、熔断等;还可以对部分性能差的接口和功能设置开关,比如我们会在大促期间关闭物流查询接口,来保证系统性能;降级方案内容太多了,这里不做过多描述)

应用缓存

  1. 缓存分类
  • 本地缓存(应用内部的缓存,比如guava cache等,特点:本地内存直接读取,速度快;存储量小,适合少量且相对稳定的数据;分布式多节点部署,可能会出现多个节点本地缓存数据不一致的情况)
  • 缓存中间件(如Redis等,单独部署的中间件,存储量大;遇到瓶颈时可以做集群分片)

2. 常见问题

  • 缓存穿透(对于数据库中根本不存在的值,请求缓存时要在缓存记录一个空值,避免每次请求都打到数据库)
  • 缓存热点(有些热点数据访问量会特别大,单个缓存中间件节点(例如Redis)无法支撑这么大的访问量。如果是读请求访问量大,可以考虑读写分离,一主多从的方案,用从节点分摊读流量;如果是写请求访问量大,可以采用集群分片方案,用分片分摊写流量)
  • 缓存雪崩(在某一时间段缓存数据集中失效,导致大量请求穿透到数据库。可以在初始化数据时,差异化各个key的缓存失效时间,失效时间 = 一个较大的固定值 + 较小的随机值)

     

异步消息

  1. 应用场景(异步处理,流量消峰,一对多通信,日志处理,系统解耦等)
  2. 带来的问题(过多的异步消息使用和滥用,会让代码阅读者感觉混乱,使系统的调用关系变复杂 ,系统可维护性会变差)

数据库

  1. 关系型数据库
  • 数据库性能优化(数据库服务端参数调优,比如调整查询缓存大小等)
  • 应用优化
  • A. 引擎选择(例如Mysql的InnoDB,MyIsam,Memory等)B. 索引优化(数据存储和索引原理,联合索引,覆盖索引,索引下推等都要了解)
  • 高并发场景海量数据解决方案
  1. 分库分表(对于数据量特别大,而且访问量大的数据库表,可以分表分库来解决数据库写入和读取瓶颈)
  2. 批量异步写入(采用异步批量写表的方式,减少表写入频次,进而减少表的写入压力)
  3. 冷热分离(冷热数据分开存储,减少单表数据量,从而提高写入和查询性能)
  4. 读写分离(写主库,读从库,用从库分摊读流量,从库可以是一个或多个,减少了主库压力)

2.非关系数据库(NOSQL。像MongoDB等。不太重要的数据、评论评价、业务操作日志等可以用非关系数据库存储。使用过程要注意坑,篇幅原因不做详细介绍)

高并发场景解决方案

  1. CDN (页面静态化,用CDN扛流量(扛访问量,扛带宽))
  2. 应用缓存(缓存中间件(Redis等),本地缓存(Guava cache等))
  3. 异步通信(消息队列,解耦、消峰、减少线程阻塞)
  4. 分库分表(对于数据量特别大,而且访问量大的数据库表,可以分表分库来解决数据库写入和读取瓶颈)
  5. JVM优化(基本参数优化,选择合适的垃圾回收器)
  6. 带宽考虑(避免带宽称为瓶颈,促销和秒杀开始前提前申请带宽。不光要考虑外网带宽,还要考虑内网带宽,有些旧服务器网口是千兆网口,访问量高时很可能会打满)

关于快速迭代

  1. 高可维护性

  2. API封装(对组件API进行封装,如果更换组件,比如jedis换成spring-data-redis,可以直接修改API层,避免所有引用API的地方都需要变化)

  3. 高可读性(可读性高的设计和代码,可维护性也会很好)

  4. 高可复用性(可复用性高的设计和代码,可维护性也会很好)

  5. 合理的服务拆分(服务拆分合理,不同的服务由不同的组或个人维护,可维护性会大大提高)

2. 水平扩展能力

  1. 性能瓶颈(避免数据库,缓存中间件,消息队列,网络等称为系统瓶颈,保证系统水平扩展能力)

  2. 服务注册发现(在服务节点上下线过程中,自动发现服务节点,无需人工介入)

  3. 中台思想

  • 共享服务(中台思想的前奏,以电商为例,将订单、商品、交易等等稳定业务抽出做成共享服务,避免一个企业内部不同团队的重复开发和重复维护工作,能够快速应对业务变化)
  • 中台思想(大中台,小前台。以电商为例,将订单、商品、交易等等稳定业务逐渐沉淀到中台,有新增业务或者业务发生变化时,前台业务可以基于中台服务快速完成系统迭代)

关于高可用(避免单点问题,保证持续提供服务)

发布部署

  1. 灰度发布设计(为避免线上全盘错误或系统崩溃,C端功能需要灰度上线,再逐步增大流量)
  2. 流量摘除(在节点重启之前要提前摘除该节点上的访问流量,避免重启过程访问错误,进而影响用户体验)
  3. 隔离部署/分组部署(为了避免相互影响,后端运营系统和C端服务所依赖的共同服务需要隔离部署。秒杀和日常交易所依赖的订单服务和库存等服务也要隔离部署)
  4. CI(持续集成)
  5. CD(持续部署)

监控

  1. 运维监控(CPU,内存,网络等监控)
  2. 全链路监控(APM)(Pinpoint、Skywalking等全链路监控工具,可以监控跨系统跨服务的整个调用链路。对发现问题、排查问题和及时预警有很大帮助,还支持服务调用关系网络拓扑图)
  3. 业务监控(对业务异常进行监控,比如优惠券使用异常、刷单问题等)

容器技术

  1. Docker(开源应用容器引擎)
  2. Kubernetes(Google开源的一个容器编排引擎,让部署容器化的应用简单并且高效)

QA

  1. 性能测试(对to C的互联网系统,稳定性非常重要,性能测试是必须的,除了做测试环境压测外,还可以定期做线上全链路压测)
  2. 自动化测试(快速迭代过程,很多代码可能会影响到全局,需要做回归测试,测试人员很难覆盖到所有用例。很多公司在自动化测试投入大量人力,保证上线质量的同时,还能节省人力)
  3. CI测试(持续集成测试,每次有代码变动构建(编译)工程时自动执行一遍测试用例,保证代码的新增和改动不影响原有功能,适用于测试用例不需要经常变化的成熟稳定业务)
  4. 功能测试

CDN

  1. 页面静态化(商品详情页等静态化,存储于CDN,CDN扛流量,减少后 端服务和数据库的访问频次和压力,同时节省了网站带宽流量)
  2. CDN回源(图片,视频,静态文件等静态资源存放在CDN,采取回源策略,CDN取不到,回源站获取后拉到CDN)
  3. 预热(提前将静态资源推到CDN预热,减少回源压力)

安全

  1. 机器人,脚本,防刷(网关层按用户ID限流,整体限流)
  2. 风控系统(控制薅羊毛,欺诈交易等)
  3. 防火墙(防DDos等网络攻击)
  4. 高防服务(防DDos,CC网络攻击)

怎么样看完这些知识点,如果是你你能答上多少呢?如果你没有准备的话,我相信有很多人都答不出来这些面试题,所以我给大家准备好了资料,详细请看下面。

篇幅有限,这里就不一一罗列所有的答案了,小编已将一线大厂必问的Java面试题整理成了Word文档(含解析)


面试题答案汇总

BATJ面试合集精选(一)

面试合集精选(二)

Java架构师的5大基本能力你知道吗 这篇文章主要为大家介绍了Java架构师的基本能力,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助总体而言,架构师负责软件领域的顶层设计。架构师需要根据公司的发展,规划企业未来若干年的架构,制定可落地的架构方案,解决技术难题,做技术选型与攻关,落地具体的架构。优秀的架构师既能做架构方案,也能写具体的架构代码。架构师要求比较高,要有架构的广度、深度,需要掌握一系列的架构技术栈,要求有架构实战经验,要有很强的系统分析、系统架构、系统设计,业务分析的能力。... 阅读详情

相关推荐

计算机研究生就业方向之去大厂做架构师

10,去互联网公司做销售和营销(这块如果是好学校的研究生,去了大企业,好好干,前途无量,我见过的发大财的都是做销售的,尤其是大公司的,好学校的研究生做销售,资产上亿的我都见过,我只恨我自己当年学生气太重没去做)需要有全栈工程师的能力,需要有一定的运维能力,需要了解各种技术原理,业务场景,有丰富的实践经历,还要能吹,能侃大山,能做PPT,会跳槽,会带团队等待,综合性非常强的方向。励志做这个的建议你考上研究生后,去黑马,尚学堂,或者千峰参加一下java web培训,然后研究生方向,没事多把培训课程温习一下。

dongdouzin的博客 999

java怎样将多个list写入txt中并且不覆盖原有数据_和部门新来的大厂Java架构师聊完后,才知道做架构是要掌握这些!...

金三银四我相信职场人都知道,春天虽然来临但是对于互联网行业来说,复工以后互联网一些企业传出裁员、优化员工的消息,但是我还是相信今年金三银四会有一波求职潮。下面是作者根据自己5年的互联网电商经验总结的,Java程序员进阶架构师的路线图,希望对初入职场的同学和对自己技术发展路线不太明确的同学有所帮助!Java程序员进阶架构师学习路线图(双击查看清晰大图):详细介绍如下:JVM基本参数调优(Xmx,Xm...

weixin_39980711的博客 335

Java架构师发展方向和历程

目录 1 导论 2 架构师的三观培养 3 架构师的遇到的困难 4 架构师职责 5 架构师之路 6 架构师的发展方向 7 应用领域架构师 8 业务架构师 9 系统架构师和企业架构师 10 技术路线和演进规划 11 一线大厂的技术生态拓张案例 12 如何推进项目落地

赵广陆 1514

java读取文件内容时被覆盖,如何防止用Java读取和处理文件时被覆盖的文件?

I'd need to read and process somewhat large file with Java and I'd like to know, if there is some sensible way to protect the file that it wouldn't be overwritten by other processes while I'm reading ...

weixin_29315569的博客 541

Java架构师系统架构设计

目录 1 导学 1.1 技术提升依然突破不了职业的瓶颈 1.2 技术提升可薪资依然涨不上去 1.3 学了架构课程依然觉得自己成长很慢 2 架构的基本认识 2.1 什么是架构 2.2 为什么要做架构设计 3 深入理解和认识架构。 3.1 架构定义的行为。 3.2 架构关注系统的主要元素 3.3 平衡关注点 3.4 架构会受到环境的影响 3.5 架构会影响开发团队的结构 4 架构分类

赵广陆 4457

深度学习与神经网络有什么区别

人工神经网络(ArtificialNeuralNetwork,即ANN)是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,在模式识别、智能机器人、自动控制、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。...

super67269的博客 8488

JAVA FileOutputStream写文件覆盖问题

今天向文件里写数据的时候发现每次写入新的数据,之前被写入的数据都会被覆盖掉。 class Test{ public static void main(String[] args) throws Exception { File dir = new File("d:\\ttttt"); dir.mkdirs(); File file = new File("d:\\ttttt\\

乔培宸的博客 2万+

基于Dify Agent构建智能客服:攻克知识库查询、多轮对话、安全鉴权与人机协同

基于Dify Agent构建智能客服,并将知识库等核心能力工具化,再通过Chatflow进行流程编排,是一种强大且灵活的策略。它不仅解决了当前AI客服面临的诸多核心挑战,也为未来的功能扩展和智能化升级打下了坚实的基础。希望本文能为您在构建高效、智能的AI客服系统之路上提供有益的参考!dify实验室基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。关注我,获取Dify相关资源(DSL、token、交流群等)。

同名公众号:dify实验室 3742

Redis缓存:java写入文件不覆盖

基本知识 1.学会分析源码 程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这种怪状,真要追究起来,怪不得程序员这个群体本身 —— 它是两个原因造成的: 我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码 大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用 读源码三问:“为什么要有这样的架构”,“他

m0_57066056的博客 428

麒麟操作系统Kylin如何从 2203 升级到 2403

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;开始升级流程第一步:升级前准备1. 确认版本为 V10 SP1 22032. 备份全部重要数据3. 确保网络稳定4. 关闭应用第二步:选择升级方式方法一:图形界面升级方法二:命令行升级1. 更新现有系统至最新2. 启动“系统升级”工具3. 检测并开始下载2403。

让编程变的很简单!! 2675

AgentVerse实战:构建多智能体协作系统的关键技术与应用场景

本文深入探讨了AgentVerse框架在构建多智能体协作系统中的关键技术及应用场景。通过分析智能体通信协议、环境交互机制和任务分解算法,展示了如何利用大型语言模型(LLM)实现智能体间的专业化分工与动态协作。文章还提供了智能软件开发团队和智能客服系统等典型应用案例,以及部署优化实践,为开发者构建高效的多智能体系统提供实用指导。

weixin_29254029的博客 361

Map相关--这一篇全了解

目录   Map整体结构 什么是HashMap HashMap实现原理分析  静态常量 构造函数  添加元素 扩容  树化操作 红黑树插入 红黑树拆分 去树化操作 综合示例 HashMap和HashTable、TreeMap的区别 HashMap与HashSet的关系 HashMap 和 ConcurrentHashMap 的关系 参考: Map整体结构 首先...

Franco的博客 944

泛微E10 eBuilder低代码平台避坑指南:新手最容易犯的5个错误及解决方案

本文针对泛微E10 eBuilder低代码平台的新手开发者,总结了5个最常见错误及解决方案,包括表单联动配置、流程设计权限、动作流时序、数据加工类型转换和权限管理过度配置等问题。通过实战经验和代码示例,帮助开发者避开常见陷阱,提升开发效率。

weixin_30919429的博客 540

大厂 Java 架构师面试题全解析

在竞争激烈的 Java 开发领域,想要晋升为架构师,面临的面试挑战不容小觑。大厂的面试官往往会从多个维度深入考察候选人的技术功底、架构设计能力、问题解决思维等。以下精心整理了 30 道大厂 Java 架构师面试题,助你一臂之力。

爱好技术的小老头 3541

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2593

【论文复现】Applied Intelligence 2025:Auto-PU正例无标签学习的自动化实现与GPT-5.4辅助编程实战

正例-无标签学习(Positive-Unlabelled Learning, PU Learning)是机器学习领域处理"只有正例标签,负例完全未知"场景的重要技术。本文基于2025年发表于Applied Intelligence的最新研究成果,详细阐述如何从零复现Auto-PU框架(包含GA-Auto-PU、BO-Auto-PU、EBO-Auto-PU三种优化器)。

nmdbbzcl的博客 1390

进一线互联网大厂担任架构师,需要掌握哪些核心技能?

之前,不少小伙伴问我进大厂当架构师需要掌握哪些核心技能。这不,趁着假期我连夜肝了这篇文章。

冰河的专栏 8928

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

解锁架构师面试密码:百万字八股宝典,助你冲刺大厂

在技术面试越来越专业化、系统化的今天,拥有一套全面、权威、实战性强的面试题,无疑会成为求职路上的强大助力。这套《MCA高级架构师精选面试题库》,以其庞大的内容体量、科学的体系构建和持续的更新机制,为广大技术人提供了一份难得的学习与备战资源。无论你是正在备战金三银四,还是计划在未来冲击更高阶的技术岗位,这份宝典都将是你最值得信赖的面试指南。可查看下方名片自娶即可~

2401_83384536的博客 2285

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

阿里架构师耗时一个月整理的《java架构师学习路线》太全了

很多新手和一些老程序员在学习java的时候都比较迷茫,不知道从哪里开始学起,这里就给大家整理了一份java开发和项目学习路线,比较系统全面,可参考这份大纲来安排学习计划,希望可以帮到你~ 2022年最新java后端架构师学习路线: 这是我整理的一份最新的java学习和进阶大纲,里面有java学习的资料,9大java实战项目,一些java面试资料简历修改,如何短期跳槽,java进阶,架构师需要掌握一些什么,我都给大家整理好了,一起往下看吧! 第一阶段:技术 学完P6, 技术上你能做到理解操作系统、网络、并发

m0_66699725的博客 7187

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java架构师进阶之路

包含了计算机基础、算法和数据结构、常用工具、java核心知识、性能优化、基础框架、数据库、消息队列、缓存中间件、搜索引擎、大数据、RPC、网关、容器、面试等知识

henhenha的博客 5843

你与架构师相比差距在哪儿?如何提升

你与架构师相比差距在哪儿?如何提升?程序员从开发做起,工作前3-5年可以是中级开发,但随着年限的上升还停留在开发上那么淘汰是迟早的事。在IT互联网行业除了保持不断学习,还要规划好自己的职业生涯。

Blue92120的博客 4029

阿里Java架构师谈谈架构和如何成为一个Java架构师

阿里,淘宝,支付宝,GOOGLE,腾讯,互联网,高科技等等,以及其他一些公司,他们依靠的不是业务逻辑,而是真正的技术,这足以解释问题,所以如果你想走技术路线,请注意更多细节和更低层次的东西。页面查询时,这个查询与哪个数据库表关联,因为我的业务是这样的一个需求,在界面A中有一个按钮,然后弹出窗口B,在窗口B中显示什么样的数据,最终的界面 点K结束后,打开界面B时哪个数据发生了变化。在节日之前,我还进行了一些采访。在中间,为了达到这些技术的顶端,我们需要了解一些中间件,数据库,开发框架知识,它是一个支柱。

2401_83916435的博客 1214

想进互联网大厂的小伙伴可以看看:在大厂担任架构师需要掌握哪些核心技能?

今天,我们就一起聊聊在一线互联网大厂担任架构师需要掌握哪些核心能。好了,不多说了,我们开始今天的正题。

冰河的专栏 1370
上一篇: 裸辞学习90天,轻松收获阿里美团Offer,掌握这些你也可以(Java岗)
下一篇: 不会分布式被拒,35天学透阿里大牛整理的分布式架构笔记,涨薪20K
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值