zookeeper学习笔记(一)--快速入门与集群部署

一、分布式系统面临的挑战

  1. 什么是分布式

  2. 分布式的特点
  3. 分布式技术
  4. 分布式面临的问题

 

进程与进程之间

一、单体架构

  1. Jvm内部调用
  2. 单点故障

二、集群架构

  1. 分布式session问题》session center解决 redis

  2. 数据库

读写分离

降低主库的查询、业务:读多写少、主从同步

Proxy:mycat、altas、mysql-proxy

Jdbc:tddl、sharding-jdbc

换数据库

分库分表

  不要把鸡蛋放在一个篮子里,本质:热点数据的问题

    垂直/水平

Proxy:mycat、altas

Jdbc:tddl、sharding-jdbc

 

云数据库(Tidb pingcap)

三、服务化

   周四:商品部门上新、会员部门改bug

上线步骤:开发、测试、预演、生产

还有问题 回滚  会员回滚

业务垂直

RPC:远程调用

框架:dubbo、motan(分布式)

如果更多的应用

调用之间更复杂了

排查bug问题:elk(分布式专题)

依赖配置也是个问题:分布式配置中心 disconf(zk)  diamond(zk)(分布式专题)

消息中间件:异步、解耦、消峰

Kafka、rocketmq、activemq、rabbitmq

四、Zk在分布式系统如何应用

分布式配置中心

分布式job

服务注册于发现

存储数据的》mysql

xxl-job

五、Zookeeper的介绍

 官方:

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

我的:

Yahoo开发开源、恭喜apache

动物管理员

zookeeper学习笔记(一)--快速入门与集群部署_第1张图片

四、Zookeeper搭建

一、单机模式

1、官网下载

2、上传

3、解压tar -zxvf xxx

4、修改conf  mv zoo_sample.cfg zoo.cfg

5、启动

sh zkServer.sh

ZooKeeper JMX enabled by default

Using config: /root/zookeeper-3.4.9/bin/../conf/zoo.cfg

Usage: zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

6、验证

 sh zkServer.sh status |jps

  1. 连接

sh zkCli.sh

 

二、集群模式

1、修改zoo.cfg

2、指定myid服务号

 

集群角色介绍:

 

Leader

   Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO写操作都走leaderzk里面leader只有一个

Follower 
    Follower的逻辑就比较简单了。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。    另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。 帮助leader处理读请求,投票权

Observer 
    如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。 没有投票权利,可以处理读请求

 

zookeeper命令介绍:

zookeeper学习笔记(一)--快速入门与集群部署_第2张图片

部署一个分布式zk集群

connect host:port

         get path [watch]

         ls path [watch]

         set path data [version]

         rmr path

         delquota [-n|-b] path

         quit

         printwatches on|off

         create [-s] [-e] path data acl

         stat path [watch]

         close

         ls2 path [watch]

         history

         listquota path

         setAcl path acl

         getAcl path

         sync path

         redo cmdno

         addauth scheme auth

         delete path [version]

         setquota -n|-b val path

你可能感兴趣的:(分布式,跟我一起学架构)