云原生入门-名词术语-
Pivotal公司的Matt Stine首次提出云原生(CloudNative)的概念;
云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;
“12要素”英文全称是The Twelve-Factor App,最初由Heroku的工程师首次提出并开源,并由众多经验丰富的开发者共同完善。
微服务(MicroServices) 随着业务越来越复杂,业务架构也经历了不断变化和演进,每一次演进都是为了解决上一代系统架构的痛点
第一代单体架构把所有业务依赖的组件、库全部打包到一个执行程序,业务相互调用,大大增加了系统复杂度,导致系统维护成本高,改动影响大,发布风险高;并且系统完全封闭,内部组件不能共享给其他组件调用,导致产品能力不能共享,大大降低开发效率。
第二代面向服务架构SOA(Service Oriented Architecture)是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中,各个服务之间通过网络调用。
第三代微服务架构是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
SOA架构和微服务架构的区别:
SOA |
微服务 |
---|---|
应用程序服务的可重用性的最大化 |
专注于解耦 |
系统性的改变需要修改整体 |
系统性的改变是创建一个新的服务 |
DevOps和持续交付正在变得流行,但还不是主流 |
强烈关注DevOps和持续交付 |
专注于业务功能重用 |
更重视“上下文边界”的概念 |
通信使用企业服务总线ESB |
对于通信而言,使用较少精细和简单的消息系统 |
支持多种消息协议 |
使用轻量级协议,例如HTTP,REST或Thrift API |
对部署到它的所有服务使用通用平台 |
应用程序服务器不是真的被使用,通常使用云平台 |
容器(如Docker)的使用不太受欢迎 |
容器在微服务方面效果很好 |
SOA服务共享数据存储 |
每个微服务可以有一个独立的数据存储 |
共同的治理和标准 |
轻松的治理,更加关注团队协作和选择自由 |
微服务架构确实有很多吸引人的地方,然而它的引入也是有成本的,它并不是银弹,使用它会引入更多技术挑战,比如性能延迟、分布式事务、集成测试、故障诊断等方面,企业需要根据业务的不同的阶段进行合理的引入,不能完全为了微服务而“微服务”。
2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;
而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。
- 点赞
- 收藏
- 关注作者
评论(0)