ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

十分钟带你看懂Netty如何实现C-S,分享面经!

2021-07-06 07:04:41  阅读:164  来源: 互联网

标签:Netty 容器 s2.51 面经 十分钟 https Docker cto com


# **容器化时代来了** 虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 Docker 技术的诞生。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524276813976.jpg) 虚拟化技术演进 (1)物理机时代:多个应用程序可能会跑在一台机器上。 ![物理机时代](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524276450717.jpg) (2)虚拟机时代:一台物理机器安装多个虚拟机(VM),一个虚拟机跑多个程序。 ![虚拟机时代](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524276324615.jpg) (3)容器化时代:一台物理机安装多个容器实例(container),一个容器跑多个程序。 ![容器化时代](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524276722852.jpg) 容器化解决了软件开发过程中一个令人非常头疼的问题,用一段对话描述: > 测试人员:你这个功能有问题。 > > 开发人员:我本地是好的啊。 开发人员编写代码,在自己本地环境测试完成后,将代码部署到测试或生产环境中,经常会遇到各种各样的问题。明明本地完美运行的代码为什么部署后出现很多 bug,原因有很多:不同的操作系统、不同的依赖库等,总结一句话就是因为本地环境和远程环境不一致。 容器化技术正好解决了这一关键问题,它将软件程序和运行的基础环境分开。开发人员编码完成后将程序打包到一个容器镜像中,镜像中详细列出了所依赖的环境,在不同的容器中运行标准化的镜像,从根本上解决了环境不一致的问题。 # **容器化技术的尖刀武器** ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524277125092.jpg) 容器化技术的特点: * **可移植性**:不依赖具体的操作系统或云平台,比如在阿里云或腾讯云直接随意迁移。 * **占地小**:容器只需要其应用程序以及它需要运行的所有容器和库的依赖清单,不需要将所有的依赖库都打包在一起。 * **共享 bin 和 lib**:不同的容器可以共享 bin 和 lib,进一步节省了空间。 # **Docker 横空出世** 2010年一位年轻小伙子在美国旧金山成立了一家名叫【dotCloud】的公司, 开发了 Docker的核心技术,从此开启了容器技术的时代。 ![Docker原公司名](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524277122634.jpg) 后面 dotCloud 公司将自己的容器技术进行了简化和标准化,取名为 Docker,就是大家熟悉的鲸鱼 logo。 ![Docker新logo](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524277914054.jpg) 2013年dotCloud 公司宣布将 Docker 开源,随着越来越多的工程师发现了它的优点, Docker 的人气迅速攀升,成为当时最火爆的开源技术之一。 当前有30%以上的企业在其AWS环境中使用Docker,并且这个数字还在继续增长。 ![Docker使用率越来越高](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524277638278.jpg) # **Docker怎么用?** 其实大多数人谈论 Docker 时说的是 Docker Engine,这只是一个构建和运行的容器。 在运行容器前需要编写Docker File,通过 dockerFile 生成镜像,然后才能运行 Docker 容器。 Docker File 定义了运行镜像(image)所需的所有内容,包括操作系统和软件安装位置。一般情况下都不需要从头开始编写 Docker File,在 Docker Hub 中有来自世界各地的工程师编写好的镜像,你可以基于此修改。 # **编排系统的需求催生 k8s** 尽管Docker为容器化的应用程序提供了开放标准,但随着容器越来越多出现了一系列新问题: * 如何协调和调度这些容器? * 如何在升级应用程序时不会中断服务? * 如何监视应用程序的运行状况? * 如何批量重新启动容器里的程序? 解决这些问题需要容器编排技术,可以将众多机器抽象,对外呈现出一台超大机器。现在业界比较流行的有:k8s、Mesos、Docker Swarm。 在业务发展初期只有几个微服务,这时用 Docker 就足够了,但随着业务规模逐渐扩大,容器越来越多,运维人员的工作越来越复杂,这个时候就需要编排系统解救opers。 ![应用程序的声明周期](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524277724054.jpg) 一个成熟的容器编排系统需要具备以下能力: * 处理大量的容器和用户 * 负载均衡 * 鉴权和安全性 * 管理服务通信 * 多平台部署 # **k8s与Docker Swarm江湖恩怨** ![k8s VS Docker Swarm](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524278889530.jpg) 如果你非要拿 Docker 和 k8s 进行比较,其实你更应该拿 Docker Swarm 和 k8s 比较。 Docker Swarm 是 Docker 自家针对集群化部署管理的解决方案,优点很明显,可以更紧密集成到 Docker 生态系统中。 虽说 Swarm 是 Docker 亲儿子,但依旧没有 k8s 流行,不流行很大程度是因为商业、生态的原因,不多解释。 # **k8s是做什么用的?** K8s是Google研发的容器协调器,已捐赠给CNCF,现已开源。 Google 利用在容器管理多年的经验和专业知识推出了 k8s,主要用于自动化部署应用程序容器,可以支持众多容器化工具包括现在非常流行的Docker。 目前k8s 是容器编排市场的领导者,开源并公布了一系列标准化方法,主流的公有云平台都宣布支持。 一流的厂商都在抢占标准的制高点,一堆小厂商跟着一起玩,这就叫生态了。国内的大厂商都在干嘛呢?抢社区团购市场,玩资本游戏,哎?! # **K8s 架构和组件** k8s 由众多组件组成,组件间通过 API 互相通信,归纳起来主要分为三个部分: * controller manager * nodes * pods ![K8s集群架构图 ](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524278596069.jpg) **Controller Manager**,即控制平面,用于调度程序以及节点状态检测。 * **Nodes**,构成了Kubernetes集群的集体计算能力,实际部署容器运行的地方。 * **Pods**,Kubernetes集群中资源的最小单位。 # **Docker与k8s 难舍难分** Docker 和 k8s 在业界非常流行,都已经是事实上的标准。 Docker 是用于构建、分发、运行容器的平台和工具。 而 k8s 实际上是一个使用 Docker 容器进行编排的系统,主要围绕 pods 进行工作。Pods 是 k8s 生态中最小的调度单位,可以包含一个或多个容器。 Docker 和 k8s 是根本上不同的技术,两者可以很好的协同工作。 # 技术学习总结 学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524278648606.jpg) ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524278150859.jpg) ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524279240843.jpg) # 最后面试分享 大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波! ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524279705474.jpg) ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625524279720009.jpg) **最后,若需要完整pdf版,可以点赞本文后[点击这里免费领取](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

标签:Netty,容器,s2.51,面经,十分钟,https,Docker,cto,com
来源: https://blog.51cto.com/u_15289173/2985302

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有