程序猿 集群与分布式

集群与分布式


1、什么是Zookeeper
    ZoKeperp是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby的一个开源的实现,是Hadoop和Hbase 的重要组件。它是一个为分布式应用提供致一致性服务的软件,提供的功能包括:配置维护、城名服务、分布式同步、组服务等。

    ZoKeeperp的目标就是封装好复杂易出错的关键服务,将简单易用的按口和性能高效、功能稳定的系统提供给用户。
    ZooKeeper包含一个简单的原语集,[1]提供 Java和C的接口。


2、写出你对zookeeper的理解

    随着大数据的快速发展,多机器的协调工作,避免主要机器单点故障的问题,于是就引入管理机器的一个软件,他就是zookeeper来协助机器正常的运行。

    Zookeeper有两个角色分别是leader 与follower,其中leader是主节点,其他的是副节点,在安装配置上-定要注意配置奇数个的机器上,便于zookeeper快速切换选举其他的机器。

    在其他的软件执行任务时在zookeeper注册时会在zookeeper下生成相对应的目录,以便zookeeper去管理机器。


3、zookeeper 的搭建过程

    主要是配置文件zoo.cfg配置dataDir的路径-句dataLogDir 的路径以及myid的配置以及server的配置,心跳端口与选举端口。

4、ThreadLocal内存漏问题,如何防止?

    ThreadLocal的实现是这样的:每个Thread维护一个ThreadLocalMap 映射表,这个映射表的key 是ThreadLocal实例本身,value 是真正需要存储的Object。
    也就是说ThreadLocal 本身并不存储值,它只是作为一个key 来让线程从ThreadLocalMap获取value。 值得注意的是图中的虚线,表示ThreadLocalMap 是使用ThreadLocal的弱引用作为Key的,弱引用的对象在GC时会被回收。
    ThreadLocal内存泄漏的根源是:由于ThreadLocalMap的生命周期跟Thead一样长,如果没有手动删除对应key就会导致内存泄漏,而不是因为弱引用。

    综合上面的分析,我们可以理解ThreadLocal内存泄漏的前因后果,那么怎么避免内在洲漏呢?

    每次使用完ThreaLocal,都调用它的remove(方法,清除数据。

    在使用线程池的情况下,没有及时清理ThreadLocal, 不仅是内存泄漏的问题,更严重的是可能导致业务逻辑出现问题。所以,使用ThreadLocal就跟加锁完要解锁-一样,用完就清理。


5、简述高可用。

    高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。停止服务的原因可能由于网卡、路由器、机房、CPU 负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落魄的佩奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值