集中式
与分布式对应的,就是集中式。
集中式就是把项目都存放在一个服务器中,虽然部署比较简单,但是如果出现故障,整个服务都将不可用。而且也不利于扩容,这才有了后面分布式的发展。
分布式
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。所以分布式系统上的计算机没有空间上的限制,可以存放不同的机柜、不同的机房、甚至不同的城市中。
分布式具有以下的特点:
- 分布性:分布式系统的计算机在任意的空间上随意分布,而且可以随时变动分布的情况
- 并发性:分布式系统的多个节点,可能同一时间访问同一个共享资源,比如数据库、文件
- 无序性:我们在java中启动了两个线程,执行的顺序是不能保证的,同样的,分布式进程间的通信,顺序也是难以保证的。
由于分布式直接的通信是通过网络的,所以网络的延迟、故障、抖动,都会对分布式系统有影响。当然,某个节点的故障也是有影响的。
- 通信异常:由于电缆、路由器等硬件,导致的网络不可用,或者网络传输过程中不可避免的延迟,导致消息发送的丢失、延迟。
- 网络分区(脑裂):比如分布式系统由上海北京两个地方的节点组成,由于网络原因,两地的延迟不断加大,互相之间不能通信,而上海地区自己的N个节点可以互相通信,北京地区自己的M个节点可以互相通信,上海和北京自己内部有了自己的小集群,完成了之前分布式系统完成的功能。
- 三态:在单机系统中的调用,要么成功,要么失败。在分布式系统中,则多了一个状态,也就是超时。当A系统发消息给B系统时,可能消息就丢失了,也有可能,B系统收到消息后,回应消息给A系统,这个时候消息丢失了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。