发布日期:2020-10-26 来源:https://www.zhihu.com/question/65502802/answer/1115827778 浏览次数:1317
近几年来,“微服务架构”这个术语频繁出现在技术人的眼里,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力、自动化部署、端点智能以及语言和数据的分散控制等方面存在着某些共同特征。本文就以浅显易懂的语言解释下什么是微服务架构。
微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们对微服务的定义总结起来就是四点:
微服务架构是将复杂臃肿的单体应用进行细粒度的微服务化拆分,每个拆分出来的微服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率,并被各大互联网公司所普遍采用。
从概念上理解,分布式服务架构强调的是服务化以及服务的分散化,微服务则更强调服务的专业化和精细分工;从实践的角度来看,微服务架构通常是分布式服务架构,反之则未必成立。所以,选择微服务通常意味着需要解决分布式架构的各种难题。
如果想要在生产环境中顺利使用微服务架构,那么在架构设计上需要具备以下几个能力:
服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。
注册中心:解决服务发布和订阅的问题,就是说让想调用你服务的人知道你提供了什么服务。
服务框架:告诉调用服务通信采用什么协议,数据传输采用什么方式,数据压缩采用什么格式。
服务监控:对服务消费者和提供者进行监控,以了解服务是否正常。监控包括三个流程:指标搜集、数据处理、数据展示。
服务追踪:记录服务调用经过的每一层链路,以便进行问题追踪和故障定位。
服务治理:通过一系列的手段来保证在各种意外情况下,服务调用仍然能够正常进行。
微服务架构能够如火如荼的在现代软件开发中大量应用,主要是因为其具备以下优势:
不过,这个世界上也不存在完美的技术方案,任何技术方案都有得有失。也就是说,微服务架构在解决上述问题的同时,也会带来其他的新问题:
相信通过我的介绍你已经对微服务架构有了基本的了解,接下来就是要认真学习微服务架构中的各个组件,因为这些组件共同组成了微服务架构,在生产环境下缺一不可,所以在引入微服务架构之前,必须掌握这些基本组件的原理并具备相应的开发能力。