RocketMQ介绍和简单使用

2023-05-16

RocketMq下载安装

  • 下载网址:http://rocketmq.apache.org/dowloading/releases/
  • 系统要求64bit Linux、Unix或Mac,JDK版本>=1.8

aaaaaa
 解压后其中的目录文件说明

什么是消息队列

        消息队列 MQ 既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

应用场景

  • 削峰填谷

    诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高的流量脉冲,或因没做相应的保护而导致系统超负荷甚至崩溃,或因限制太过导致请求大量失败而影响用户体验,消息队列 MQ 可提供削峰填谷的服务来解决该问题,比如生成订单系统每秒只能处理10000次下单,而双十一明显不是这个级别,这时候就可以把大量需要生成订单的单子分散到一段时间来生成,这时候用户要十几秒才能收到下单成功的消息,但是总比不能下单要好

  • 异步解耦

    交易系统作为淘宝/天猫主站最核心的系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、流计算分析等等,整体业务系统庞大而且复杂,消息队列 MQ 可实现异步通信和应用解耦,确保主站业务的连续性。

  • 顺序收发

    细数日常中需要保证顺序的应用场景非常多,例如证券交易过程时间优先原则,交易系统中的订单创建、支付、退款等流程,航班中的旅客登机消息处理等等。与先进先出(First In First Out,缩写 FIFO)原理类似,消息队列 MQ 提供的顺序消息即保证消息 FIFO。

  • 分布式事务一致性

    交易系统、支付红包等场景需要确保数据的最终一致性,大量引入消息队列 MQ 的分布式事务,既可以实现系统之间的解耦,又可以保证最终的数据一致性。

  • 大数据分析

    数据在“流动”中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用阿里云消息队列 MQ 与流式计算引擎相结合,可以很方便的实现将业务数据进行实时分析。

  • 分布式缓存同步

    天猫双 11 大促,各个分会场琳琅满目的商品需要实时感知价格变化,大量并发访问数据库导致会场页面响应时间长,集中式缓存因为带宽瓶颈限制商品变更的访问流量,通过消息队列 MQ 构建分布式缓存,实时通知商品数据的变化。

更多信息请参见适用场景。

核心概念

  • Topic:消息主题,一级消息类型,通过 Topic 对消息进行分类。详情请参见 Topic 与 Tag 最佳实践。
  • Message ID:消息的全局唯一标识,由消息队列 MQ 系统自动生成,唯一标识某条消息。
  • Message Key:消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。
  • Tag:消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。详情请参见 Topic 与 Tag 最佳实践。
  • Producer:消息生产者,也称为消息发布者,负责生产并发送消息。
  • Producer 实例:Producer 的一个对象实例,不同的 Producer 实例可以运行在不同进程内或者不同机器上。Producer 实例线程安全,可在同一进程内多线程之间共享。
  • Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息。
  • Consumer 实例:Consumer 的一个对象实例,不同的 Consumer 实例可以运行在不同进程内或者不同机器上。一个 Consumer 实例内配置线程池消费消息。
  • 队列:每个 Topic 下会由一到多个队列来存储消息。每个 Topic 对应队列数与消息类型以及实例所处地域(Region)相关,具体的队列数可提交工单咨询。
  • Exactly-Once 投递语义:Exactly-Once 投递语义是指发送到消息系统的消息只能被 Consumer 处理且仅处理一次,即使 Consumer 重试消息发送导致某消息重复投递,该消息在 Consumer 也只被消费一次。详情请参见 Exactly-Once 投递语义。
  • Group ID:Group 的标识。
  • Group:一类 Producer 或 Consumer,这类 Producer 或 Consumer 通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。
  • 集群消费:一个 Group ID 所标识的所有 Consumer 平均分摊消费消息。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在集群消费模式下每个实例平均分摊,只消费其中的 3 条消息。详情请参见集群消费和广播消费。
  • 广播消费:一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在广播消费模式下每个实例都会各自消费 9 条消息。详情请参见集群消费和广播消费。
  • 定时消息:Producer 将消息发送到消息队列 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息。详情请参见定时和延时消息。
  • 延时消息:Producer 将消息发送到消息队列 MQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息。详情请参见定时和延时消息。
  • 事务消息:消息队列 MQ 提供类似 X/Open XA 的分布事务功能,通过消息队列 MQ 的事务消息能达到分布式事务的最终一致。详情请参见事务消息。
  • 顺序消息:消息队列 MQ 提供的一种按照顺序进行发布和消费的消息类型,分为全局顺序消息和分区顺序消息。详情请参见顺序消息。
  • 全局顺序消息:对于指定的一个 Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。详情请参见顺序消息。
  • 分区顺序消息:对于指定的一个 Topic,所有消息根据 Sharding Key 进行区块分区。同一个分区内的消息按照严格的 FIFO 顺序进行发布和消费。Sharding Key 是顺序消息中用来区分不同分区的关键字段,和普通消息的 Message Key 是完全不同的概念。详情请参见顺序消息。
  • 消息堆积:Producer 已经将消息发送到消息队列 MQ 的服务端,但由于 Consumer 消费能力有限,未能在短时间内将所有消息正确消费掉,此时在消息队列 MQ 的服务端保存着未被消费的消息,该状态即消息堆积。
  • 消息过滤:Consumer 可以根据消息标签(Tag)对消息进行过滤,确保 Consumer 最终只接收被过滤后的消息类型。消息过滤在消息队列 MQ 的服务端完成。详情请参见消息过滤。
  • 消息轨迹:在一条消息从 Producer 发出到 Consumer 消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从 Producer 发出,经由消息队列 MQ 服务端,投递给 Consumer 的完整链路,方便定位排查问题。详情请参见查询消息轨迹。
  • 重置消费位点:以时间轴为坐标,在消息持久化存储的时间范围内(默认 3 天),重新设置 Consumer 对已订阅的 Topic 的消费进度,设置完成后 Consumer 将接收设定时间点之后由 Producer 发送到消息队列 MQ 服务端的消息。详情请参见重置消费位点。
  • 死信队列:死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列 MQ 会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明 Consumer 在正常情况下无法正确地消费该消息。此时,消息队列 MQ 不会立刻将消息丢弃,而是将这条消息发送到该 Consumer 对应的特殊队列中。
  • 消息路由:消息路由常用于不同地域之间的消息同步,保证地域之间的数据一致性。消息队列 MQ 的全球消息路由功能依托阿里云优质基础设施实现的高速通道专线,可以高效地实现国内外不同地域之间的消息同步复制。详情请参见全球消息路由。
  • 生产者:也称为消息发布者,负责生产并发送消息至 Topic。
  • 消费者:也称为消息订阅者,负责从 Topic 接收并消费消息。
  • 消息:生产者向 Topic 发送并最终传送给消费者的数据和(可选)属性的组合。
  • 消息属性:生产者可以为消息定义的属性,包含 Message Key 和 Tag。
  • Group:一类生产者或消费者,这类生产者或消费者通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

消息队列 MQ 涉及的概念的详细解释,请参见名词解释。

消息收发模型

        消息队列 MQ 支持发布/订阅模型,消息生产者应用创建 Topic 并将消息发送到 Topic。消费者应用创建对 Topic 的订阅以便从其接收消息。通信可以是一对多(扇出)、多对一(扇入)和多对多。

  • 生产者集群:用来表示发送消息应用,一个生产者集群下包含多个生产者实例,可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个生产者对象。

    一个生产者集群可以发送多个 Topic 消息。发送分布式事务消息时,如果生产者中途意外宕机,Broker 会主动回调生产者集群的任意一台机器来确认事务状态。

  • 消费者集群:用来表示消费消息应用,一个消费者集群下包含多个消费者实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个消费者对象。

    一个消费者集群下的多个消费者以均摊方式消费消息。如果设置的是广播方式,那么这个消费者集群下的每个实例都消费全量数据。

    一个消费者集群对应一个 Group ID,一个 Group ID 可以订阅多个 Topic,如图中的 Group 2 所示。Group 和 Topic 的订阅关系可以通过直接在程序中设置即可。

 

mq的启动和收发消息

        启动单机服务队列比较简单,不需要写配置文件只需要依次启动本机器的NameServer(邮局)和Broker(暂存)即可。

启动Nameserver(进入到mq的安装目录)

> nohup sh bin/mqnamesrv &
> logs humingming$ tail -f ~/logs/rocketmqlogs/namesrv.log

启动Broker(进入到mq的安装目录)

> nohup sh bin/mqbroker -n localhost:9876&
> tail -f ~/logs/rocketmqlogs/broker.log

用命令发送和接收消息

> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh  org.apache.rocketmq.example.quickstart.Producer

消息发送截图

消息接收

> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

消息接收截图

关闭消息队列:

    因为我们的服务一直是开着的,如果不关闭则会在后台一直运行,占用系统资源,我们有专门的的命令来关闭Nameserver 和 Broker

> sh bin/mqshutdown broker   --必须在rocketmq的安装目录下执行  mqshutdown是斌目录下的命令
> sh bin/mqshutdown namesrv

备注

  1. 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样,这样我们就需要nohup命令。语法:nohup Command [ Arg … ] [ & ]
  2. 通常rocketmq安装完成后会在用户目录下生成logs/文件夹,里面记录着mq的各种日志
  3. 在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。语法export [-fnp][变量名称]=[变量设置值]

RocketMq各个角色介绍和使用

        RocketMq由四部分组成,先来直观的了解下这些角色及其功能。分布式消息队列是可以用来高效的传输消息,它的功能和现实生活中邮局的收发信件很类似。现实生活中邮政系统的正常运行离不开四个角色,一是发发信者、二是收信者、三是负责暂存、四是传输的邮局,对应到MQ四个角色就是Producer、Consumer、Broker、NameServer,启动MQ的顺序先启动NameServer在启动Broker,这时候消息队列就已经可以提供服务了,发送消息就是用Producer,接收消息就使用Consumer来接收,很多程序既要接收又要收发则需要启动多个Producer和Consumer来发送和接受各种消息。

       为消除单点故障,增加可靠性和吞吐量,可以在多态机器上部署多个NameServer和Broker,每个Broker部署一个或多个Slave

    同大多数mq一样,一个分布式消息中间件部署好以后,可以供很多业务提供服务,同一个业务也有不同类型的消息要进行投递,这些不同类型的消息以不同的Topic名称来区分,所以在发送消息和接受消息之前要先创建Topic,针对某个Topic进行发送和接受消息。有了Topic之后还需解决性能问题,如果一个Topic要发送和接受的消息数据量非常大的话,需要支持能增加并行处理的机器来提高速度,这时候Topic可以设置一个或多个Message Quene类似分区,Topic有了Message Queue后,消息可以并行的向各个Message Queue发送,消费者也可以并行的从多个Message Queue读取消息并消费

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RocketMQ介绍和简单使用 的相关文章

  • 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息

    SQL表达式方式可以根据发送消息时输入的属性进行一些计算 RocketMQ的SQL表达式语法 只定义了一些基本的语法功能 数字比较 如 gt gt lt lt BETWEEN 字符比较 如 lt gt IN IS NULL or IS NO
  • 消息队列 RocketMQ:(九)消息重试

    文章目录 消息队列 RocketMQ 一 概述 消息队列 RocketMQ 二 系统架构 消息队列 RocketMQ 三 发送普通消息 三种方式 消息队列 RocketMQ 四 顺序消息 消息队列 RocketMQ 五 延时消息 消息队列
  • RocketMQ 安装

    镜像方式安装 首先再把上一接中提到的 RocketMQ 部署架构图看一下 从图中可以看出 RocketMQ的服务端分为两块 Name Server 和 Broker Name Server 是一个几乎无状态节点 可集群部署 在消息队列Roc
  • 12 SpringBoot整合RocketMQ实现过滤消息-根据TAG方式过滤消息

    消息发送端只能设置一个tag 消息接收端可以设置多个tag 接收消息端通过 设置多个tag 如下 tag1 tag2 tag3 上实例 生产端发送三个消息 TAG分别是TAG1 TAG2 TAG3 发送带Tag消息 测试根据Tag过滤消息
  • Linux 安装 RocketMQ(Server)

    安装 linux版 官网下载地址 解压上传至 usr local 进入上传文件目录 cd usr local rocketmq all 4 7 0 source release bin 修改runbroker sh 修改runserver
  • RocketMQ入门

    1 认识MQ 1 1 什么是MQ MQ全称为Message Queue 即消息队列 是一种提供消息队列服务的中间件 也称为消息中间件 是一套提供了消息生 产 存储 消费全过程的软件系统 遵循FIFO原则 1 2 为什么用MQ 并发量高时 当
  • linux下rocketmq安装-单机

    1 环境准备 jdk 这里用的jdk8 maven 3 6 1 这里说一下maven安装 下载maven 3 6 1 root devops 02 wget https archive apache org dist maven maven
  • RocketMQ学习笔记(实操篇)

    目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使
  • windows安装rocketmq

    windows安装rocketmq 问题背景 操作步骤 Lyric 请再给我 一个理由 问题背景 最近有使用rocketmq 为测试方便 在本地安装rocketmq 注意事项 默认已安装java1 8 启动mq必须是1 8版本 我之前使用1
  • RocketMQ源码(十三)—消费者DefaultMQPushConsumer启动主要流程源码

    此前我们学习了Broker和Producer的启动源码 以及Producer发送消息源码和Broker接收存储消息的源码 现在 我们来学习Consumer的启动以及消费消息的源码 Consumer的启动源码和Producer的启动源码还是有
  • rocketMq消息队列原生api使用以及rocketMq整合springboot

    rocketMq消息队列 文章目录 rocketMq消息队列 一 RocketMQ原生API使用 1 测试环境搭建 2 RocketMQ的编程模型 3 RocketMQ的消息样例 3 1 基本样例 3 2 顺序消息 3 3 广播消息 3 4
  • 报错:ImportError: rocketmq dynamic library not found解决方法

    目录 一 ImportError rocketmq dynamic library not found 二 OSError librocketmq so cannot open shared object file No such file
  • RocketMq存储设计——Index file

    RocketMq存储设计 Index file index file设计 rocket mq存储设计
  • 【RocketMQ】消息重试、重试次数设置、死信队列

    文章目录 1 死信队列 1 1 死信特性 1 2 查看死信消息 2 重试次数参数 2 1 Producer端重试 2 2 Consumer端重试 3 1 异常重试 3 2 超时重试 参考 1 死信队列 上一篇 RocketMQ 消息重试中我
  • 32 Consumer消息零丢失方案:手动提交offset + 自动故障转移

    1 消费者 红包系统 丢失消息的问题 前面两章中 阐述了如何确保订单系统发送出去的消息一定会到达MQ中 而且也能确保了如果消息到达了MQ如何确保一定不会丢失 在整个消息的生产消费中 就剩下消费者这一端的问题了 红包系统 消费者 拿到消息后
  • Failed to execute goal on project rocketmq-console-ng: Could not resolve dependencies for project

    Apache RocketMQ安装部署 Failed to execute goal on project rocketmq console ng Could not resolve dependencies for project org
  • RocketMQ-高级原理

    本节讲解下当MQ消息消费失败 或者发送不成功时如何处理消息 消息发送不成功一般存在于几种情况 网络原因 服务宕机 或者broker配置 消息发送失败 如果是由于broker配置原因 可以通过报错提示排查原因 无法查到路由信息 一般考虑到ro
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

    漏洞简介 RocketMQ 5 1 0及以下版本 在一定条件下 存在远程命令执行风险 RocketMQ的NameServer Broker Controller等多个组件外网泄露 缺乏权限验证 攻击者可以利用该漏洞利用更新配置功能以Rock
  • 基于Jmeter实现Rocketmq消息发送

    在互联网企业技术架构中 MQ占据了越来越重要的地位 系统解耦 异步通信 削峰填谷 数据顺序保证等场景中 到处都能看到MQ的身影 而测试工程师在工作中 也经常需要和mq打交道 比如构造测试数据 触发某些业务场景 以及针对mq的性能测试等 目前
  • 阿里架构专家力荐:架构修炼宝典,从基础到精通,让您轻松驾驭技术世界

    前言 作为程序员 确定发展方向和路线至关重要 而架构师则是许多人的追求之一 成为架构师并非易事 需要深厚的技术功底 当然 大厂架构师更具吸引力 但进入大厂并担任这一职位需要学习众多技术 或许你现在对此感到迷茫 但市面上已有多条现成的架构技术

随机推荐

  • Lottie动画的优劣及原理

    前言 Lottie是目前应用十分广泛的动画框架 在周会汇报的时候 xff0c 老板问能不能对Lottie进行优化 xff0c 于是就有了下文对Lottie原理的研究 毕竟要进行优化 xff0c 首先要深入了解原理嘛 Lottie实现 Lot
  • 详解微服务技术中进程间通信

    在单体应用中 xff0c 一个组件调用其它组组件时 xff0c 是通过语言级的方法或者函数调用 xff0c 而一个基于微服务的应用是运行于多个服务器上的分布式系统 xff0c 每个服务实例是一个典型的进程 所以 xff0c 如下图显示的 x
  • FusionCompute8.0.0实验(0)CNA及VRM安装(2280v2)

    给公司的华为泰山2280V2服务器安装CNA xff0c arm架构的 xff0c 采用方案为CNA和VRM在一个物理机上 准备文件 xff1a FusionCompute VRM 8 0 0 ARM 64 zip FusionComput
  • 网上买的st7789v3屏幕7脚的不能显示(1)

    今天通过网上购买了一款最便宜的1 3寸液晶显示屏分辨率240x240 xff0c 虽然小了一点 xff0c 但是看起来还不错 xff0c 于是准备了以前的用于驱动st7789的程序 xff0c 连接所有的引脚 xff0c 发现没有cs引脚
  • 新版idea中的terminal会打开windows的power shell窗口

    IDEA升级后发现点击terminal不会像之前一样显示在ide的底部而是会打开windows的Power Shell窗口 xff0c 此时需要找到windows Power Shell的位置右键属性在选项中 xff0c 取消勾选 使用旧版
  • 如何在非/home目录下下载安装vscode-server

    实现目标 xff1a 通过windows端的VSCODE xff0c 利用SSH工具在Ubuntu服务器的非 home目录下在下载安装vscode server 问题 xff1a 服务器 home文件夹剩余空间为0 xff0c 使用SSH工
  • Python 求解最大连通子网络问题

    记录一下不借助networkx包解决寻找最大连通子网络问题 这里没有源码 xff0c 只有问题解析 需要自己动手 这里是关键代码 xff1a span class token keyword for span i in span class
  • @Configuration的使用 和作用

    原文 从Spring3 0 xff0c 64 Configuration用于定义配置类 xff0c 可替换xml配置文件 xff0c 被注解的类内部包含有一个或多个被 64 Bean注解的方法 xff0c 这些方法将会被Annotation
  • @Component和@Configuration

    64 configuration和 64 component之间的区别是 xff1a 64 Component注解的范围最广 xff0c 所有类都可以注解 xff0c 但是 64 Configuration注解一般注解在这样的类上 xff1
  • zookeeper笔记

    ZooKeeper对分布式系统的协调 xff0c 使 共享存储解决分布式系统 临的问题 其实共享存储 xff0c 分布式应 也需要和存储进 络通信 大多数分布式系统中出现的问题 xff0c 都源于信息的共享出了问题 如果各个节点间信息不能及
  • Dubbo

    1 分布式架构 xff08 SOA 分层 按照业务性质分层 每一层要求简单 和 容易维护 应用层 距离用户最近的一层 也称之为接入层 使用tomcat 作为web容器 接收用户请求 使用下游的dubbo提供的接口来返回数据并且该层禁止访问数
  • Java的对象模型

    原文链接 对象在堆内存的布局分为三个区域 xff1a 分别是对象头 xff08 Header xff09 实例数据 xff08 Instance Data xff09 对齐填充 xff08 Padding xff09 对象头 xff1a 对
  • CopyOnWriterArrayList

    CopyOnWrite CopyOnWrite容器即写时复制的容器 通俗的理解是当我们往一个容器添加元素的时候 xff0c 不直接往当前容器添加 xff0c 而是先将当前容器进行Copy xff0c 复制出一个新的容器 xff0c 然后新的
  • Java 并发编程一篇 -(Synchronized 原理、LockSupport 原理、ReentrantLock 原理)

    并发编程已完结 xff0c 章节如下 xff1a Java 并发编程一篇 xff08 Synchronized 原理 LockSupport 原理 ReentrantLock 原理 xff09 Java 并发编程二篇 xff08 JMM C
  • Google离开我们已经快十年

    2010年1月13日 xff0c Google离开中国 掐指算来 xff0c Google已经离开我们快十年了 2010年是个特殊的年份 xff0c 这一年还发生了3Q大战 为什么诸多大事都发生在2010年 就是因为2010年是PC Web
  • Java 并发编程四篇 -(JUC、AQS 源码、ReentrantLock 源码)

    并发编程已完结 xff0c 章节如下 xff1a Java 并发编程一篇 xff08 Synchronized 原理 LockSupport 原理 ReentrantLock 原理 xff09 Java 并发编程二篇 xff08 JMM C
  • 在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面)

    原文地址
  • 20210721复盘

    1 在大厂中用的是java8吗 xff1f 还是更高版本的 xff1f 基本都是8 xff0c 一些老项目是7 2 远程面试的时候让写算法题 xff0c 是线上写还是用纸写还是用面试公司开发的工具写 xff1f 会有方法输入提示吗 xff1
  • 解决No plugin found for prefix ‘archetype‘ in the current project and in the plugin groups

    建立Maven项目时 xff0c 在cmd输入mvn archetype generate命令后出现了标题的报错 xff0c 我在settings xml里面配置的mirror是阿里云 xff0c 尝试了网上的好几个解决方案都不行 xff0
  • RocketMQ介绍和简单使用

    RocketMq下载安装 下载网址 xff1a http rocketmq apache org dowloading releases 系统要求64bit Linux Unix或Mac JDK版本 gt 61 1 8 解压后其中的目录文件