什么是微服务

微服务就是一些协同工作的小而自治的服务。
关键词: 小而自治

“小”

“小”这个概念,一方面体现在微服务的内聚性上。

内聚性也可以称之为单一职责原则:“把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来。”
也就是说,微服务应该专注于做好一件事情。
由业务边界来确定服务的边界

另一方面体现在代码库的大小,这里有几个参考的标准或者说原则

代码库小到团队结构相匹配
代码库小到易于迅速重写
辩证的看待。服务越小,微服务架构的优点和缺点也就越明显

自治

“自治”这个概念,强调的是,一个微服务就是一个独立的实体。体现在服务之间的松耦合上。

黄金法则:你是否能够修改一个服务并对其进行部署,而不影响其他任何服务?

关键点:要学会正确的建模服务,正确的设计服务API,才能做到上述两点。

面向服务的架构

SOA(Service-Oriented Architecture,面向服务的架构)是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信。

就像认为 XP 或者 Scrum 是敏捷软件开发的一种特定方法一样,微服务架构是 SOA 的一种特定方法。

实施SOA会遇到的问题:

通信协议(SOAP or REST)
第三方中间件选型
服务粒度划分
......

本文就给大家分享一份带你快速入门微服务的学习笔记。希望能够由浅入深、由表及里系统为你讲解微服务的各个关键环节,帮你上手微服务。

总目录

本文档总共包括以下内容:

  • 入门微服务:将介绍微服务体系的基本原理和组成,帮你解答什么是微服务、什么时候适合微服务改造、微服务架构到底是什么样的这些问题。* 落地微服务:将结合实际业务中的经验,给你讲述微服务架构改造过程中可能遇到的问题,提供对应的解决方案,帮助中小型团队将微服务落地。* 进阶微服务:将分析微服务、容器化、DevOps这三者之间的关系,以及如何将这些技术应用在实际业务中。这部分内容适合具有一定经验的开发者。* 展望微服务:将探讨下一代微服务体系的发展方向,分享作者的观察和洞见。

一、入门

二、落地

三、进阶

四、展望

写在最后

微服务确实有许多优点:“反脆弱性(anti-fragility)”、容错、独立部署与扩展、架构抽象、技术隔离。但并不是说采用了微服务就自然地具备了这些特性。

比如,要具备反脆弱性,需要充分考虑分布式系统的不确定性,清楚异步、网络划分、节点故障、平衡可用性与数据一致性等问题。

同样地,要具备可维护性和可扩展性,首先要有恰当的基础设施和组织结构。

理论上讲,微服务可以提高开发速度,但在创建组织依赖时,“微服务佣金(MicroservicePremium)”可能会降低开发速度。

所以,采用微服务架构需要具备一些先决条件,包括恰当的持续发布管道、能胜任的DevOps 和Ops 团队、审慎的服务边界等等。此外,周密的测试和集成模式也很重要。

微服务不是银弹,你需要在部署、测试和监控等方面做很多的工作。你还需要考虑如何扩展系统、并且保证他们的弹性,甚至还需要处理类似分布式事务、CAP相关的问题。

我觉得,这也是为什么服务化到云原生是大势所趋,因为只有结合“容器 +编排调度”的云平台,微服务才能将自己的优点发挥到最大。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐