分布式系统
什么是分布式系统
分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。
简单来说,分布式系统相对的是集中式系统,集中式系统就是整个项目是一个独立的应用,所有的东西都在一个应用里面。它就类似于我们在学校里开发的web项目,我们把web服务器、数据库等都安装在一台电脑上,好处是易于理解、方便维护。而坏处则是这台机子一旦崩了,那么整个系统也就崩溃了。分布式系统的出现,是为了减少这一情况的出现。
原本我们是通过Spring框架进入JVM进行内存调用,如果我们将原本完整的项目分成小系统部署在不同的机器上,然后基于分布式服务框架(比如dubbo)搞一个rpc调用,接口间通过网络通信来进行请求和响应,那就构建了一个简单的分布式系统。分布式系统很重要的特点就是服务间要跨网络进行调用。
分布式系统的优势
使用分布式系统的好处,除了提高系统的容错性之外,还可以提高系统的可扩展性,集中式系统对主机性能的要求是非常高的,而分布式系统可以通过不断扩张主机的数量以实现横向水平性能的扩展,就像Google的服务器主机,也是淘汰的二线记着拼凑的。
分布式和集群的区别
集群,是把你的单机项目,通过水平横向扩展,来提高服务能力的方式。
分布式是将一个项目拆分到不同的机器上,以应对高并发等情况。
对于分布式和集群,我们可以看做分工合作和一堆人做一件事,例如,开发一个软件,有产品前端后台DBA等,每个人都可以看成是一个服务器,这叫分布式;而如果是有多个后台的话,那么这些后台虽说也是多个服务器,但他们都是干的同样的活,因此算是集群。
简单说,分布式是以缩短单个任务的执行时间(多个服务器各司其职)来提升效率的,而集群是通过提高单位时间执行的任务数(多个服务器同时干一样的活)来提高效率的。
分布式和微服务
微服务是架构设计方式,分布式是系统部署方式,二者概念不同。
微服务是把项目分成很多很小的服务,一个服务只对应一个单一的功能,这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务可以由独立的小团队开发、测试、部署、上线,负责它的整个生命周期。
分布式是把服务分散部署在不同的机器上,一个服务可能负责几个功能,面向SOA架构,服务之间也是通过RPC或者WebService来交互。但分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同的服务器上,但逻辑功能上还是单体应用。