万字长文揭穿你,根本就不懂云原生!( 三 )


微服务架构通过将大的系统按照业务服务的粒度进行拆分 , 每个服务可独立开发、测试、验证和部署 , 这样分解后 , 带来的好处有如下几点:使大型的复杂应用程序可以持续交付和持续部署每个服务都相对较小并容易维护服务可以独立部署服务可以独立扩展微服务架构可以实现团队的自治更容易实验和采纳新的技术更好的容错性
3.服务网格
服务网格是用于处理服务间通信的专用基础设施层 , 负责在微服务间进行可靠地请求传递 。服务网格通常通过一组轻量级网络代理来实现 , 这些代理与应用程序代码一起部署 , 而不需要感知应用程序本身 。
随着规模和复杂性的增长 , 服务网格包含的实现的功能越来越多 , 它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求 , 例如A/B测试、金丝雀发布、限流、访问控制和端到端认证等 。其部署结构如下图所示:
万字长文揭穿你,根本就不懂云原生!
文章图片

文章图片
图3:服务网格部署图
服务网格有如下几个特点:应用程序间通讯的中间层轻量级网络代理应用程序无感知解耦应用程序的重试/超时、监控、追踪和服务发现
如果用一句话来解释什么是服务网格 , 可以将它比作是应用程序或者说微服务间的TCP/IP , 负责服务之间的网络访问、限流、熔断和监控 。对于编写应用程序来说一般无须关心TCP/IP这一层(比如通过HTTP协议的RESTful应用) , 同样使用服务网格也就无须关系服务之间的那些原来是通过应用程序或者其他框架实现的事情 , 比如SpringCloud、OSS , 现在只要交给服务网格就可以了 , 从而极大地方便了微服务应用的开发 。
4.不可变基础设施
一个工作负载(比如容器、虚拟机等)一旦部署以后就不会被修改 。当需要更新 , 修复或修改某些内容的时候 , 只需要将新的、经过验证的工作负载替换旧的即可 。
不可变基础设施的作用主要体现在系统的稳定性方面 。传统的应用程序一旦部署到用户特定的服务器上以后 , 服务器系统是会不断变化的 , 不是操作系统升级 , 就是安装了新的应用 , 可能引起冲突 , 导致应用程序需要跟着用户系统环境的改变而不断升级 , 这中间就会不断地出现新的问题 。而不可变基础设施就规避了所有的这些问题 , 因为云原生应用是部署在不可变的基础设施上的 , 因此就不存在变化的问题 。
5.声明式API
声明式API是一种比命令式API更高级的接口设计方式 , 简单来说 , 命令式API提供给用户怎么做的能力 , 而声明式API给用户提供了做什么的能力 。
声明式API是比命令式API更高级的一种接口 , 举个例子 , 假如我们有一个炒菜机 , 如果炒菜机提供的接口是放油、放调料、放食材、大火、小火等操作 , 那就是命令式API 。
如果炒菜机提供的接口是来盘宫保鸡丁、来盘鱼香肉丝之类的 , 那就是声明式API了 。声明式API比较典型的例子就是数据库提供的SQL接口 , 只需要告诉数据库你需要什么数据即可 , 至于怎么去获取这些数据 , 数据库自己会去按步骤操作 。
四、云原生的意义
传统的软件开发模式 , 在使用云计算平台时和使用物理机时没有什么大的区别 , 那么就没有将云平台的能力利用充分 , 在一定程度上导致了资源的浪费 。云原生就是用来解决这一类的问题 , 将云计算平台的优势发挥到极致 。
让企业应用能够利用云平台实现资源的按需分配和弹性伸缩 , 是云原生应用重点关注的地方 。它要求云原生应用具备可用性和伸缩性 , 以及自动化部署和管理能力 , 可随处运行 , 并且能够通过持续集成、持续交付提升研发、测试与发布的效率 。云原生应用并未完全颠覆传统的应用 , 采用云原生的设计模式可以优化和改进传统应用模式 , 使应用更加适合在云平台上运行 。