北京惟望科技发展有限公司010-64283188 登录 | 注册

当前位置:首页 > 经验交流

什么是微服务架构?

发布日期:2020-10-26 来源:https://www.zhihu.com/question/65502802/answer/1115827778 浏览次数:1317

【导读】:微服务架构是将复杂臃肿的单体应用进行细粒度的微服务化拆分,每个拆分出来的微服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率,并被各大互联网公司所普遍采用。

近几年来,“微服务架构”这个术语频繁出现在技术人的眼里,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力、自动化部署、端点智能以及语言和数据的分散控制等方面存在着某些共同特征。本文就以浅显易懂的语言解释下什么是微服务架构。

什么是微服务?

微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们对微服务的定义总结起来就是四点:

  • 服务拆分粒度更细。小到一个子模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务。
  • 服务独立部署。每个微服务都严格遵循独立打包部署的准则,互不影响。
  • 服务独立维护。每个微服务都可以交由一个小团队甚至个人来开发、测试、发布和运维,并对整个生命周期负责。
  • 服务治理能力要求高。因为拆分为微服务之后,服务的数量变多,因此需要有统一的服务治理平台,来对各个服务进行管理。

什么是微服务架构?

微服务架构是将复杂臃肿的单体应用进行细粒度的微服务化拆分,每个拆分出来的微服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率,并被各大互联网公司所普遍采用。

从概念上理解,分布式服务架构强调的是服务化以及服务的分散化,微服务则更强调服务的专业化和精细分工;从实践的角度来看,微服务架构通常是分布式服务架构,反之则未必成立。所以,选择微服务通常意味着需要解决分布式架构的各种难题。

微服务架构需要具备什么能力?

如果想要在生产环境中顺利使用微服务架构,那么在架构设计上需要具备以下几个能力:

服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。

注册中心:解决服务发布和订阅的问题,就是说让想调用你服务的人知道你提供了什么服务。

服务框架:告诉调用服务通信采用什么协议,数据传输采用什么方式,数据压缩采用什么格式。

服务监控:对服务消费者和提供者进行监控,以了解服务是否正常。监控包括三个流程:指标搜集、数据处理、数据展示。

服务追踪:记录服务调用经过的每一层链路,以便进行问题追踪和故障定位。

服务治理:通过一系列的手段来保证在各种意外情况下,服务调用仍然能够正常进行。

微服务架构有哪些优缺点?

微服务架构能够如火如荼的在现代软件开发中大量应用,主要是因为其具备以下优势:

  • 因为模块化服务,所以系统模块重用度更高。
  • 因为软件服务模块被拆分,开发和发布速度可以并行从而变得更快。
  • 因为各个模块分别开发,能使用不同的语言开发。

不过,这个世界上也不存在完美的技术方案,任何技术方案都有得有失。也就是说,微服务架构在解决上述问题的同时,也会带来其他的新问题:

  • 微服务架构设计变得复杂(尤其是其中的分布式事务)。
  • 运维复杂度会因为微服务变多而变得很复杂。
  • 微服务架构的复杂,导致学习曲线变大。

相信通过我的介绍你已经对微服务架构有了基本的了解,接下来就是要认真学习微服务架构中的各个组件,因为这些组件共同组成了微服务架构,在生产环境下缺一不可,所以在引入微服务架构之前,必须掌握这些基本组件的原理并具备相应的开发能力。


分享到:
相关阅读