Go - Micro微服务框架实践 - 概念(二)
微服务
我们来谈谈软件开发的未来。
改变正在进行中。我们正越来越多地走向每个企业核心技术驱动的世界。在这个时代保持竞争优势变得越来越困难。当组织试图用低效的平台,流程和结构进行扩展时,组织的执行能力可能会停滞不前。十年前的老技术公司经历了这些扩展的痛苦,大多数人都使用相同的方法来克服这些挑战。
现在是时候将世界上最成功的公司的竞争优势带给其他所有人。因此,让我们谈谈微服务,一种创造竞争优势的方法。
什么是微服务?
微服务是一种软件架构模式,用于将大型单片应用程序分解为较小的可管理独立服务,这些服务通过语言不可知协议进行通信,并且每个服务都专注于做好一件事。
行业专家对微服务的定义。
松散耦合的面向服务的架构与有限的上下文
Adrian Cockcroft
将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的流程中运行,并与轻量级机制Martin Fowler进行通信
微服务的概念并不新鲜,这是对服务导向架构的重新构想,但其方法更加整体地与unix进程和管道保持一致。
微服务架构的理念:
- 服务很小 - 细粒度作为单一的商业目的类似于unix哲学“做一件事,做得好”
- 组织文化应该包含部署和测试的自动化。这减轻了管理和运营的负担
- 文化和设计原则应该包含失败和错误,类似于反脆弱系统。
为何选择微服务?
随着组织扩展技术和人数,管理单一代码库变得更加困难。我们都习惯了Twitter失败的鲸鱼一段时间,因为他们试图通过单片系统扩展他们的用户群和产品功能集。微服务使Twitter能够将其应用程序分解为可由许多不同团队单独管理的较小服务。每个团队负责由许多微服务组成的业务功能,这些微服务可以独立于其他团队部署。
![](https://img.haomeiwen.com/i7339866/b2da059edcf6aa5d.png)
我们通过第一手经验看到,微服务系统可以实现更快的开发周期,更高的生产力和卓越的可扩展系统。
我们来谈谈一些好处:
-
更易于扩展开发 - 团队围绕不同的业务需求进行组织并管理自己的服务。
-
更容易理解 - 微服务要小得多,通常是1000 LOC或更低。
-
更容易部署新版本的服务 - 可以独立部署,扩展和管理服务。
-
改进的容错和隔离 - 关注点分离可最大限度地减少一个服务中的问题对另一个服务的影响。
-
提高执行速度 - 团队通过独立开发,部署和管理微服务,更快地满足业务需求。
-
可重用的服务和快速原型 - 微服务中根深蒂固的unix哲学允许您重用现有服务并在更快的速度上构建全新的功能。
什么是Micro?
Micro是一个微服务生态系统,专注于提供产品,服务和解决方案,以支持现代软件驱动型企业的创新。我们计划成为任何相关微服务的事实资源,并希望公司能够将这项技术用于自己的业务。从早期原型制作一直到大规模生产部署。
我们已经看到了这个行业的根本转变。摩尔定律生效,我们每天都可以获得越来越多的计算能力。然而,我们无法完全意识到这种新的能力。现有工具和开发实践在这个新时代并未扩展。没有为开发人员提供从单一代码库转向更高效设计模式的工具。大多数公司不可避免地通过单片设计达到收益递减的程度,并且必须进行大规模的研发再造工作。Netfix,Twitter,Gilt和Hailo都是这方面的主要例子。最终建立了自己的微服务平台。
我们的愿景是提供基本构建块,使任何人都可以更轻松地采用微服务。