-
- 云原生的概念
-
云原生的四大要点
-
- 微服务
-
容器化
-
devops
-
持续交付
-
结语
=================================================================
最近老是看到云原生这个概念,闲暇之余也去了解了一下!看了很多文章,对云原生的解释总是迷迷糊糊,看完云里雾里,经过博主的大量查阅,用我的理解总结一下。
云原生(Cloud Native)是一个组合词。我们把它拆分为云和原生两个词来看。
“云”即在线网络,我们都知道传统的应用都跑在本地服务器上,而本地部署的传统应用可能需要停机更新,且无法动态扩展等,而‘云’表示应用程序运行在分布式的云环境中,支持频繁变更,持续交付。
‘原生’表示应用程序在设计之初就考虑到了云平台的弹性和分布式特性,就是为云设计的。
那么随着云原生的技术的不断发展,他的定义也在不断地迭代和更新,不同的社区和公司对云原生有着不同的理解和定义,感兴趣的可以去看一下云原生的发展历程。
可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化
微服务
微服务就是一种软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。
使用微服务架构能够为我们带来如下好处:
1)服务的独立部署。
每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动。
拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务。
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容。
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用。
每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
容器化
容器技术是云原生的核心技术,容器是一种相对于虚拟机来说更加轻量的虚拟化技术。能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。
容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。例如,将一个 Java 虚拟机、 Tomcat 服务器以及应用程序本身打包进一个容器镜像。用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。
而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。
容器技术好处如下。
- 应用程序的创建和部署过程更加敏捷:与虚拟机镜像相比,使用应用程序的容器镜像更简便和高效。
- 可持续开发、集成和部署:借助容器镜像的不可变性,可以快速更新或回滚容器镜像版本,进行可靠且频繁的容器镜像构建和部署。
- 提供环境一致性:标准化的容器镜像可以保证开发、测试和生产环境的一致性,不必为不同环境的细微差别而苦恼。
- 提供应用程序的可移植性:标准化的容器镜像可以保证应用程序运行于 Ubuntu 、 CentOS 等各种操作系统或云环境下。
- 为应用程序的松耦合架构提供基础设置:应用程序可以被分解成更小的独立组件,可以很方便地进行组合和分发。
- 资源利用率更高。
- 实现了资源隔离:容器应用程序与主机之间的隔离、容器应用程序之间的隔离可以为运行应用程序提供一定的安全保证。
容器大大简化了云原生应用程序的分发和部署,可以说容器是云原生应用发展的基石。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
![](https://i-blog.csdnimg.cn/blog_migrate/b7a6daa5f5ed9dd12f079f1e80b8d8f4.jpeg)
完整版面试题资料免费分享,只需你点赞支持,动动手指点击此处就可领取了。
回顾项目
往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。
面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。
重点在于基础知识
这里指的基础知识包括:前端基础知识和学科基础知识。
前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。
学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue
这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。
t/Vue`这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。