Java 全栈知识体系(2021 PDF 版本)

全栈知识体系总览

Java 全栈知识体系(2021 PDF 版本)_第1张图片

Java入门与进阶

面向对象与Java基础

 

基础知识点复习完了以后,我们需要深入的理解Java中的一些基础机制:

Java进阶 - 集合框架

Java 全栈知识体系(2021 PDF 版本)_第2张图片

A. Java进阶 - Java 集合框:Java 集合框架应用是极其广泛的,对于其总体框架用法及源码都必要深刻理解。

  • Collection 类关系图

B. Java进阶 - Java 集合框之 Collection源码解读:对核心的Collection类进行源码解读。

C. Java进阶 - Java 集合框之 Map & Set 源码解读:对核心的Map & Set 类进行源码解读。

Java进阶 - 并发框架

Java 全栈知识体系(2021 PDF 版本)_第3张图片

A. Java进阶 - Java 并发之基础:首先全局的了解并发的知识体系,同时了解并发理论基础和线程基础,并发关键字等,这些是你理解Java并发框架的基础。

​​​​​​​

B. Java进阶 - Java 并发之J.U.C框架:然后需要对J.U.C框架五大类详细解读,包括:Lock框架,并发集合, 原子类, 线程池和工具类。​​​​​​​

B.1 Java进阶 - Java 并发之J.U.C框架【1/5】:CAS及原子类:从最核心的CAS, Unsafe和原子类开始分析。​​​​​​​

B.2 Java进阶 - Java 并发之J.U.C框架【2/5】:锁:然后分析JUC中锁。​​​​​​​

B.3 Java进阶 - Java 并发之J.U.C框架【3/5】:集合:再理解JUC中重要的支持并发的集合。​​​​​​​

B.4 Java进阶 - Java 并发之J.U.C框架【4/5】:线程池:再者分析JUC中非常常用的线程池等。​​​​​​​

B.5 Java进阶 - Java 并发之J.U.C框架【5/5】:工具类:最后来看下JUC中有哪些工具类,以及线程隔离术ThreadLocal。​​​​​​​

C. Java进阶 - Java 并发之 本质与模式:最后站在更高的角度看其本质(协作,分工和互斥),同时总结上述知识点所使用的模式。

Java进阶 - IO框架

Java 全栈知识体系(2021 PDF 版本)_第4张图片

A. Java进阶 - IO框架之知识体系:首先了解下Java IO框架包含什么,同时推荐下如何学习IO框架。

​​​​​​​

B. Java进阶 - IO框架之基础IO:其次对Java基础IO框架进行梳理,包括其分类,使用和源码详解。​​​​​​

C. Java进阶 - IO框架之NIO/AIO等:然后再对Unix IO模型学习,引入到Java BIO/NIO/AIO相关知识详解。

​​​​​​​

D. Java进阶 - IO框架之开源框架:最后再对常用的开源框架进行分析和详解。

Java进阶 - JVM相关

Java 全栈知识体系(2021 PDF 版本)_第5张图片

学习思路

Java 全栈知识体系(2021 PDF 版本)_第6张图片

A. Java进阶 - JVM相关 知识体系:首先按照上述学习思路,理解总体知识点在全局上与知识体系之间的对应关系。

  • JVM 相关知识体系

B. Java进阶 - JVM相关 类加载:然后理解类字节码和类的加载机制。

C. Java进阶 - JVM相关 内存结构:因为类字节码是加载到JVM内存结构中的,所以紧接着理解JVM内存结构。

D. Java进阶 - JVM相关 JMM:然后通过理解JVM与硬件之间的联系,理解Java 通过其内存模型保证数据线程安全等,这是JVM在并发上底层的支持。

E. Java进阶 - JVM相关 GC:再者理解下Java GC机制,如何回收内存等。

F. Java进阶 - JVM相关 排错调优:最后围绕着调试和排错,分析理解JVM调优参数,动态字节码技术及动态在线调试的原理;学会使用常用的调工具和在线动态调试工具等。

Java 全栈知识体系(2021 PDF 版本)_第7张图片

G. Java进阶 - JVM 企业面试题精选:重点介绍一些企业常见的面试及答案解析

  • Java 虚拟机(JVM)面试题(2021最新版)

更多关于Java技术栈的技术文章、技术资源(文档、视频)、以及各咱企业面试题,可以关注民工哥技术之路公众号,回复关键字 1024 获取全部分享的技术资源。

数据结构与算法

数据结构基础

Java 全栈知识体系(2021 PDF 版本)_第8张图片

学习思路

避免孤立的学习知识点,要关联学习。比如实际应用当中,我们经常使用的是查找排序操作,这在我们的各种管理系统、数据库系统、操作系统等当中,十分常用,我们通过这个线索将知识点串联起来:

数组的下标寻址十分迅速,但计算机的内存是有限的,故数组的长度也是有限的,实际应用当中的数据往往十分庞大;而且无序数组的查找最坏情况需要遍历整个数组;后来人们提出了二分查找,二分查找要求数组的构造一定有序,二分法查找解决了普通数组查找复杂度过高的问题。任和一种数组无法解决的问题就是插入、删除操作比较复杂,因此,在一个增删查改比较频繁的数据结构中,数组不会被优先考虑

普通链表由于它的结构特点被证明根本不适合进行查找

哈希表是数组和链表的折中,同时它的设计依赖散列函数的设计,数组不能无限长、链表也不适合查找,所以也适合大规模的查找

二叉查找树因为可能退化成链表,同样不适合进行查找

AVL树是为了解决可能退化成链表问题,但是AVL树的旋转过程非常麻烦,因此插入和删除很慢,也就是构建AVL树比较麻烦

红黑树是平衡二叉树和AVL树的折中,因此是比较合适的。集合类中的Map、关联数组具有较高的查询效率,它们的底层实现就是红黑树。

多路查找树 是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。

B树与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。它的应用是文件系统及部分非关系型数据库索引。

B+树在B树基础上,为叶子结点增加链表指针(B树+叶子有序链表),所有关键字都在叶子结点 中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中。通常用于关系型数据库(如Mysql)和操作系统的文件系统中。

B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针, 在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3。

R树是用来做空间数据存储的树状数据结构。例如给地理位置,矩形和多边形这类多维数据建立索引。

Trie树是自然语言处理中最常用的数据结构,很多字符串处理任务都会用到。Trie树本身是一种有限状态自动机,还有很多变体。什么模式匹配、正则表达式,都与这有关。

A. 数据结构 知识点:数据结构是基础中的基础,任何进阶都逃不开这些知识点。

  • 数据结构 - Overview

B. 数据结构之 线性结构:首先理解数据结构中线性结构及其延伸:数组和矩阵,链表,栈和队列等。

C. 数据结构之 逻辑结构:树:然后理解数据结构中逻辑结构之树:二叉搜索树(BST),平衡二叉树(AVL),红黑树(R-B Tree),哈夫曼树,前缀树(Trie)等。

D. 数据结构之 逻辑结构:图:最后理解数据结构中逻辑结构之图:图基础,图的遍历,最小生成树(Prim & Kruskal),最短路径(Dijkstra & Frolyd),拓扑排序(Topological sort),AOE & 关键路径等。

排序算法详解

Java 全栈知识体系(2021 PDF 版本)_第9张图片

A. 常见排序概要:重点理解几个排序之间的对比,时间和空间复杂度,以及应用。PS:越简单越要提高认知效率,做到战略上藐视战术上重视。

  • 排序 - Overview

B. 常见排序详解:具体分析各种排序及其复杂度,查漏补缺;在综合复杂度及稳定性情况下,通常希尔快排和 归并需要重点掌握。

算法思想详解

A. 算法思想 详解:紧接着我们通过理解算法背后常用的算法思想,进行归纳总结,并通过leetcode练习来辅助理解和提升。

领域算法详解

Java 全栈知识体系(2021 PDF 版本)_第10张图片

A. 领域算法 梳理知识点:在了解基础算法之后,我们还要学习和了解在不同专业领域有哪些特有的算法。这里不一定要求复杂度,而是要有知识面以及解决问题的思路。

  • 一些领域算法 - Overview

B. 领域算法之 安全算法:主要包括摘要算法和加密算法两大类。

C. 领域算法之 字符串匹配算法:字符串匹配(String Matchiing)也称字符串搜索(String Searching)是字符串算法中重要的一种,是指从一个大字符串或文本中找到模式串出现的位置。

D. 领域算法之 大数据处理:这里其实想让大家理解的是大数据处理的常用思路,而不是算法本身。

E. 领域算法之 分布式算法:接着向大家介绍分布式算法,包括一致性Hash算法,经典的Paxos算法,Raft算法,ZAB算法等;顺便也介绍了经典用于全局ID生成的Snowflake算法。

F. 领域算法之 其它算法汇总:最后概要性的了解常见的其它算法:负载均衡算法,推荐算法,数据挖掘或机器学习算法。因为有其专业性,一般总体上了解就够了。

更多关于Java技术栈的技术文章、技术资源(文档、视频)、以及各咱企业面试题,可以关注民工哥技术之路公众号,回复关键字 1024 获取全部分享的技术资源。

数据库理论与实践

Java 全栈知识体系(2021 PDF 版本)_第11张图片

数据库基础与理论

A. 了解数据库基础和理论知识:在学习数据库之前,不要一上来就是SQL语句;这里建议从数据结构开始切入到数据库,然后再理解数据库是如何工作的,紧接着理解数据库系统的原理知识点和相关知识体系。

SQL语言基础和进阶

B. 完全掌握SQL语言:在了解数据库基础之后,如下章节将重点阐述SQL语言相关的知识;主要顺序是:SQL语法->SQL语句练习->SQL题目进阶->SQL语句优化建议等。

SQL DB - MySQL数据库

C. 掌握MySQL数据库:在理解了SQL语言后,开始进阶MySQL相关的知识点吧(在开始前,建议你完整看一本MySQl相关的书,作为你的知识体系基础);这里不会讲如何安装MySQL或者如何使用,因为这是容易的,而是会关注一些有助于我们构建MySQL相关知识体系的知识点等。

NoSQL DB - Redis详解

D. 掌握Redis数据库:在理解了关系型数据库后,开始进阶最为常用的KV库Redis,一些大厂都在使用,面试也必问。

Java 全栈知识体系(2021 PDF 版本)_第12张图片

首先,我们通过学习Redis的概念基础,了解它适用的场景。

其次,这些适用场景都是基于Redis支持的数据类型的,所以我们需要学习它支持的数据类型;同时在redis优化中还需要对底层数据结构了解,所以也需要了解一些底层数据结构的设计和实现。

Java 全栈知识体系(2021 PDF 版本)_第13张图片

再者,需要学习Redis支持的核心功能,包括持久化,消息,事务,高可用;高可用方面包括,主从,哨兵等;高可拓展方面,比如 分片机制等。

最后,就是具体的实践以及实践中遇到的问题和解决方法了:在不同版本中有不同特性,所以还需要了解版本;以及性能优化,大厂实践等。

NoSQL DB - MongoDB详解

E. 掌握MongoDB数据库:在理解了Redis后,让我们认识NoSQL数据库中最为常用的MongoDB;它在后期版本中更换了证书,使用时需要注意下;但是不妨碍我们学习。

Java 全栈知识体系(2021 PDF 版本)_第14张图片

MongoDB生态

Java 全栈知识体系(2021 PDF 版本)_第15张图片

1. MongoDB引入和生态介绍:首先了解NoSQL基本的概念以及MongoDB基础概念,进而引入MongoDB的生态。

2. MongoDB入门 - 基本使用:开始学习MongoDB安装,使用等。

Java 全栈知识体系(2021 PDF 版本)_第16张图片

3. MongoDB进阶 - 原理和WiredTigger存储引擎:在学习完常用的基础之后,我们再看下MongoDB的原理和WiredTigger存储引擎。

4. MongoDB进阶 - 数据库核心知识点:再者我们还学要进一步学习MongoDB的核心知识点。

5. MongoDB进阶 - 数据模型设计:在真正使用中,需要知道如何设计数据模型。

6. MongoDB进阶 - 性能优化:最后基于上述知识点,我们再了解下常见的性能优化的方式。

NoSQL DB - ElasticSearch

E. 掌握ElasticSearch数据库:在理解了MongoDB后,让我们再学习下搜索的索引库;日志收集ELK栈是非常常见的,同时在一些离线大数据分析中也经常使用。

首先,我们通过学习ElasticSearch的概念基础,了解Elastic Stack生态和场景方案。

然后,搭建ElasticSearch和Kibana,进而从查询和聚合的角度入门学习。

入门后,需要从两大方面深入ElasticSearch常用功能:第一方面是索引管理;第二方面是查询和聚合。

进一步进阶,了解并深入ElasticSearch底层的原理等。

最后,学习ElasticSearch实践,大厂经验,运维,资料等。

更多关于Java技术栈的技术文章、技术资源(文档、视频)、以及各咱企业面试题,可以关注民工哥技术之路公众号,回复关键字 1024 获取全部分享的技术资源。

开发与常用基础

Java 全栈知识体系(2021 PDF 版本)_第17张图片

开发之常用类库

A. 开发之常用类库:区别于学习,在开发应用时正确使用一些开源第三方工具包可以极大的提升开发效率,本章主要介绍运用极为广泛的工具包,比如Apache Common,Google Guava,Hutool等。

开发之代码质量保障

B1. 开发之单元测试:单元测试是从开发侧保证软件质量的第一步,本章将具体介绍单元测试相关的内容和工具,比如Junit,Mockito等。

B2. 开发之代码质量:项目的代码通常是一个团队共同完成的,要保障代码质量的首要前提就是统一代码的风格,命名规范,静态代码检查等等。

开发之正则表达式

C. 开发之正则表达式:正则表达式运用极为广泛,但是知识点又多;在学习时,总体上理解,对常用的知悉,开发时可以快速查询使用即可。

开发之网络协议

D. 开发之网络协议:对Web开发而言,网络协议是必学项,本章主要对常见的网络协议进行梳理,并重点分析常用TCP/IP协议等,这篇网络基础和协议 - Overview将指导你如何学习这个系列。

第一步:学习计算机网络基础;构筑任何基础体系之前,需要学习这个专题的整体知识点(最好是一本完整的书),这里主要基于《计算机网络(第五版)》知识点梳理,不得不说这本书作者谢希仁画的PPT还是挺棒的。网络基础分三部分内容,主要包含如下:

第二步:学习传输层协议TCP/UDP;TCP/UDP是后面应用层协议的基础。

第三步:学习应用层协议;HTTP 基于TCP协议实现,web开发必学;DNS 基于UDP协议实现。

第四步:知识点贯穿理解;

第五步:相关工具等;

开发之安全相关

E. 开发之安全相关:保障开发出的软件安全是非常重要的,本章主要对开发知识体系,OWASP Top 10梳理,以及对常见的漏洞进行详解; 这篇开发安全 - Overview将指导你如何学习这个系列。

第一步:业内趋势和常见漏洞;在学习安全需要总体了解安全趋势和常见的Web漏洞,首推了解OWASP,因为它代表着业内Web安全漏洞的趋势

  • 开发安全 - OWASP Top 10

第二步:重点知识点详解;这里将具体对常见对几种攻击方式进行阐述,包括注入攻击,CSRF,XSS等。

第三步:学习和实践:一个比较好对学习常见web漏洞的平台 - Web安全测试平台(DVMA)

第四步:渗透测试:用渗透测试的整个流程,帮你理解项目发布时安全团队如何做渗透测试来尽量避免漏洞

Spring 框架

Spring基础

Spring Boot入门

Spring Boot进阶

以上内容来自:

Spring Cloud

企业面试题

Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。

Web容器 - Tomcat详解

Java 全栈知识体系(2021 PDF 版本)_第18张图片

初始化和启动流程

Java 全栈知识体系(2021 PDF 版本)_第19张图片

ORM - MyBatis详解

Java 全栈知识体系(2021 PDF 版本)_第20张图片

开发百宝箱(常用资源)

  • 开发百宝箱

开发工具清单

开发工具详解

Linux相关

Docker相关

开发原则,流程,协议

代码规范

设计模式

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将对24种设计模式和7个设计原则进行总结,和具体阐述意义。你可以通过这篇文章设计模式 - Overview 了解整体上的知识点。

Java 全栈知识体系(2021 PDF 版本)_第21张图片

第一步:创建型设计模式

第二步:结构型设计模式

第三步:行为型设计模式

架构与系统设计

Java 全栈知识体系(2021 PDF 版本)_第22张图片

架构基础与方**

A. 架构基础 - 基础知识:首先带你梳理下架构中有哪些知识点,如何学习架构,并向你介绍架构相关基础知识。

B. 架构基础 - 理解架构:然后带你从构架的视角,架构的演进,架构的服务演化等角度分析架构的维度;而架构的模式即方**总结,架构的核心要素是我们架构实现的目标。

架构技术点详解

C. 架构技术点详解:紧接着对于高并发和高可用,高性能,具体阐述其中涉及的知识点,比如:缓存,限流,降级和熔断,负载均衡,容灾备份,故障转移。

互联网架构案例

D. 架构案例:从系统设计的角度,将上述的知识点融入进来,比如:秒杀系统设计等。

  • 架构案例 - 秒杀系统设计

E. 互联网架构案例:最后我们再看下互联网架构案例,帮助自己理解和学习架构。

架构参考资料

F. 架构参考资料:此外还会总结下架构里面比较好的学习资料。

1. 《大型网站技术架构:核心原理与案例分析》

这是比较早,比较系统介绍大型网站技术架构的书,通俗易懂又充满智慧,即便你之前完全没接触过网站开发,通读前几章,也能快速获取到常见的网站技术架构及其应用场景。非常赞。

2. 《亿级流量网站架构核心技术》

相比《大型网站技术架构》的高屋建瓴,开涛的这本《亿级流量网站架构核心技术》则落实到细节,网站架构中常见的各种技术,比如缓存、队列、线程池、代理……,统统都讲到了,而且配有核心代码。甚至连 Nginx 的配置都有!

如果你想在实现大流量网站时找参考技术和代码,这本书最合适啦。

3. 《架构即未来》

这是一本“神书”啦,超越具体技术层面,着重剖析架构问题的根源,帮助我们弄清楚应该以何种方式管理、领导、组织和配置团队。

4. 《分布式服务架构:原理、设计与实战》

这本书全面介绍了分布式服务架构的原理与设计,并结合作者在实施微服务架构过程中的实践经验,总结了保障线上服务健康、可靠的最佳方案,是一本架构级、实战型的重量级著作。

5. 《聊聊架构》

这算是架构方面的一本神书了,从架构的原初谈起,从业务的拆分谈起,谈到架构的目的,架构师的角色,架构师如何将架构落地……强烈推荐。

不过,对于没有架构实践经验的小伙伴来讲,可能会觉得这本书比较虚,概念多,实战少。但如果你有过一两个项目的架构经验,就会深深认同书中追本溯源探讨的架构理念。

6. 《软件架构师的12项修炼》

大多数时候所谓的“技术之玻璃天花板”其实只是缺乏软技能而已。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。

以上内容来自:

微服务

微服务已经不是什么新技术,只是闻道有先后,大厂和趋势在前行,你不得不迈开脚步(可能你反对,但是趋势挡不住),当微服务扑面而来的时候,你是否还在观望或者犹豫,当你恍然大悟的时候,你是否又迷茫不知所措?是的,我们需要一份微服务的脑图,也许这份图谱不一定是标准答案,但是在你做参考和评估的时候,希望能对你有所帮助。如下图所示:

Java 全栈知识体系(2021 PDF 版本)_第23张图片

微服务总体的内容包含有六大组件:服务描述,注册中心,服务架构,服务监控,服务跟踪和服务治理。这六大组件互相依赖,相辅相成,纵深挖掘,又可以牵扯出DevOps和容器化技术等周边信息,这些武器库代表的是技术的未来,不管是你是在小企业还是大厂,还是大厂里的小部门,不知道你是否有这种体验?

Java 全栈知识体系(2021 PDF 版本)_第24张图片

服务描述:

类似服务的说明文档,简单但不可或缺。比如,服务调用首先要解决的问题就是服务如何对外描述。比如,你对外提供了一个服务,那么这个服务的服务名叫什么?调用这个服务需要提供哪些信息?调用这个服务返回的结果是什么格式的?该如何解析?这些就是服务描述要解决的问题。

注册中心:

有了服务的接口描述,下一步要解决的问题就是服务的发布和订阅,就是说你提供了一个服务(Provider),如何让外部(Consumer)想调用你的服务的人知道。这个时候就需要一个类似注册中心(Registry)的角色,服务提供者将自己提供的服务以及地址登记到注册中心,服务消费者则从注册中心查询所需要调用的服务的地址,然后发起请求。如下图所示:

Java 全栈知识体系(2021 PDF 版本)_第25张图片

服务框架:

通过注册中心,服务消费者就可以获取到服务提供者的地址,有了地址后就可以发起调用。但在发起调用之前你还需要解决以下几个问题。服务通信采用什么协议?是RESTful API还是gRPC?数据传输采用什么方式数据压缩采用什么格式?这些活通常集成到了我们的服务框架里面,市面上有很多这样的开源框架,相对都比较成熟,接下来考验你的是快速上手的能力。

服务监控:

一旦服务消费者与服务提供者之间能够正常发起服务调用,你就需要对调用情况进行监控,以了解服务是否正常。通常来讲,服务监控主要包括三个流程,指标收集,数据处理,数据展示。监控是为了发现问题和异常,如果要进一步跟踪和定位问题,则需要进一步了解服务追踪。

服务追踪:

除了需要对服务调用情况进行监控之外,你还需要记录服务调用经过的每一层链路,以便进行问题追踪和故障定位,最后达到接近问题的目的。服务监控和追踪可以合并起来,但是要明确各自的职责是不一样的。

服务治理:

服务监控能够发现问题,服务追踪能够定位问题所在,而解决问题就得靠服务治理了。服务治理就是通过一系列的手段来保证在各种意外情况下,服务调用仍然能够正常进行。就目前开源的服务框架,大部分都不包括服务治理的内容,所以有可能这块是需要你和你的团队进行定制化开发,就看你做到什么程度了,就好比你有数据库但是你没有ER图描述,并不影响你用微服务,当然如果有就是锦上添花的东西了。

以上六大组件可以粗暴的定义为微服务的二级目录,他们共同组成了微服务架构,在生产环境下缺一不可。

以上文字部分节选自:cnblogs.com/jackyfei/p/10019621.html

Kubernetes

虽然 Docker 已经很强大了,但是在实际使用上还是有诸多不便,比如集群管理、资源调度、文件管理等等。那么在这样一个百花齐放的容器时代涌现出了很多解决方案,比如 Mesos、Swarm、Kubernetes 等等,其中谷歌开源的 Kubernetes 是作为老大哥的存在。

Java 全栈知识体系(2021 PDF 版本)_第26张图片

Kubernetes 解决的核心问题

Kubernetes 的出现不仅主宰了容器编排的市场,更改变了过去的运维方式,不仅将开发与运维之间边界变得更加模糊,而且让 DevOps 这一角色变得更加清晰,每一个软件工程师都可以通过 Kubernetes 来定义服务之间的拓扑关系、线上的节点个数、资源使用量并且能够快速实现水平扩容、蓝绿部署等在过去复杂的运维操作。

更多介绍参阅:Kubernetes 前世今生( 附学习导图 )

安装

安装v1.16.0版本,竟然成功了。记录在此,避免后来者踩坑。本篇文章,安装大步骤如下:详细安装步骤参考:CentOS 搭建 K8S,一次性成功,收藏了! 集群安装教程请参考:全网最新、最详细基于V1.20版本,无坑部署最小化 K8S 集群教程

Pod 实现原理

Pod 就是最小并且最简单的 Kubernetes 对象

Java 全栈知识体系(2021 PDF 版本)_第27张图片

详细介绍请参考:Kubernetes 之 Pod 实现原理

Harbor 仓库

Kuternetes 企业级 Docker 私有仓库 Harbor 工具。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署。用于部署 Harbor 的 Docker Compose 模板位于 /Deployer/docker-compose.yml 中,其由 5 个容器组成,这几个容器通过 Docker link 的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 Proxy(即Nginx) 的服务端口即可。

详细介绍与搭建步骤请参考:企业级环境中基于 Harbor 搭建

YAML 语法

YAML 是一种非常简洁/强大/专门用来写配置文件的语言!YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON /

更多详细内容请参阅::Kubernetes 之 YAML 语法,这篇文章介绍的非常详细,有很多例子说明。

资源清单

K8S 中所有的内容都抽象为了资源,资源实例化之后就叫做对象。

更多详细内容请参阅:Kubernetes 之资源清单详细介绍看这里

资源控制器

Kubernetes 资源控制器配置文件的编写是学习 K8S 的重中之重!资源配额控制器确保了指定的资源对象始终不会超过配置的资源,能够有效的降低整个系统宕机的机率,增强系统的鲁棒性,对整个集群的稳定性有非常重要的作用。

Kubernetes 资源控制器使用指南手册

服务发现

Kubernetes 中为了实现服务实例间的负载均衡和不同服务间的服务发现,创造了 Service 对象,同时又为从集群外部访问集群创建了 Ingress 对象。

更多详细内容请参阅:Kubernetes 之服务发现

Ingress 服务

我们都知道传统的 SVC 只支持四层上面的代码,而对于七层上的代码而无能为力。比如:我们使用 K8S 集群对外提供 HTTPS 的服务,为了方便和便捷,我们需要在对外的 Nginx 服务上面配置 SSL 加密,但是将请求发送给后端服务的时候,进行证书卸载的操作,后续都是用 HTTP 的协议进行处理。而面对此问题,K8S 中给出了使用 Ingress (K8S在1.11版本中推出了)来进行处理。

更多详细内容请参阅:Kubernetes 之 Ingress 服务,介绍关于 Ingress 服务的安装方式,配置关于 Ingress 服务的 HTTP 代理访问,介绍 Ingress 服务的 BasicAuth 认证方式,介绍 Ingress 的进行规则重写的方式。

数据存储

在之前的文章中,我们已经知道了很多 K8S 中的组件了,包括资源控制器等。在资源控制器中,我们说到了 StatefulSet 这个控制器组件,其专门为了有状态服务而生的,而对应的存储要存放到哪里呢?

介绍 K8S 中常见的存储机制可以让我们所使用的:Kubernetes 之数据存储

集群调度

有这样一个需求,就是集群中多台服务的配置是不一致的。这就导致资源分配并不是均匀的,比如我们需要有些服务节点用来运行计算密集型的服务,而有些服务节点来运行需要大量内存的服务。而在 k8s 中当然也配置了相关服务来处理上述的问题,那就是 Scheduler。

详细的介绍请参考:Kubernetes 之集群调度

kubectl 使用指南

kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes 集群。

更多详细内容请参阅:Kubernetes 之 kubectl 使用指南

管理工具

Kubernetes 常见问题总结

对于新安装的 Kubernetes,经常出现的一个问题是 Service 没有正常工作。如果您已经运行了 Deployment 并创建了一个 Service,但是当您尝试访问它时没有得到响应,希望这份文档(全网最详细的 K8s Service 不能访问排查流程)能帮助您找出问题所在。



Java 全栈知识体系(2021 PDF 版本)_第28张图片

原文出处:www.shaoqun.com/a/1252405.html

你可能感兴趣的:(java,后端,框架,java,jvm,面试)