谈谈云原生技术

Posted 谈谈信息技术与信息项目管理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈云原生技术相关的知识,希望对你有一定的参考价值。

近期有时间就在了解云原生技术,现把个人对云原生的了解和理解和大家做一个享。

 


对云原生比较权威的定义:云原生是一类技术的统称,通过云原生技术,可以构建出更易于弹性扩展的应用程序。

当然,云原生这一类技术当然是为运行在云上的应用服务的,通过云原生技术构建出来的应用程序,称之为云原生应用,底层基础架构的耦合比较轻,因此易于迁移,它可以充分地利用云所提供的能力,因此云原生应用的开发、部署、管理相对于传统的应用程序更加高效和便捷。

关于云原生技术,其实有很多概念、技术、工具咱们都已经很熟悉了,例如版本控制、自动化构建、自动化测试、持续集成、SVNMavenJMeterJenkins等。而微服务、Dockerkubernetesk8s)是互联网行业很成熟的应用技术,但对于咱们一些助力传统行业企业加快数字化转型的的软件服务商,也有必要学习和引入这些互联网技术,进行适当裁剪,帮助我们的客户更好的进行数字化建设。

先说说微服务,其实就是把之前的单体应用,按着领域模型,也就是按不同的业务功能进行划分,拆分成多个独立的更小的应用,多个应用之间通过互相调用接口,实现之前单体应用的功能,例如传统的单体应用,包括有邮箱服务、验证服务、流程引擎服务、审计服务、人员组织服务、角色权限服务以及相关的功能模块服务等,如果采用微服务架构后,那么以上的每个服务都会是一个独立的应用,每个应用有自己的独立数据库,可以独立部署,像高可用、负载均衡都可以独立支持。这样子就降低了各个模块的耦合度,当其中某个应用出现问题,也只需要修复这个应用的bug,重新发布部署这一个应用即可;另外,当某个应用负载过大时,我们也只需要给这个应用升级硬件资源,带来的好处不言而喻。

微服务架构目前的技术路线主要是两个,一个是基于SpringCloud来实现,一个是基于Dubbo+Zookeeper来实现,关于这两者的比较,网上一搜就明白了,我就直接说建议,对于一个技术和资金实力还不是特别强的公司,建议还是采用SpringCloud,且目前SpringCloud也是越来越流行,社区越来越活跃。

当然微服务架构也带来了困难,那就是我们之前的一个单体应用,现在可能会被拆成十多个或几十个独立的应用,运维人员要部署运维这么多的应用,那是要疯了,Docker技术就能为我们解决不少困难。大家很熟悉虚拟机,平常我们要做个售前演示,或做个POC,我们都会在我们虚拟机做好,其他同事需要的时候,直接拷贝虚拟机即可。类似的想法,那我们是否能把多个应用全部在多个虚拟机部署调试好,直接拷贝到生产环境运行了,思路是没问题的,但是虚拟机太大了,也太占资源了,实际上不可行。Docker就是一个和虚拟机很类似的技术,但是是为微服务量身打造的这么一种技术。我们可以把每个应用都作出一个Docker镜像,通过Docker容器运行,Docker相比虚拟机更加轻量级,在资源上,它是进程隔离级别的,而虚拟机是操作系统隔离级别,其镜像本身占资源也很小,Docker与虚拟机的详细区别可以见后续链接。通过Docker技术,就只需要在生产环境部署Docker,然后把经过测试的Docker镜像部署到生产环境即可,这样就免去了复杂的部署过程,但这样还远远不够,因为还需要对多个容器进行编排,实现应用的负载均衡,容器资源的可伸缩管理,支持自动化部署,这些工作就交由K8S来处理。

 


如上图所示,K8S是由一个主控节点Master和多个工作节点node组成,主节点和工作节点都是安装LinuxLinuxDocker的支持好)操作系统的服务器,node节点上都安装有Docker容器,具体哪个容器运行什么镜像,以及运行几个镜像,这部分对用户来说是透明的,多个nodemaste来说就是一个大的资源池,每个镜像在容器中运行就是一个独立的应用,我们想让资源池中某个应用做负载均衡,只需要在k8s中进行配置管理,k8s自己会找到合适的node运行相应数量镜像,而镜像全部来自于镜像仓库,仓库好理解,就类似咱们的Maven仓库类似。所以对于系统部署运维人员来说,就是福音了,只需要根据建议硬件配置,准备好服务器资源,然后部署Docker就行了,其他的应用安装部署,以及负载均衡配置,都通过k8s管理即可了,后续软件升级部署,也都是通过镜像版本升级实现。所以这也充分体现了DevOps思想,系统运维人员只需要关注硬件资源及操作系统补丁包升级即可,让其从繁琐的应用软件安装部署,补丁包升级的事物中解脱出来,部署、软件升级的工作就交给研发团队了,研发团队也只需要管理K8S和镜像仓库了,当然K8S的技术内容就很多了,详细技术,有兴趣的同学可以深入学习研究。

以上内容,希望帮助大家了解云原生技术。

https://www.jianshu.com/p/a37baa7c3eff

https://www.cnblogs.com/angryjj/p/11470456.html

https://www.cnblogs.com/aspirant/p/9089146.html


以上是关于谈谈云原生技术的主要内容,如果未能解决你的问题,请参考以下文章

谈谈云原生开源项目和Harbor

以“升舱”之名,谈谈云原生数据仓库 AnalyticDB 的核心技术

谈谈为什么我们需要云原生架构?

阿里云李飞飞:什么是云原生数据库

虎年云原生落地技术趋势

阿里云李飞飞:什么是云原生数据库