说到分布式,这是一块比较重要的知识。本章会介绍什么是分布式,分布式的作用,单体和分布式的比较,CAP定理,集群、分布式与微服务的区别。主要以概念理解为主,为后面的学习打下知识基础。
什么是分布式
分步式就是利用物理架构形成多个自治的处理元素,不共享主内存,但是通过发送信息合作。
物理架构可以理解为多台服务器或者多台电脑,不共享主内存是分布式的特点。既然服务器与服务器是独立的,那么里面的内存也是独立的。
下面举一个老板开店的例子,这个老板一开始建立了一个店,独立经营,这就是一个单体,单体就是我们的项目只运行在一台机器上面,而且所有的代码都写在一个项目里面。对于这种架构而言,老板必须什么都要做。这对应到我们的程序中就意味着这一个服务器他什么都要承担,比如要提供http接口,要防止黑客攻击,还要核对数据库的内容等。如果老板非常勤劳,开了俩个店面,他和老板娘每个人负责一个店面,我们要注意这两个人做的事情都是差不多的,那意味着今天有一个用户找老板娘的店去买东西,其他用户想找老板去买也没有问题。他们并没有分工,依然是相互独立的,这就相当于计算机的集群。把一个程序完整的复制到另外一台服务器,然后这两台服务其同时对外服务。服务器对于请求的处理能力可以大大增强。这个店越开越厉害,老板和老板娘雇佣员工,分工合作,这就是分布式了。这和之前的集群不一样,集群的合作并不是很多的,但到了分布式,每个部分就有各部分的任务了,相互之间分工协作。
分布式的作用
技术的诞生是为了解决问题。分布式并不是是一开始就有的,是从单体逐渐逐渐地演变成集群,复制多份,最后才迭代出分布式的技术。
单体应用的问题:第一个问题就是速度很慢,不只是说启动的速度,包括编译,包括打包,包括部署等,都很慢。同时对于一个拿到项目的新人来讲,他熟悉项目的工作量也变得越来越大。
分布式的好处:开发、部署是速度更快。因为分布式而言各个功能都是独立的,只要负责好自己的这一块就可以了。其次是技术升级的空间大,束缚小。分布式的第三个好处就是可用性增强、成本低、资源利用率高。
分布式与单体结构的对比
CAP定理
在分布式系统中,节点比较多,他们间是要进行通讯的。
下面举个例子:
客户端给节点1和节点2去发起请求,节点1和节点二就是分布式,节点1和节点二之间并没有箭头,说明他们之间发生了一个网络中断的情况。有可能节点一部署在欧洲,节点二部署在了非洲。这样必然是有一些原因导致节点通信失败的。也就是这个节点分区容错有时是无法避免的。目前还没有一种方式保证网络百分之百准确可用,这是做不到的。
集群、分布式、微服务的区别