当前位置: > 财经>正文

IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 基金的基本知识介绍怎么写好一点

2023-09-07 22:40:28 互联网 未知 财经

IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

目录

后端进阶技术路线图(初级→中级→高级)

初级(技术基础、编程工具)

技术基础(网络/操作系统/基本前端知识/编程语言/算法与数据结构/数据库)

编程工具(版本管理/构建工具/编辑器/IDE)

相关学习资源

中级(编程框架/JVM/消息队列/存储/工程)

高级(编程范式/设计原则/分布式系统)

一、后台业务开发大佬——后台架构/业务目标/编程语言的演进

1.0、数据层→服务层→通讯层→展现层

1.1、后台技术架构演进:局域网→广域网→单体多层架构→SOA/EDA →虚拟机→云计算→微服务→云原生

1.2、业务目标演进:高并发/高性能→稳定性→自动运维

1.3、后台开发语言演进:C++语言→PHP语言→JAVA语言→Go语言→Python语言→Rust语言

二、中间件高手——消息中间件、缓存中间件、RPC框架、负载均衡

2.1、消息中间件:提供可靠的消息传输

ActiveMQ、RabbitMQ、RocketMQ、Kafka

各种特点以及选择技巧

Apache Pulsar(新一代消息中间件)VS Kafka

2.2、缓存中间件:提高访问性能

Redis

2.3、RPC提供调用服务

RPC框架:允许像调用本地服务一样调用远程服务

grpc、Thrift、HSF(阿里)、Dubbo、SOFA-RPC——微服务时代

2.4、负载均衡

未来发展方向

三、内核大师——探究底层奥秘:云计算、浏览器内核、数据库内核、操作系统、嵌入式、JDK

3.1、云计算:一切皆服务

Cloud Computing:云计算的简介之云计算的三层服务类型(从服务的层次)——IaaS、PaaS、SaaS的简介、核心技术之详细攻略

3.2、web内核:浏览器方向

Webkit

Chromium

3.3、数据库内核

DBMS/Database:数据库管理的简介、安装(注意事项等)、学习路线(基于SQLSever深入理解SQL命令语句综合篇《初级→中级→高级》/几十项代码案例集合)之详细攻略

3.4、操作系统

3.5、嵌入式

3.6、JDK—主要用于移动设备、嵌入式设备上的Java开发工具包

四、分布式架构专家——中台架构、微服务、云原生

4.1、中台架构—业务前台、业务中台/数据中台、技术中台

4.2、微服务、云原生

CloudNative:云原生(分布式云)的简介(发展&演变/为什么需要/优势&价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略

后端进阶技术路线图(初级→中级→高级) 初级(技术基础、编程工具) 技术基础(网络/操作系统/基本前端知识/编程语言/算法与数据结构/数据库) 网络

网络:DNS、TCP&IP、浏览器、HTTP

操作系统

操作系统: Unix/Linux命令行:grep、awk、sed、lsof、curl、wget、tail、head、less、find、ssh、kill、正则表达式 操作系统如何运行: 进程管理: 线程与并发:

基本前端知识基本前端知识:HTML、CSS、JavaScript编程语言编程语言:Java、Go、Kotlin、Bash、C/C++算法与数据结构算法与数据结构:性能分析、基本数据结构(列表. 树等)、排序、查找、图数据库数据库:索引、事务、分库分表 编程工具(版本管理/构建工具/编辑器/IDE) 版本管理版本管理:Git、版本控制系统、代码托管服务构建工具构建工具:Maven、Gradle编辑器编辑器:VS Code、Emacs、VIMIDEIDE:IntelliJ IDEA 相关学习资源 图书推荐陈鸣译,《计算机网络:自顶向下方法(原书第6版)》 龚奕利,贺莲译,《深入理解计算机系统(原书第3版)》 谢路云译,《算法(第4版)》 陈昊鹏译,《Java编程思想》 李道兵等译,《Go程序设计语言》 《ProgrammmingKotlin》 刘晓霞等译,《MySQL必知必会》 《Pro Git》 许晓斌,《Maven实战》 李松峰等译,《JavaScript高级程序设计(第3版)》 Cameron Newham等,《学习bash(第二版)》

 

中级(编程框架/JVM/消息队列/存储/工程) 编程框架应用框架:Spring、play 网络框架:Netty 持久化:MyBatis、Hibernate RPC:gRPC、DubboJVM执行系统:类结构与字节码、类加载机制 内存管理:内存区域与溢出、垃圾收集器与内存分配策略、性能监控与故障处理工具 并发:内存模型与线程、线程安全与锁优化消息队列Kafka RocketMQ存储Redis MySQL工程测试:单元测试、集成测试、功能测试 安全:OAuth、HTTPS、CORS(Cross-origin resource sharing)、内容安全策略 持续集成:相关学习资源Brian Goetz等,《Java并发编程实战》 张卫滨译,《Spring实战》 何品译,《Netty实战》 周志明,《深入理解Java虚拟机》 Neha Narkhede等,《Kafka: The Definitive Guide》 黄健宏,《Redis设计与实现》 《计算机程序的构造和解释》

高级(编程范式/设计原则/分布式系统) 编程范式函数式编程 面向对象编程 泛型编程 类型系统 装饰器模式 代理模式设计原则DRY(Dont Repeat Yourself) KISS(Keep is Simple, Stupid) S.O.L.I.D.:SRP、OCP、LSP、ISP、DIP分布式系统基础理论:节点与网络、时间与顺序、ACID、CAP/FLP/DLS、一致性理论 设计模式:网关模式Gateway、边车模式Sidecar、服务网格Service Mesh、防腐层Anti-corruption Layer、布式锁、配置中心、异步通讯、幂等性 弹性(容错)设计:服务降级、服务限流、熔断设计、补偿事务、隔离设计、异步通讯、幂等性设计、重试设计、Bulkhead 工程:监控追踪、服务/资源调度、流量控制、数据调度、开发与运维自动化、负载均衡&健康检查、服务发现&动态路由&健康检查、自动化运维相关学习资源赵军平等译,《数据密集型应用系统设计》 Marko Luksa,《Kubernetes in Action》 Distributed systems theory for the distributed systems engineer 孙宇聪译,《SRE:Google运维解密》 崔力强等译,《微服务设计》

 

参考文章:https://codechina.gitcode.host/developer-roadmap/backend/intro/

一、后台业务开发大佬——后台架构/业务目标/编程语言的演进

1.0、数据层→服务层→通讯层→展现层

后台路线,都是面对后台服务器业务,比如web后台服务器,视频后台服务器,搜索后台服务器,游戏后台服务器,直播后台服务器,社交IM后台服务器等等,大部分代码和业务逻辑相关,想成为大佬,必须精通专业领域业务知识。

但同时也存在一些通用的技术要求,  比如熟悉编程语言,数据结构与算法,网络编程,TCP/IP协议,数据库,中间件,高性能、高可用技术。

展现层

Web:HTML、HTMLS、VGA、Vue

App:ios、Android)

微信公众号:微信小程序)

Restfu接口:

通讯层

CDN、SLB、Netty、Socket、HTTP/HTTPS

服务层

监控&保护:Sleuth链路跟踪、Turbine集群监控、Hystrix容错保护

Zuul

业务集群:服务

治理&配置:Consul服务治理、Eureka服务治理、Clonfig配置管理

Spring Cloud Bus消息总线、Cloud Data Flow大数据操作、Cloud Task任务调度、Cloud Data Stream数据流操作

Netflix Eureka、Netflix Zuul、Spring Cloud Config、Spring Cloud Bus ...

数据层

mongodb、mysql、HDSF、ElasticSearch

1.1、后台技术架构演进:局域网→广域网→单体多层架构→SOA/EDA →虚拟机→云计算→微服务→云原生

随着 PC 局域网,特别是关系型数据库的应用,基础架构发展成了两层架构;随后是广域网的发展,由单体多层架构,出现了SOA/EDA 架构盛行;接下来是虚拟机,再到今天的云计算基础架构,又出现了微服务,之后是 Container as a Service、Serverless ,到最近很火云原生架构等,可以看到架构的变化都是要充分利用 IT 基础设施。

1.2、业务目标演进:高并发/高性能→稳定性→自动运维

以往互联网流量爆发时代,先抗住流量峰值,高并发/高性能,支持水平扩展是后台设计的重要目标 ;

当前互联网流量见顶,存量竞争加剧,后台服务的稳定性变得愈发重要;

企业降本增效决心变强,研发效率,监控运维平台,自动化测试,CI/CD流水线等也变得重要起来。

1.3、后台开发语言演进:C++语言→PHP语言→JAVA语言→Go语言→Python语言→Rust语言

C++语言

服务器硬件资源昂贵年代,C++语言既能高性能,又能代码复用(OOP编程),成了很多大厂后台开发的主力语言;

PHP语言

第一代web后台开发主流是PHP语言,那时候互联网主流的后台架构是LAMP架构;

JAVA语言

随着电商兴起,Android 手机普及,大数据出现,推动JAVA语言技术栈发展,JAVA成了互联网主流后台编程语言。

Go语言

随着云计算时代到来,云原生计算兴起,Go语言生态发展稳健,兼顾性能和开发速度,越来越多企业在生产中使用 Go语言落地业务,目前很多大厂后台开发语言已经开始转向Go。

Python语言

人工智能发展,也推动Python语言发展,简单,上手快,开发效率高,成了一些不在乎性能后台组件的开发语言。

Rust语言

由于安全性,稳定性越发重要,Rust语言有可能成后台关键组件开发语言,兼顾性能和内存安全性,用来替换后台系统核心的C++组件;

目前国内各个大厂主流后台语言不尽相同:

●  腾讯偏向C++,Go等,Go越来越流行

●  阿里,拼多多,美团,京东偏向Java

●  字节偏向Go/Python

●  百度偏向C++

●  华为偏向C/C++

对于未来,Python、Go、Rust 成为后端未来最先考虑学习编程语言。

二、中间件高手——消息中间件、缓存中间件、RPC框架、负载均衡

中间件(Middleware)一种应用于分布式系统的基础软件,自上世纪80年代诞生以来,在分布式环境中,低调地发挥着重要作用。基于中间件,系统软件与应用软件之间实现了高效连接与沟通,应用开发得以提速。

2.1、消息中间件:提供可靠的消息传输 ActiveMQ、RabbitMQ、RocketMQ、Kafka

ActiveMQ

RabbitMQ

RocketMQ

Kafka

性能(单台)

6000+

万级(12000+)

十万级

百万级

消息持久化

支持

支持

支持

支持

多语言支持

支持

支持

很少

支持

社区活跃度

支持协议

多(JMS,AMQP..)

多(AMQP,STOMP,MQTT....)

综合评价

优点:社区比较成熟,已经在很多公司得到应用。较多的文档。各种协议支持较好,有多个语言的成熟客户端。

缺点:性能较弱。缺乏大规模吞吐的场景的应用,而且版本迭代很慢,有江河日下之感。不推荐使用

优点:性能较好,管理界面较丰富,在互联网公司也有较大规模的应用,有多个语言的成熟客户端。

缺点:内部机制很难了解,也意味很难定制和掌控。集群不支持动态扩展。

优点:模型简单,接口易用。在阿里有大规模应用。分布式系统,性能很好,版本更新很快。

缺点:文档少,支持的语言较少,尚未主流。

优点:天生分布式,性能最好,常见用于大数据领域。

缺点:运维难度大,偶尔有数据混乱的情况对ZooKeeeper强依赖。多副本机制下对带宽有一定的要求。

各种特点以及选择技巧

RabbitMQ

(1)、在吞吐量方面虽然稍逊于 Kafka 和 RocketMQ ,但是由于它基于 erlang 开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。

(2)、但也因为 RabbitMQ 基于 erlang 开发,所以国内很少有公司有实力做erlang源码级别的研究和定制。

RocketMQ

(1)、阿里出品,Java 系开源项目,源代码我们可以直接阅读,然后可以定制自己公司的MQ,并且 RocketMQ 有阿里巴巴的实际业务场景的实战考验。(2)、RocketMQ 社区活跃度相对较为一般,不过也还可以,文档相对来说简单一些。

(3)、还有就是阿里出台的技术,你得应对这个技术万一被抛弃,社区黄掉的风险,如果你们公司有技术实力我觉得用RocketMQ 挺好的。

Kafka

(1)、特点很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms 级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展。

(2)、同时 Kafka 最好是支撑较少的 topic 数量即可,保证其超高吞吐量。Kafka 唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略。

(3)、Kafka天然适合大数据实时计算以及日志收集。

选择方法

(1)、如果业务场景对并发量要求不是太高(十万级、百万级),那这四种消息队列中,RabbitMQ 一定是你的首选;

(2)、如果是大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范;

Apache Pulsar(新一代消息中间件)VS Kafka

Apache Kafka

Apache Pulsar

存储中心区分

以分区为存储中心

以 Segment为存储中心

Apache Pulsar 这种独特的基于分布式日志存储的以 Segment 为中心的发布/订阅消息系统可以提供许多优势,例如可靠的流式系统,包括无限制的日志存储,无需分区重新平衡的即时扩展,快速复制修复以及通过最大化数据放置实现高写入和读取可用性选项。

2.2、缓存中间件:提高访问性能

CPU的缓存的作用是为了减少对内存访问,同样扩展到分布式系统里面,缓存中间件可以提高对组件数据的访问性能。

Redis

简介

比较流行缓存中间件,根据局部性原理,冷热数据分离,一般用来加快数据库的高频数据访问:

未来优化方向

高可用、持久化优化、安全加密、IO&连接优化、多线程优化、数据结构优化&支持

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。