任何技术的演进都是有迹可循的,任何新技术的出现都是为了解决原有技术无法解决的需求,所以,微服务的出现就是因为原来单体应用架构已经无法满足当前互联网产品的技术需求。微服务的设计就是为了不再因为某个模块的升级和 BUG 影响现有的系统业务。微服务架构的核心就是为了解决应用微服务化之后的服务治理问题。
微服务的特征:
- 每一个微服务应用都是单一职责的,只做一件事,一个微服务解决一个业务问题(注意是一个业务问题而不是一个接口)
- 每一个微服务应用都可以单独部署运行,服务之间可以通过
RPC
来相互交互。每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。
满足以上两点就可以认为是典型的微服务。当然应用微服务化之后,会出现一系列的问题,如服务的治理问题,服务的配置管理的问题,如何保障系统的高可用,以及如何解决分布式的事物问题等等;为了解决这些生产实践问题,便产生了 SpringCloud
和 Dubbo
这样的微服务框架。
微服务系统和分布式系统的区别
- 微服务是架构设计,分布式是系统部署方式。
- 微服务相比分布式服务来说,它的微服务应用粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难。