分布式系统
在《分布式系统原理与范型》一书中有如下定义:分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据
首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的 CPU )高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题
微服务架构
任何技术的演进都是有迹可循的,任何新技术的出现都是为了解决原有技术无法解决的需求,所以,微服务的出现就是因为原来单体应用架构已经无法满足当前互联网产品的技术需求。微服务的设计就是为了不因为某个模块的升级和 BUG 影响现有的系统业务。微服务架构,核心就是为了解决应用微服务化之后的服务治理问题
微服务的特征
- 一个微服务应用都是单一职责的,只做一件事,一个微服务解决一个业务问题(注意是一个业务问题而不是一个接口)
- 这个微服务应用可以单独部署运行,服务之间可以通过
RPC 来相互交互。每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期
满足以上两点就可以认为是典型的微服务。当然应用微服务化之后,会出现一系列的问题,如服务的治理问题,服务的配置管理的问题,如何保障系统的高可用,以及如何解决分布式的事物问题等等;为了解决这些生产实践问题,便产生了 SpringCloud 和 Dubbo 这样的微服务框架
微服务系统和分布式系统的区别
- 微服务是架构设计,分布式是系统部署方式
- 微服务相比分布式服务来说,它的微服务应用粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难
|