:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

一目了然认识微服务

  • Apr 08 / 2018
  • 0
Enterprise

一目了然认识微服务

作者:Mac Slocum

原文:https://www.oreilly.com/ideas/a-quick-and-simple-definition-of-microservices

译者:TalkingData架构师 曾晓春

本译文禁止商用,转载请注明来源!

对微服务感兴趣?

那这篇文章正适合您。它涵盖了微服务的一些基本知识:微服务是什么,微服务如何工作,以及在实现微服务之前需要牢记的事情。

 微服务的特点

Sam Newman在《构建微服务》一书中提供了微服务的简洁定义:微服务是一起工作的小型自治服务。

《微服务架构》一书的作者Mike Amundsen、Irakli Nadareishvili、Ronnie Mitra和Matt McLarty通过分析微服务应用程序的通用特性,为微服务的定义添加了细节:

  • 体积小
  • 消息驱动
  • 受上下文限制
  • 自主开发
  • 可独立部署
  • 分散
  • 通过自动化流程构建和发布
 微服务应该很小 

微服务应该很小。但是多小?这里有一些指导原则。

帮助我们回答“多小”的一个重要因素,是服务如何与团队结构保持一致。如果代码库太大而无法由一个小团队管理,那么明智的做法应该是想办法分解代码。

当谈到小到足够小时,从这些条件来思考:服务越小,越能够最大化微服务架构的优点和缺点。随着服务变得越来越小,相互依存关系的好处就会增加。但是,由于拥有越来越多的移动部件而产生的一些复杂性也同样增加。随着在处理这种复杂性方面做得更好,开发者可以争取更小的服务。(来自《构建微服务》)

 微服务是单系统的替代品 

大型和集中式系统可能会带来很多挑战。微服务架构是一种可与现代开发实践保持一致的替代办法。

随着我们编写代码添加新功能,代码库会不断增加。随着时间的推移,由于代码库过于庞大,可能很难定位到需要进行更改的地方。尽管力求清晰的、模块化的代码库,但这些进程间的边界往往会崩溃。与类似功能相关的代码开始遍布全局,让修复bug或实现变得更加困难。

微服务将我们的服务边界集中在业务边界上,使得代码在某个特定功能块的生存位置变得明显。通过将这项服务集中在一个明确的边界上,我们避免了它的增长过大的诱惑,以及所有可能带来的相关困难。(来自《构建微服务》)

 微服务意味着自治

独立性是微服务的一个重要方面,因此在考虑微服务体系结构时请记住以下几点。

微服务需要能够彼此独立地进行更改,并且可以自行部署而不需要消费者进行更改。我们需要考虑我们的服务应该暴露什么,以及他们应该允许隐藏什么。

黄金法则:无需更改任何其他服务,即可对服务进行更改并自行部署吗?如果答案是“否”,那么微服务的许多优点将很难实现。(来自《构建微服务》)

 服务需要有取有舍

确保你在进入微服务时保持警觉。这里有一些需要你做出取舍的地方。

在微服务架构中,服务往往变得更简单,但架构往往变得更加复杂。这种复杂性通常通过工具、自动化和流程进行管理。

最终,你必须接受这样一个现实:微服务系统的控制和管理比其他架构类型更加昂贵。对于许多组织来说,因为对增加系统可变性的需要,使得这样的成本支出是合理的。但是,如果您认为回报没有充分超过收益,那么这在您的组织中可能不是构建软件的最佳方式。(来自《微服务架构》)

 了解有关微服务的更多信息

准备进入微服务的下一步?看看这些资源。

《构建微服务》(https://www.safaribooksonline.com/library/view/building-microservices/9781491950340):全面了解系统架构师和管理员在构建、管理和发展微服务架构时必须考虑的主题。

《微服务架构》(https://www.safaribooksonline.com/library/view/microservice-architecture/9781491956328):了解如何把微服务架构风格建筑系统的优势,并从别人的经验中学习采取最成功执行这种方法。

《生产就绪的微服务》(https://www.safaribooksonline.com/library/view/production-ready-microservices/9781491965962):了解如何设计稳定、可靠、可扩展、容错、高性能、可监控、可记录和准备应对任何灾难的微服务。

事件驱动的微服务(https://www.safaribooksonline.com/library/view/event-driven-microservices/9781491944165) – 软件开发人员和架构师转而使用微服务来提高开发工作的敏捷性和速度。但这是否正确?本视频提供了微服务的优点和缺点的平衡视图。

如何快速定位微服务的陷阱(https://www.safaribooksonline.com/case-studies/microservices/how-fastly-navigates-microserv/9781491991336-video307653) – 本案例研究涵盖了构建、测试和部署功能微服务体系结构的经验教训。

Leave a comment

随时欢迎您 联系我们