云原生架构选择原因

Posted 程序小黑

tags:

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

云计算时传统软件架构的一场革命,云计算通过主机虚拟化实现了主机资源池化,并统一提供云化基础设施服务云托管服务。而随着应用上云的不断深入,企业需要去思考如何更好利用云的价值,在最大意义上发挥晕的价值,通过云原生技术来实现企业创新和数字化转型,这也是在云计算到达一个全新的层次需要进行的一个技术转变。

随着云计算技术的迅猛发展,云计算基本实现了普及,在传统计算方式中,OS为中间件直接提供服务,而应用是直接构建在中间件上的。设计师需要采购硬件、设计硬件、部署硬件、并根据需求的增长对硬件进行扩容、重新设置整个堆栈。

而通过云计算架构方案,能够实现业务的云上运行,实现Saas(软件即服务)、Paas(平台即服务)、laas(基础设施即服务)。
而传统的云计算采用虚拟机代替了原来的物理机,分布式计算成为了新的基础能力,但是这还没有完全发挥云的价值和能力,而且采用虚拟机的方式过于笨重,需要os的支持才能让应用进行运行,软件运维成本较高,需要针对环境进行进一步的开发和配置,这些问题都指向一个共同点——云的时代需要全新的技术架构来更好的利用云计算的优势,让业务更加敏捷,让成本更低的同时能够让系统能够弹性伸缩,更加灵活。这也是云原生架构需要解决的问题。

云原生技术发展路线:
2004-2007年Google 大规模使用容器技术Cgroups。
2008年Cgroups合并进入Linux内核。
2013年Docker项目发布。
2014年Kubernetes项目发布
2015年CNCF云原生基金会成立。Kubernetes成为第一个项目
2017年Kubernetes项目实施标准确立。
2018年云原生技术理念逐步萌芽形成。
而目前根据CNCF对于云原生的定义来说,云原生的代表技术就是容器、服务网格、微服务、不可变基础设施和声明式API。

云原生架构 - 另一种 API 范式 GraphQL


基于场景常见的微服务的API范式:REST、GraphQL、Webhooks和gRPC。


在诸多选择中,REST可能是最广为人知的,因为它在Web API中应用十分广泛。REST对于相当大范畴的API来说是一个非常好的标准。


但在一些需要API设计风格更细致入微的场景,还有其他的标准可供选择。比如我们今天要聊的GraphQL, GraphQL的一个巨大好处,是在默认情况下,它通常只发送最小请求,而REST通常发送完整请求(即默认同时发送它拥有的所有内容)。正因为如此,GraphQL在一些特定的用例中更加适用,在这些场景中,需要更明确的数据类型定义,并且倾向于使用较小的数据包来进行传输。


  1. GraphQL 范式的特点


GraphQL 范式优点

  • 所见即所得

  • 减少网络请求次数

  • 代码即文档

  • 参数类型强校验

缺点:缓存,复杂性

适用场景:面向移动端的服务请求

RESTful 范式的缺陷

  • 扩展性,单个RESTful接口返回数据越来越臃肿

  • 多次请求,占用网络资源,响应慢


二、初识 GraphQL


GraphQL 的实现能让客户端获取以结构化的方式,从服务端结构化定义的数据中只获取想要的部分的能力。


符合 GraphQL 规范的实现我称之为 GraphQL 引擎。


这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源和获取方式加以限制。


操作模型:GraphQL 规范中对数据的操作做了定义,有三种,query(查询)、mutation(变更)、subscription(订阅)。


云原生架构 - 另一种 API 范式 GraphQL


二、GraphQL 体验:Github V4 API

云原生架构 - 另一种 API 范式 GraphQL


Explorer - GitHub Docs

           云原生架构 - 另一种 API 范式 GraphQL            

                       

                       


以上是关于云原生架构选择原因的主要内容,如果未能解决你的问题,请参考以下文章

《回顾:CCF TF15 Cloud Native 云原生时代的架构研讨会》

Dubbo 跟 Spring Cloud 都不香了?阿里内部全面拥抱云原生架构!

这才是云原生(Cloud Native)!

cloud native

云原生架构到底是个啥?

什么是云原生架构?云原生和应用上云不是一码事!