内容简介:小编说:云原生是一个宽泛的术语,本文带你快速了解云原生与云原生架构。本文选自《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自动切换夜间主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Build Your Own Web Site the Right Way Using HTML & CSS
Ian Lloyd / SitePoint / 2006-05-02 / USD 29.95
Build Your Own Website The Right Way Using HTML & CSS teaches web development from scratch, without assuming any previous knowledge of HTML, CSS or web development techniques. This book introduces you......一起来看看 《Build Your Own Web Site the Right Way Using HTML & CSS》 这本书的介绍吧!