0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

JAVA科普:分布式和集群

Linux阅码场 来源:未知 作者:胡薇 2018-07-01 09:53 次阅读

1. 分布式

小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。

将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办?

由于系统A只有一份, 所以会引起单点失败。

2集群(Cluster)

小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例, 对外提供同样的服务,这样能睡个安稳觉了,不怕其中一个坏掉了,我还有另外2个呢。

这3个服务器上的系统就组成了一个集群。

可是对用户来说,一下子出现这么系统A ,每个系统的IP地址都不一样, 到底访问哪一个?

如果所有人都访问服务器1.1 ,那服务器1.1 会被累死, 剩下的三个闲死,成了浪费钱的摆设。

3负载均衡(Load Balancer)

小明要尽可能的让3个机器上的系统A 工作均衡一些, 比如有3万个请求,那就让3个服务器各处理1万个(当然,这是理想状况), 这叫负载均衡。

很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):

后来小明发现, 这个负载均衡的服务器虽然工作内容很简单,就是拿到请求,分发请求,但是它还是有可能挂掉啊,单点失败还是会出现。

没办法,只好把负载均衡也搞成一个集群, 不过和系统A的集群有两点不同:

1. 这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器。

2.同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。

4弹性

如果这3个系统A的实例还是满足不了大量的请求,那就再加服务器!

双11来了,用户量是平时的10倍, 小明向领导申请费用又买了几十台服务器,一下子把系统A部署了几十份。 可是双11过后, 流量一下子降下来了,那几十个服务器用不上了,也变成了摆设!

被领导批评以后,小明决定尝试一下云计算, 在云端可以轻松的创建、删除虚拟的服务器, 那样就可以轻松地随着用户的请求动态的增减服务器了。 双11来了就创建虚拟服务器,等到双11过去了就把不用的关掉, 省得浪费钱。

于是小明的系统具备了一定的弹性。

5失效转移

上面的系统看起来很美好,但是做了一个不切实际的假设: 所有的服务都是无状态的。 换句话说,假设用户的两次请求直接是没有关联的。

但是现实是,大部分服务都是有状态的, 例如购物车。

用户访问系统,在服务器1.1上创建了一个购物车,并向其中加入了几个商品, 然后 服务器1.1 挂掉了, 用户的后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管、去处理用户的请求。

可是问题来了,在服务器1.2,1.3上有用户的购物车吗? 如果没有, 用户就会抱怨,我刚创建的购物车哪里去了?

还有更严重的,假设用户是在服务器1.1上登录的, 用户登录过的信息保存到了该服务器的session中, 现在这个服务器挂掉了, 用户的session自然也不见了,当用户被失效转移到其他服务器上的时候,其他服务器发现用户没有登录, 就把用户踢到了登录界面, 让用户再次登录!

状态, 状态,状态! 用户的登录信息,购物车等都是状态信息, 处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移, 甚至无法使用。

怎么办?

一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致, 谁来干这个事情? 只能是像Websphere, Weblogic这样的应用服务器了。

还有一种办法, 就是把状态信息集中存储在一个地方, 让集群的各个服务器都能访问到:

小明听说Redis 不错, 那就用Redis来保存吧 !

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104514
  • 集群
    +关注

    关注

    0

    文章

    85

    浏览量

    17162
  • 分布式
    +关注

    关注

    1

    文章

    870

    浏览量

    74454

原文标题:小白科普:分布式和集群

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    spark集群使用hanlp进行分布式分词操作说明

    本篇分享一个使用hanlp分词的操作小案例,即在spark集群中使用hanlp完成分布式分词的操作,文章整理自【qq_33872191】的博客,感谢分享!以下为全文: 分两步:第一步:实现
    发表于 01-21 10:45

    Java 中利用 redis 实现一个分布式锁服务

    Java 中利用 redis 实现一个分布式锁服务
    发表于 07-05 13:14

    如何在集群部署时实现分布式session?

    集群部署时的分布式 session 如何实现?
    发表于 07-17 06:57

    Hadoop集群分布式的搭建步骤

    Hadoop集群分布式搭建
    发表于 11-04 09:19

    分布式操作系统的相关资料分享

    文章目录分布式操作系统嵌入操作系统集群操作系统集群系统管理分布式操作系统在以往的计算机系统中,其处理和控制功能都高度集中在一台主机上,所有
    发表于 12-22 07:23

    Java网络编程与分布式计算 pdf

    Java网络编程与分布式计算清晰地介绍了联网的基本原理,在进行网络编程时需要掌握的主要概念,以及在联网时可能遇到到的问题和Java的解决方案。同时通过实例来介绍如何运用
    发表于 09-26 23:13 0次下载
    <b class='flag-5'>Java</b>网络编程与<b class='flag-5'>分布式</b>计算 pdf

    一种分布式集群系统

    本文研究了广域网分布式集群的设计。与LVS 相比,这种集群的结构虽然复杂,但是能够克服传统集群的局限性,提供质量好,容量大,性价比高的解决方案。根据一种称之为CG 树
    发表于 06-25 13:55 14次下载

    EAST分布式服务器集群系统的设计与实现_杨玉娇

    EAST分布式服务器集群系统的设计与实现_杨玉娇
    发表于 03-19 11:26 0次下载

    基于Hadoop集群分布式入侵检测系统的设计与实现_谢天宇

    基于Hadoop集群分布式入侵检测系统的设计与实现_谢天宇
    发表于 03-18 09:53 0次下载

    ZooKeeper分布式桥梁开发

    从传统Java Web转入分布式系统应用,再到接触分布式协调框架ZooKeeper,通过痛苦的思维逻辑和理念转变,历经一个月时间,小伙伴们终于把ZooKeeper嵌入到了BoCloud博云
    发表于 10-09 17:46 0次下载
    ZooKeeper<b class='flag-5'>分布式</b>桥梁开发

    集群分布式有什么区别

    经常听到MySql集群、Redis集群分布式系统等概念,但是,很少有机会深究,到底什么集群,什么是分布式?在概念上这俩个词很接近,难道不需
    的头像 发表于 05-03 18:24 5142次阅读

    Java:Redis分布式锁的原理和案例

    要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。
    的头像 发表于 07-01 11:49 3843次阅读

    怎么区分分布式服务器和集群服务器?

      如何区分分布式服务器和集群服务器?许多朋友在选择服务器时不知道分布式服务器和集群服务器的区别,所以他们不知道如何选择它们。本文将告诉您分布式
    的头像 发表于 11-29 15:20 675次阅读

    Java手写分布式锁的实现

    随着互联网业务的发展,原本单机部署的系统演化成如今的分布式集群系统后,由于分布式系统多线程
    的头像 发表于 11-17 15:51 539次阅读
    <b class='flag-5'>Java</b>手写<b class='flag-5'>分布式</b>锁的实现

    某证券公司智能云投资交易云集群高性能分布式存储应用

    某证券公司智能云投资交易云集群高性能分布式存储应用
    的头像 发表于 09-27 09:57 226次阅读
    某证券公司智能云投资交易云<b class='flag-5'>集群</b>高性能<b class='flag-5'>分布式</b>存储应用