微服务设计[试读]
1.1 什么是微服务
多年以来,我们一直在寻找更好的方法来构建应用系统。我们一直在学习已有的技术,尝试新技术,也目睹过不少新兴技术公司使用不同的方式来构建IT 应用系统,从而提高了客户满意度和开发效率。 Eric Evans 的《领域驱动设计》一书帮助我们理解了用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模。持续交付理论告诉我们如何更有效及更高效地发布软件产品,并指出保持每次提交均可发布的重要性。基于对Web 的理解,我们寻找到了机器与机器交互的更好方式。Alistair Cockburn 的六边形架构理论 (http://alistair.cockburn.us/Hexagonal+archit... 查看全部[ 1.1 什么是微服务 ]
1.2 主要好处
微服务有很多不同的好处,其中很多好处也适用于任何一个分布式系统。但相对于分布式系统或者面向服务的架构而言,微服务要更胜一筹,它会把这些好处推向极致。 1.2.1 技术异构性 在一个由多个服务相互协作的系统中,可以在不同的服务中使用最适合该服务的技术。尝试使用一种适合所有场景的标准化技术,会使得所有的场景都无法得到很好的支持。 如果系统中的一部分需要做性能提升,可以使用性能更好的技术栈重新构建该部分。系统中的不同部分也可使用不同的数据存储技术,比如对于社交网络来说,图数据库能够更好地处理用户之间的交互操作,但是对于用户发布的帖子而言,文档数据库可能是一个更好的选择。图1-1 展... 查看全部[ 1.2 主要好处 ]
1.3 面向服务的架构
SOA(Service-Oriented Architecture,面向服务的架构)是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信。 人们逐渐认识到SOA 可以用来应对臃肿的单块应用程序,从而提高软件的可重用性,比如多个终端用户应用程序可以共享同一个服务。它的目标是在不影响其他任何人的情况下透明地替换一个服务,只要替换之后的服务的外部接口没有太大的变化即可。这种性质能够大大简化软件维护甚至是软件重写的过程。 SOA 本身是一个很好的想法,但尽管做了很多尝试... 查看全部[ 1.3 面向服务的架构 ]
1.4 其他分解技术
当你开始使用微服务时会发现,很多基于微服务的架构主要有两个优势:首先它具有较小的粒度,其次它能够在解决问题的方法上给予你更多的选择。那么其他的分解技术是否也有相应的好处呢? 1.4.1 共享库 基本上所有的语言都支持将整个代码库分解成为多个库,这是一种非常标准的分解技术。这些库可以由第三方或者自己的组织提供。 不同的团队和服务可以通过库的形式共享功能。比如说,我可能会创建一系列有用的集合操作类工具,或者一个可以重用的统计库。 团队可以围绕库来进行组织,而库本身可以被重用。但是这种方式存在一些缺点。 首先,你无法选择异构的技术。一般来讲,这些库只能在同一种语言中,或... 查看全部[ 1.4 其他分解技术 ]
1.5 没有银弹
在本章结束之前,我想强调一点:微服务不是免费的午餐,更不是银弹,如果你想要得到一条通用准则,那么微服务是一个错误的选择。你需要面对所有分布式系统需要面对的复杂性。尽管后面用很多的篇幅来讲解如何管理分布式系统,但它仍然是一个很难的问题。如果你过去的经验更多的是关于单块系统,那么为了得到上述那些微服务的好处,你需要在部署、测试和监控等方面做很多的工作。你还需要考虑如何扩展系统,并且保证它们的弹性。如果你发现,还需要处理类似分布式事务或者与CAP 相关的问题,也不要感到惊讶! 每个公司、组织及系统都不一样。微服务是否适合你,或者说你能够在多大程度上采用微服务,取决于很多因素。在本书的剩余章节中... 查看全部[ 1.5 没有银弹 ]
1.6 小结
希望到目前为止你已经了解了什么是微服务、微服务与其他组合技术有何不同,以及它能够带来的主要好处又是什么。在后面的章节中,我会详细讨论如何得到这些好处及如何避免一些常见的陷阱。 需要介绍的内容很多,但要从一个合适的点开始。架构师承担了驱动系统演化的职责,而引入微服务之后的一个主要挑战就是,架构师职责的相应变化。下一章会讲到有哪些方法可以保证我们从这个新架构中获益。... 查看全部[ 1.6 小结 ]
书名: 微服务设计
作者: [英] Sam Newman
出版社: 人民邮电出版社
译者: 崔力强 | 张 骏
出版年: 2016-5
页数: 228
定价: 69.00元
装帧: 平装
ISBN: 9787115420268