一、Java分布式(第一章)
1、架构发展历程: |
了解分布式之前先了解架构的发展过程,在知乎上看到一张图相信各位一看就能看懂。
单机架构:****将一个项目所有的业务部署在一个服务器上,整个项目的所有服务都由这台服务器提供。单机架构的劣势已经体现出来了,当访问量越来越大,单机架构肯定撑不住。例如双十一的活动,单机架构是撑不过庞大的访问量的。所以出现了集群。
集群:****将一个项目部署在多个服务器上(不同的服务器运行同样的代码,干同一件事)。在单机架构遇到瓶颈的时候,在单机架构的基础上再添加多台服务器,干同样的事情,集群中的每个服务器都是集群中的一个“节点”,这些“节点”构成了集群。
那么问题来了,用户该去访问那个“节点”呢?软件制作者肯定希望用户访问负载压力小的服务器。这时候引入了一个“调度者”,他负责接受用户发送的请求,并去指引用户访问哪台服务器。
举个简单的例子:在阳光明媚的一天,小明穿着格子衫去电影院看电影,小明拿着票来到电影院的检票口,将票(请求地址)给检票员(调度者),检票员(调度者)拿到票(请求地址)指引小明具体去哪个影厅(服务器)。这个过程中,小明只知道有票(请求地址),但是并不知道影厅(服务器)在哪。需要检票员(调度员)去指引小明具体哪个影厅(服务器)。
这个“调度者”有个高大上的名字:负载均衡服务器。集群的好处就是,系统的扩展性变得很容易,当你的服务器撑不住时,多增加服务器即可。
分布式:将一个业务拆分多个模块,部署在不同的服务器。按照业务需求拆分为一个个独立的子系统,在分布式结构中,这些子系统称为“服务”。这些子系统在web服务器中,他们之间通过RPC方式通信。
再举个例子:小饭店原来只有一个厨师,切菜洗菜备料炒菜全干单机。
后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。
为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。
2、为什么要使用分布式: |
从上面的架构发展历程或许已经看出来一点单机、集群、分布式之间的优劣势。
单机架构的劣势已经显而易见,大量的数据访问量时,单机架构肯定撑不住。所以在做一些电商项目时,单机架构肯定是不可行的。
当集群中的节点,增加到一定量时,发现集群的性能并没有太多提升,产品的更新升级也会很困难,服务器的增加也是需要成本的,当服务器增加到一定程度,成本也是很高的。
当数据访问量达到一定程度,例如大型的电商网站,庞大的数据访问量,引入分布式将整个项目打碎,拆分,各个模块负责不同的业务,分头做事,他们之间相互协调,最后把结果返回呈现给用户。
3、分布式特点: |
- 分布式将一个业务拆分多个模块,各个模块负责不同的功能,大大降低了程序之间耦合性
- 增加功能时,只需要在增加一个子项目,不需要修改原有的代码,提高了程序的可扩展性。
- 不同的业务可以布置在不同的服务器上,可以灵活部署