一、Java分布式(第一章)

一、Java分布式(第一章)

单机架构:将一个项目所有的业务部署在一个服务器上,整个项目的所有服务都由这台服务器提供。单机架构的劣势已经体现出来了,当访问量越来越大,单机架构肯定撑不住。例如双十一的活动,单机架构是撑不过庞大的访问量的。所以出现了集群。

集群:将一个项目部署在多个服务器上(不同的服务器运行同样的代码,干同一件事)。在单机架构遇到瓶颈的时候,在单机架构的基础上再添加多台服务器,干同样的事情,集群中的每个服务器都是集群中的一个”节点”,这些”节点”构成了集群。

那么问题来了,用户该去访问那个”节点”呢?软件制作者肯定希望用户访问负载压力小的服务器。这时候引入了一个”调度者”,他负责接受用户发送的请求,并去指引用户访问哪台服务器。

​举个简单的例子:在阳光明媚的一天,小明穿着格子衫去电影院看电影,小明拿着票来到电影院的检票口,将票(请求地址)给检票员(调度者),检票员(调度者)拿到票(请求地址)指引小明具体去哪个影厅(服务器)。这个过程中,小明只知道有票(请求地址),但是并不知道影厅(服务器)在哪。需要检票员(调度员)去指引小明具体哪个影厅(服务器)。

​ 这个”调度者”有个高大上的名字:负载均衡服务器。集群的好处就是,系统的扩展性变得很容易,当你的服务器撑不住时,多增加服务器即可。

分布式将一个业务拆分多个模块,部署在不同的服务器。按照业务需求拆分为一个个独立的子系统,在分布式结构中,这些子系统称为”服务”。这些子系统在web服务器中,他们之间通过 RPC方式通信。

再举个例子:小饭店原来只有一个厨师,切菜洗菜备料炒菜全干 单机

后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是 集群

为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是 分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

2、为什么要使用分布式:

从上面的架构发展历程或许已经看出来一点单机、集群、分布式之间的优劣势。

单机架构的劣势已经显而易见,大量的数据访问量时,单机架构肯定撑不住。所以在做一些电商项目时,单机架构肯定是不可行的。

当集群中的节点,增加到一定量时,发现集群的性能并没有太多提升,产品的更新升级也会很困难,服务器的增加也是需要成本的,当服务器增加到一定程度,成本也是很高的。

当数据访问量达到一定程度,例如大型的电商网站,庞大的数据访问量,引入分布式将整个项目打碎,拆分,各个模块负责不同的业务,分头做事,他们之间相互协调,最后把结果返回呈现给用户。

一、Java分布式(第一章)

3、分布式特点:

  1. 分布式将一个业务拆分多个模块,各个模块负责不同的功能,大大降低了程序之间耦合性
  2. 增加功能时,只需要在增加一个子项目,不需要修改原有的代码,提高了程序的可扩展性。
  3. 不同的业务可以布置在不同的服务器上,可以灵活部署

Original: https://www.cnblogs.com/zdh052286/p/11962256.html
Author: 清酒一杯
Title: 一、Java分布式(第一章)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581613/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Netty 如何高效接收网络数据?一文聊透 ByteBuffer 动态自适应扩缩容机制

    本系列Netty源码解析文章基于 4.1.56.Final版本,公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文 前文回顾 在前边的系列文章中,我们从内核…

    Linux 2023年6月6日
    0104
  • 使用URL快捷方式提高效率

    阅文时长 | 0.9分钟字数统计 | 1453.6字符主要内容 | 1、引言&背景 2、URL格式基本格式介绍 3、附录:Hotkey详细参数 4、拓展:收藏夹中的URL格…

    Linux 2023年6月14日
    0100
  • FusionAccess桌面云安装(Lite AD方法)

    创建FusionAccess虚拟机 选择自定义 默认兼容 选择稍后安装操作系统 选择Linux SUSE Linux 名字位置自己选择 选择最少4个处理器 选择最少8G内存 选择仅…

    Linux 2023年6月8日
    0119
  • 基础算法题

    Problem 3或5的倍数 2: 偶斐波那契数 4:最大回文乘积 5 窗口移动 11:方向数组 13大整数加法 、 14最长考拉兹序列 15:网格路径 25:1000位斐波那契数…

    Linux 2023年6月7日
    0122
  • 如何实现异步 connect

    写过网络程序的同学,应该都知道 connect 函数,在 socket 开始读写操作之前,先要进行连接,也即 TCP 的三次握手 , 这个过程就是在 connect 函数中完成的,…

    Linux 2023年6月13日
    0113
  • 【redis使用全解析】常见运维操作

    $ redis-server redis.conf 常见选项: ./redis-server (run the server with default conf) ./redis-…

    Linux 2023年5月28日
    076
  • 004 Linux 揭开神器 vim 面纱

    01 开篇初识 vim vim 功能吊炸天,但我们掌握一些常用的命令即可应对日常的使用了,不记流水账! Linux 中最常用的编辑器是什么? vim ! vi 跟 vim 啥区别?…

    Linux 2023年5月27日
    0108
  • OpenStack RedHat搭建

    一、准备环境 控制节点及计算节点必须开启虚拟化引擎Intel VT-x或AMD-V,且控制节点未来将被复用为计算节点;虚拟机配置可根据实际情况进行调整;务必配置 DNS,否则安装过…

    Linux 2023年6月8日
    090
  • bash shell相关知识

    shell与bash 什么是shell ——以上图片摘自《鸟哥的Linux私房菜》 系统核心不能随意地被操作,所以就设计出了壳程序shell,一方面保护了系统核心,另一方面提供了人…

    Linux 2023年6月7日
    0117
  • Unicode、UTF-8、UTF-16 终于懂了

    计算机起源于美国,上个世纪,他们对英语字符与二进制位之间的关系做了统一规定,并制定了一套字符编码规则,这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码…

    Linux 2023年6月13日
    0107
  • Xshell Win10不能直接拖文件进行文件传输解决办法

    centos安装了 lrzsz后, xshell还是无法直接从win10中拖文件 到centos。 需要修改win10的注册表。 见: https://blog.csdn.net/…

    Linux 2023年5月28日
    096
  • MySQL之多表查询、Navicat及pymysql

    一、多表查询 1.1 数据准备 — 建表 create table dep( id int primary key auto_increment, name varchar(20…

    Linux 2023年6月14日
    0107
  • 银河麒麟KYLIN安装wireshark进行抓包

    银河麒麟KYLIN安装wireshark进行抓包(前提是网络连通):sudo apt-get updatesudo apt-get install wireshark -y弹出框选…

    Linux 2023年6月13日
    0125
  • Redis安装及HA(High Availability)配置

    Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据。这篇文章主要介绍的是Redis安装及配置,所以不对Redis本身作详细介绍了。 下 载: 解 压: 以r…

    Linux 2023年5月28日
    082
  • RPA 微信财务报销机器人 竹间智能

    bash;gutter:true; 1、首先通过微信对话机器人收集报销信息及内容 2、上传发票并进行OCR识别 3、收集相关的出差信息,支持对话中修改内容 4、完成信息收集后,后台…

    Linux 2023年6月7日
    0102
  • 四年测试的面试题分享

    其实想说为什么每次面试都要先来点自我介绍,说来说去简历上都有,我曾想过不能快速进入面试阶段嘛 我的专业技能: 基本上这些专业技能是在工作上用过或者自己摸索过,实战经验比较少,下面是…

    Linux 2023年6月8日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球