图片 1

推动新职能和优化,6集群搭建

Python 3.8.1 版本的更新内容如下:

图片 1

转自:

Core and Builtins

距离Python 3.8.1 rc1发布没多久的时间,目前,Python
3.8.1也已正式发布。Python 3.8.1是Python 3.8的第一个维护版本,Python
3.8系列是Python编程语言的最新主要版本,它包含了许多新功能和优化。

 

  • bpo-39080:当星标表达式 AST
    节点位于 Call AST 节点的 args 属性中的元素之中时,修复它们的
    end_col_offset 值。

  • bpo-39031:解析“elif”节点时,该节点的
    lineno 和 col_offset
    现在指向“elif”关键字,而不是其条件,从而使其与“if”节点一致。

  • bpo-39008:PySys_Audit()现在要求Py_ssize_t将格式字符串中的
    size 参数用作大小参数,而不管 PY_SSIZE_T_CLEAN在包括时定义了什么。

Python 3.8.1版本的更新内容如下:

Kafka 0.9版本对java client的api做出了较大调整,本文主要总结了Kafka
0.9在集群搭建、高可用性、新API方面的相关过程和细节,以及本人在安装调试过程中踩出的各种坑。

Library

Core and Builtins

 

  • bpo-39022:更新
    importliib.metadata 以包括对 importlib_metadata 1.3
    的改进,包括更好的 EntryPoints 序列化和改进的自定义查找器文档。

  • bpo-38811:修复缺少os.link()pathlib中未处理的异常。

  • bpo-36406:处理doctest中的
    namespace packages。

bpo-39080:当星标表达式AST节点位于Call
AST节点的args属性中的元素之中时,修复它们的end_col_offset值。

关于Kafka的结构、功能、特点、适用场景等,网上到处都是,我就不再赘述了,直接进入正文

Tests

bpo-39031:解析“elif”节点时,该节点的lineno和col_offset现在指向“elif”关键字,而不是其条件,从而使其与“if”节点一致。

 

  • bpo-38546:Multiprocessing 和
    current.futures 测试现在会在测试完成时停止资源跟踪器进程。

bpo-39008:PySys_Audit()现在要求Py_ssize_t将格式字符串中的size参数用作大小参数,而不管PY_SSIZE_T_CLEAN在包括时定义了什么。

Kafka 0.9集群安装配置

Windows

Library

 

  • bpo-39007:将 auditing events
    添加到winreg中的函数。

bpo-39022:更新importliib.metadata以包括对importlib_metadata
1.3的改进,包括更好的EntryPoints序列化和改进的自定义查找器文档。

操作系统:CentOS 6.5

macOS

bpo-38811:修复缺少os.link()时pathlib中未处理的异常。

 

  • bpo-38295:防止在 macOS
    Catalina 上的 test_py_compile 中的 test_relative_path 失败。

bpo-36406:处理doctest中的namespace packages。

 

IDLE

Tests

1. 安装Java环境

  • bpo-38944:Excape
    key 现在会关闭 IDLE completion windows

  • bpo-38943:修复 IDLE
    自动完成窗口不总是出现在某些系统上的问题

bpo-38546:Multiprocessing和current.futures测试现在会在测试完成时停止资源跟踪器进程。

   
Zookeeper和Kafka的运行都需要Java环境,所以先安装JRE,Kafka默认使用G1垃圾回收器,如果不更改垃圾回收器,官方推荐使用
7u51以上版本的JRE。如果你使用老版本的JRE,需要更改Kafka的启动脚本,指定G1以外的垃圾回收器。

详细信息:

Windows

    Java环境的安装过程在此不赘述了。

(文/开源中国)    

bpo-39007:将auditing events添加到winreg中的函数。

 

macOS

 

bpo-38295:防止在macOS
Catalina上的test_py_compile中的test_relative_path失败。

2. Zookeeper集群搭建

IDLE

   
Kafka依赖Zookeeper管理自身集群(Broker、Offset、Producer、Consumer等),所以先要安装
Zookeeper。自然,为了达到高可用的目的,Zookeeper自身也不能是单点,接下来就介绍如何搭建一个最小的Zookeeper集群(3个
zk节点)

bpo-38944:Excape key现在会关闭IDLE completion windows

    此处选用Zookeeper的版本是3.4.6,此为Kafka0.9中推荐的Zookeeper版本。

bpo-38943:修复IDLE自动完成窗口不总是出现在某些系统上的问题

   

    首先解压

tar -xzvf zookeeper-3.4.6.tar.gz

 

   
进入zookeeper的conf目录,将zoo_sample.cfg复制一份,命名为zoo.cfg,此即为Zookeeper的配置文件

 

cp zoo_sample.cfg zoo.cfg

 

    编辑zoo.cfg

# The number of milliseconds of each tick 
tickTime=2000 
# The number of ticks that the initial 
# synchronization phase can take 
initLimit=10 
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement 
syncLimit=5 
# the directory where the snapshot is stored. 
dataDir=/data/zk/zk0/data 
dataLogDir=/data/zk/zk0/logs 
# the port at which the clients will connect 
clientPort=2181 
server.0=10.0.0.100:4001:4002 
server.1=10.0.0.101:4001:4002 
server.2=10.0.0.102:4001:4002

 

 

  • dataDir和dataLogDir的路径需要在启动前创建好
  • clientPort为zookeeper的服务端口
  • server.0/1/2为zk集群中三个node的信息,定义格式为hostname:port1:port2,其中port1是node间通信使用的端口,port2是node选举使用的端口,需确保三台主机的这两个端口都是互通的

    在另外两台主机上执行同样的操作,安装并配置zookeeper

   
分别在三台主机的dataDir路径下创建一个文件名为myid的文件,文件内容为该zk节点的编号。例如在第一台主机上建立的myid文件内容是0,第二台是1。

 

    接下来,启动三台主机上的zookeeper服务:

bin/zkServer.sh start

    3个节点都启动完成后,可依次执行如下命令查看集群状态:

bin/zkServer.sh status

    命令输出如下:

    Mode: leader 或 Mode: follower

    3个节点中,应有1个leader和两个follower

 

 

    验证zookeeper集群高可用性:

    假设目前3个zk节点中,server0为leader,server1和server2为follower

    我们停掉server0上的zookeeper服务:

bin/zkServer.sh stop

   
再到server1和server2上查看集群状态,会发现此时server1(也有可能是server2)为leader,另一个为follower。

 

    再次启动server0的zookeeper服务,运行zkServer.sh
status检查,发现新启动的server0也为follower

    至此,zookeeper集群的安装和高可用性验证完成。

 

   
附:Zookeeper默认会将控制台信息输出到启动路径下的zookeeper.out中,显然在生产环境中我们不能允许Zookeeper这样做,通过如下方法,可以让Zookeeper输出按尺寸切分的日志文件:

    修改conf/log4j.properties文件,将

    zookeeper.root.logger=INFO, CONSOLE

    改为

    zookeeper.root.logger=INFO, ROLLINGFILE

    修改bin/zkEnv.sh文件,将

    ZOO_LOG4J_PROP=”INFO,CONSOLE

    改为

    ZOO_LOG4J_PROP=”INFO,ROLLINGFILE

    然后重启zookeeper,就ok了

 

 

3. Kafka集群搭建

   
此例中,我们会安装配置一个有两个Broker组成的Kafka集群,并在其上创建一个两个分区的Topic

    本例中使用Kafka最新版本0.9.0.1

 

    首先解压

tar -xzvf kafka_2.11-0.9.0.1.tgz

    编辑config/server.properties文件,下面列出关键的参数