内容简介:小编说:云原生是一个宽泛的术语,本文带你快速了解云原生与云原生架构。本文选自《Python云原生》。云原生是一种团队、文化和技术组织形式,利用自动化工具和架构来管理软件复杂度和加速软件交付。云原生概念已经超出了技术的范畴。我们需要从成功的公司、团队和个人身上了解行业的发展方向。
小编说:云原生是一个宽泛的术语,本文带你快速了解云原生与云原生架构。本文选自《Python云原生》。
云原生是一种团队、文化和技术组织形式,利用自动化 工具 和架构来管理软件复杂度和加速软件交付。
云原生概念已经超出了技术的范畴。我们需要从成功的公司、团队和个人身上了解行业的发展方向。
目前,像Facebook 和Netflix 这样的大公司都已经在云原生技术上投入了大量的资源,而一些小的公司也意识到了该技术的价值。根据云原生技术实践的反馈,我们总结了如下一些优点。
√ 结果导向和团队合作:云原生的方法将一个大问题分解成众多的小问题,从而使每个团队都能专注于各自的部分。
√ 减少重复工作:自动化减少了困难、繁杂和重复的手动工作量,并减少了停机时间。这将使系统更有效率。
√ 可靠而高效的应用程序基础设施:自动化可以对不同环境(无论是开发、阶段发布还是生产)中的部署做更多控制,还可以处理意外事故。自动化构建不仅有助于正常部署,而且在灾难恢复的时候,也能使重新部署变得更加容易。
√ 应用程序洞察:为云原生应用程序构建的工具可为应用程序提供更多洞察,从而使调试、故障排查和审计变得容易。
√ 高效可靠的安全性:每个应用程序都会关注安全性,确保可靠的身份验证。云原生为开发人员提供了多种确保应用程序安全性的方式。
√ 经济高效的系统:使用云管理和部署应用程序可以有效地利用资源,包括应用程序发布,通过减少资源浪费使系统花费更合理。
云原生为何物?为何重要?
云原生是一个宽泛的术语,它可以充分利用不同的技术,如基础架构自动化或中间件开发、支持服务等,这些功能都属于应用交付周期中的一部分。云原生方法包括频繁的版本发布(无Bug、稳定),以及根据业务需求扩展应用程序。
使用云原生方法,可以系统地实现应用程序构建目标。
云原生方法远优于传统的面向虚拟化的业务流程,传统方法需要投入大量的精力来构建开发环境,以及软件交付过程中的其他不同环境。理想的云原生架构应具有自动化和组合功能,这些自动化技术还应实现跨平台管理和部署应用程序。
云原生架构还应该具有其他几个特性,如稳定的日志记录、应用程序和基础架构监控,以确保应用程序正常运行。
云原生方法能够帮助开发人员使用例如 Docker 等工具,在不同的平台上轻易地创建和销毁应用程序。
云原生运行时环境
当软件从一个计算环境迁移到另一个计算环境时,该如何使其可靠运行?最佳解决方案就是使用容器。这可能是从开发者自己的机器到预发布环境再到生产环境,也可能是从物理机到私有云或公共云中的虚拟机。Kubernetes 已经成为容器服务的代名词,越来越流行。
随着云原生框架的兴起和其周边应用程序的增加,容器的编排越来越受人关注。在容器运行时需要注意以下几点。
管理容器状态和高可用性
一定要保持容器的状态(创建和销毁),特别是在生产中,因为从业务的角度看它们非常重要。而且还应该能够根据业务需求进行扩展。
成本体现和分析
容器可以根据业务预算控制资源管理,并可在很大程度上降低成本。
环境隔离
在容器内运行的每个进程都被隔离在该容器内。
跨集群的负载均衡
应用流量由容器集群处理,在容器内均匀重定向,这将增加应用程序最大响应数量并维持高可用性。
调试和灾难恢复
由于我们要在生产系统中使用,所以需要确保有正确的工具可以监控应用程序的运行状况,采取必要措施避免停机,并提供高可用性。
云原生架构
云原生架构类似于我们为遗留系统创建的应用程序架构,但在云原生应用程序架构中,我们应该考虑一些特性,例如十二要素应用程序(应用程序开发模式的集合)、微服务(将单体业务系统分解为独立可部署服务)、自服务敏捷基础设施(自服务平台)、基于API 的协作(通过API 进行服务之间的交互)和抗脆弱性(自我实现和加强的应用程序)。
首先,我们来探讨一下什么是微服务。
微服务是一个更宽泛的术语,指将大型应用程序分解成更小的模块,分别开发直到发布。这种方法不仅有助于有效地管理每个模块,而且还可以帮助我们发现服务底层本身的问题。以下是微服务的一些关键部分。
用户友好的界面:
微服务之间可以实现明确的分离。微服务的版本控制可以更好地对API 进行控制,为消费者和生产者提供更大的自由度。
跨平台部署和API 管理:
由于每个微服务都是一个单独的实体,因此可以更新单个微服务而不用更改其他服务,同时也更容易将服务回滚到之前的更改。这意味着用来部署微服务的工件应该兼容不同的API 和数据模式。这些API 必须在不同的平台上测试,并且测试结果应该在不同的团队,即运维、开发人员之间共享,大家共同维护一个集中的控制系统。
应用灵活性:
开发的微服务应该能够处理所有请求且必须做出响应,而不管请求的种类如何,包括可能的错误输入或无效请求。微服务也应该能够处理意外的负载请求并进行适当的响应。所以应当对微服务进行独立测试和集成测试。
微服务的分布:
最好将服务分为小块服务,以便单独跟踪和开发,最终组合起来形成一个微服务。这种技术使得微服务开发更稳定、更有效率。
下图显示了一个云原生应用程序的高级架构。
在理想情况下,应用程序体系结构应该从两三个服务开始,然后通过不断更新版本进行扩展。了解应用程序架构非常重要,因为应用程序需要与系统的不同组件集成,并且在大型组织中会有团队来专门管理这些组件。微服务中的版本控制至关重要,因为软件开发的各个阶段都会使用不同的方法。
微服务是一个新概念吗
微服务的概念由来已久了。微服务是一种用来划分大型系统中不同组件边界的架构模式。所有的微服务都以相似的方式工作,然后将不同服务链接起来,根据请求的类型处理特定事务的数据流。
下图描绘了微服务的体系结构。
为什么说 Python 是云原生微服务开发的最佳选择
为什么我们选择Python 并将其推荐给其他人?下面列举了几点原因。
可读性
Python 是一种表达能力很强且易学习的编程语言。即便是业余爱好者也可以轻松掌握Python。与其他编程语言(例如 Java 更关注圆括号、大括号、逗号和冒号)相比,使用Python你可以将更多的精力投入到编程上,减少调试语法的时间。
库和社区
Python 有大量可以在不同平台(例如UNIX、Windows 和OS X)上运行的库。这些库可以根据你的应用程序需求轻松扩展。同时还有一个强大的社区致力于构建这些库,这使得Python 成为最适合用于业务的语言。
就Python 社区而言,Python 用户组(PUG)是一个基于社区开发模式的社区,这可以促进Python 在全球范畴内的普及。社区中的小组成员相互交流,有助于我们构建基于Python框架的大型系统。
交互模式
Python 交互模式可以帮助你在调试完代码后,立即将其添加到主程序中。
可扩展
Python 提供了更好的结构和概念,如模块,这比起任何其他脚本语言(如 shell 脚本),可以更系统地维护大型程序。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 火狐浏览器 Windows 10 版暗色主题来了,跟随原生模式
- 数仓主题域、主题、业务域之间有什么的关系
- 一个基于vuepress默认主题开发的主题-vuepress-theme-reform
- Flutter主题风格
- 把主题升级了一下
- Android自动切换夜间主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。