分布式系统
将一个项目看做系统,拆分成多个组件功能模块。部署在可以互相通信的网络中,组件间通过网络通信相互协调,将整个项目的复杂度平摊到了各个分别的组件上。简单讲就是利用多台计算机,处理更多的数据。
微服务
简单地说,微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。
产生背景
随着互联网的发展,单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。
为解决问题产生了分布式系统对整体项目进行拆分,随着拆分粒度越来越小即产生了微服务。不管是分布式系统还是微服务都是将单体应用拆分,将复杂问题拆分成小问题。这样的好处是对于每一个简单问题,开发、维护、部署的难度就降低了很多,可以实现自治,可自主选择最合适的技术框架,提高了项目开发的灵活性。
总结
微服务属于分布式系统。微服务相对于分布式系统服务粒更加细致,服务之间耦合度更低,每个模块都独立,追求的是更高的可读性、可用性和简易性。分布式则重在资源共享与加快计算机计算速度。