 探讨和实践基于Istio的微服务治理事件监控Service Mesh Meetup #4 上海站 探讨和实践基于Istio的微服务治理事件监控 2018.11.25 徐运元关于我 2008年毕业于浙江大学,曾在思科和浙大网新有超过 9年的工作经验和5年的云计算领域工作经验,带领团 队完成公司第一代基于Kubernetes的云平台开发和第 二代基于Kubernetes的DevOps云平台开发。目前致力 于公司基于Istio的微服务平台打造。 Metrics Logging Tracing 指标监控 • 指标可被聚合 • 体现系统性能趋势 分布式追踪 • 和请求相关 • HTTP • SQL 日志系统 • 代码逻辑处理事件 • 异常、debug信息容器化和微服务下的监控需求 微观下的监控需求 快速错误追踪 可快速排查在性能测试场景下的 慢方法、异常调用以及异常报文 等信息 单次链路追踪 可细粒度排查应用单次链路调用0 码力 | 29 页 | 8.37 MB | 6 月前3 探讨和实践基于Istio的微服务治理事件监控Service Mesh Meetup #4 上海站 探讨和实践基于Istio的微服务治理事件监控 2018.11.25 徐运元关于我 2008年毕业于浙江大学,曾在思科和浙大网新有超过 9年的工作经验和5年的云计算领域工作经验,带领团 队完成公司第一代基于Kubernetes的云平台开发和第 二代基于Kubernetes的DevOps云平台开发。目前致力 于公司基于Istio的微服务平台打造。 Metrics Logging Tracing 指标监控 • 指标可被聚合 • 体现系统性能趋势 分布式追踪 • 和请求相关 • HTTP • SQL 日志系统 • 代码逻辑处理事件 • 异常、debug信息容器化和微服务下的监控需求 微观下的监控需求 快速错误追踪 可快速排查在性能测试场景下的 慢方法、异常调用以及异常报文 等信息 单次链路追踪 可细粒度排查应用单次链路调用0 码力 | 29 页 | 8.37 MB | 6 月前3
 机器学习课程-温州大学-01机器学习-引言omega omiga 欧米 29 3. 机器学习的背景知识-数学基础 高等数学 导数、微分、泰勒公式…… 线性代数 向量、矩阵、行列式、秩、线性方程组、特征值和特征向量…… 概率论与数理统计 随机事件和概率、概率的基本性质和公式、常见分布、期望、协 方差…… 30 高等数学-导数 导数(Derivative),也叫导函数值。又名微商, 是微积分中的重要基础概念。当函数? = ?(?) 的自变量 概率论与数理统计-随机事件和概率 事件的关系 (1) 子事件:? ⊂ ?,若?发生,则?发生。 (2) 相等事件:? = ?,即? ⊂ ?,且? ⊂ ? 。 (3) 和事件:?⋃?(或? + ?),?与?中至少有一个发生。 (4) 差事件:? − ?,?发生但?不发生。 (5) 积事件:?⋂?(或??),?与?同时发生。 (6) 互斥事件(互不相容):?⋂?=⌀。 (7) 互逆事件(对立事件): Python模块 59 Python模块-NumPy ⚫NumPy NumPy是一个用Python实现的科学计算的扩展程序库,包括: 1、一个强大的N维数组对象Array; 2、比较成熟的(广播)函数库; 3、用于整合C/C++和Fortran代码的工具包; 4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy 配合使用更加方便。 NumPy(Numeric0 码力 | 78 页 | 3.69 MB | 1 年前3 机器学习课程-温州大学-01机器学习-引言omega omiga 欧米 29 3. 机器学习的背景知识-数学基础 高等数学 导数、微分、泰勒公式…… 线性代数 向量、矩阵、行列式、秩、线性方程组、特征值和特征向量…… 概率论与数理统计 随机事件和概率、概率的基本性质和公式、常见分布、期望、协 方差…… 30 高等数学-导数 导数(Derivative),也叫导函数值。又名微商, 是微积分中的重要基础概念。当函数? = ?(?) 的自变量 概率论与数理统计-随机事件和概率 事件的关系 (1) 子事件:? ⊂ ?,若?发生,则?发生。 (2) 相等事件:? = ?,即? ⊂ ?,且? ⊂ ? 。 (3) 和事件:?⋃?(或? + ?),?与?中至少有一个发生。 (4) 差事件:? − ?,?发生但?不发生。 (5) 积事件:?⋂?(或??),?与?同时发生。 (6) 互斥事件(互不相容):?⋂?=⌀。 (7) 互逆事件(对立事件): Python模块 59 Python模块-NumPy ⚫NumPy NumPy是一个用Python实现的科学计算的扩展程序库,包括: 1、一个强大的N维数组对象Array; 2、比较成熟的(广播)函数库; 3、用于整合C/C++和Fortran代码的工具包; 4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy 配合使用更加方便。 NumPy(Numeric0 码力 | 78 页 | 3.69 MB | 1 年前3
 机器学习课程-温州大学-01深度学习-引言omega omiga 欧米 30 3. 深度学习的背景知识-数学基础 高等数学 导数、微分、泰勒公式…… 线性代数 向量、矩阵、行列式、秩、线性方程组、特征值和特征向量…… 概率论与数理统计 随机事件和概率、概率的基本性质和公式、常见分布、期望、协 方差…… 31 高等数学-导数 导数(Derivative),也叫导函数值。又名微商, 是微积分中的重要基础概念。当函数? = ?(?) 的自变量 概率论与数理统计-随机事件和概率 事件的关系 (1) 子事件:? ⊂ ?,若?发生,则?发生。 (2) 相等事件:? = ?,即? ⊂ ?,且? ⊂ ? 。 (3) 和事件:?⋃?(或? + ?),?与?中至少有一个发生。 (4) 差事件:? − ?,?发生但?不发生。 (5) 积事件:?⋂?(或??),?与?同时发生。 (6) 互斥事件(互不相容):?⋂?=⌀。 (7) 互逆事件(对立事件): Python模块 60 Python模块-NumPy ⚫NumPy NumPy是一个用Python实现的科学计算的扩展程序库,包括: 1、一个强大的N维数组对象Array; 2、比较成熟的(广播)函数库; 3、用于整合C/C++和Fortran代码的工具包; 4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy 配合使用更加方便。 NumPy(Numeric0 码力 | 80 页 | 5.38 MB | 1 年前3 机器学习课程-温州大学-01深度学习-引言omega omiga 欧米 30 3. 深度学习的背景知识-数学基础 高等数学 导数、微分、泰勒公式…… 线性代数 向量、矩阵、行列式、秩、线性方程组、特征值和特征向量…… 概率论与数理统计 随机事件和概率、概率的基本性质和公式、常见分布、期望、协 方差…… 31 高等数学-导数 导数(Derivative),也叫导函数值。又名微商, 是微积分中的重要基础概念。当函数? = ?(?) 的自变量 概率论与数理统计-随机事件和概率 事件的关系 (1) 子事件:? ⊂ ?,若?发生,则?发生。 (2) 相等事件:? = ?,即? ⊂ ?,且? ⊂ ? 。 (3) 和事件:?⋃?(或? + ?),?与?中至少有一个发生。 (4) 差事件:? − ?,?发生但?不发生。 (5) 积事件:?⋂?(或??),?与?同时发生。 (6) 互斥事件(互不相容):?⋂?=⌀。 (7) 互逆事件(对立事件): Python模块 60 Python模块-NumPy ⚫NumPy NumPy是一个用Python实现的科学计算的扩展程序库,包括: 1、一个强大的N维数组对象Array; 2、比较成熟的(广播)函数库; 3、用于整合C/C++和Fortran代码的工具包; 4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy 配合使用更加方便。 NumPy(Numeric0 码力 | 80 页 | 5.38 MB | 1 年前3
 动手学深度学习 v2.02 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.1.3 广播机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.4 索引和切片 False]]) 对张量中的所有元素进行求和,会产生一个单元素张量。 X.sum() tensor(66.) 2.1.3 广播机制 在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。在某些情况下,即使形状不同, 我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。这种机制的工作方式如 下: 1. 通过适当复制元素来扩展一 在大多数情况下,我们将沿着数组中长度为1的轴进行广播,如下例子: a = torch.arange(3).reshape((3, 1)) b = torch.arange(2).reshape((1, 2)) a, b (tensor([[0], [1], [2]]), tensor([[0, 1]])) 由于a和b分别是3 × 1和1 × 2矩阵,如果让它们相加,它们的形状不匹配。我们将两个矩阵广播为一个更大 的30 码力 | 797 页 | 29.45 MB | 1 年前3 动手学深度学习 v2.02 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.1.3 广播机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.4 索引和切片 False]]) 对张量中的所有元素进行求和,会产生一个单元素张量。 X.sum() tensor(66.) 2.1.3 广播机制 在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。在某些情况下,即使形状不同, 我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。这种机制的工作方式如 下: 1. 通过适当复制元素来扩展一 在大多数情况下,我们将沿着数组中长度为1的轴进行广播,如下例子: a = torch.arange(3).reshape((3, 1)) b = torch.arange(2).reshape((1, 2)) a, b (tensor([[0], [1], [2]]), tensor([[0, 1]])) 由于a和b分别是3 × 1和1 × 2矩阵,如果让它们相加,它们的形状不匹配。我们将两个矩阵广播为一个更大 的30 码力 | 797 页 | 29.45 MB | 1 年前3
 消息中间件RocketMQ原理解析 - 斩秋nameserver 获取 topic 路由信息 定时清理下线的 borker 定时向所有 broker 发送心跳信息,(包括订阅关系) 定时持久化 Consumer 消费进度(广播存储到本地,集群存储到 Broker) 统计信息打点 动态调整消费线程池 启动拉消息服务 PullMessageService 启动消费端负载均衡服务 RebalanceService 对于批次消费消息,返回消费成功并不代表所有消息都消费成功, 但是消费消息的时候一旦遇到消费消息失败直接放回,根据 ackIndex 来标记 成功消费到哪里了 消费失败, ackIndex 设置为-1 广播模式发送失败的消息丢弃, 广播模式对于失败重试代价过高,对整个集 群性能会有较大影响,失败重试功能交由应用处理 集群模式, 将消费失败的消息一条条的发送到 broker 的重试队列中去,如果 此时还有发送到重试队列发送失败的消息,那就在 没有发送心跳清除 6.5:Broker 与 namesrv 之间的心跳 1) namesrv 接收 borker 心跳 DefaultRequestProcessor 的 REGISTER_BROKE 事件处理, (1) 注册 broker 的 topic 信息 (2) 构建或者更新 BrokerLiveInfo 的时间戳 2) NamesrvController 初始化时启动线程定时调用 RouteInfoManger0 码力 | 57 页 | 2.39 MB | 1 年前3 消息中间件RocketMQ原理解析 - 斩秋nameserver 获取 topic 路由信息 定时清理下线的 borker 定时向所有 broker 发送心跳信息,(包括订阅关系) 定时持久化 Consumer 消费进度(广播存储到本地,集群存储到 Broker) 统计信息打点 动态调整消费线程池 启动拉消息服务 PullMessageService 启动消费端负载均衡服务 RebalanceService 对于批次消费消息,返回消费成功并不代表所有消息都消费成功, 但是消费消息的时候一旦遇到消费消息失败直接放回,根据 ackIndex 来标记 成功消费到哪里了 消费失败, ackIndex 设置为-1 广播模式发送失败的消息丢弃, 广播模式对于失败重试代价过高,对整个集 群性能会有较大影响,失败重试功能交由应用处理 集群模式, 将消费失败的消息一条条的发送到 broker 的重试队列中去,如果 此时还有发送到重试队列发送失败的消息,那就在 没有发送心跳清除 6.5:Broker 与 namesrv 之间的心跳 1) namesrv 接收 borker 心跳 DefaultRequestProcessor 的 REGISTER_BROKE 事件处理, (1) 注册 broker 的 topic 信息 (2) 构建或者更新 BrokerLiveInfo 的时间戳 2) NamesrvController 初始化时启动线程定时调用 RouteInfoManger0 码力 | 57 页 | 2.39 MB | 1 年前3
 RocketMQ v3.2.4 开发指南Provider。  广播消费 一条消息被多个 Consumer 消费,即使返些 Consumer 属亍同一个 Consumer Group,消息也会被 Consumer Group 中的每个 Consumer 都消费一次,广播消费中的 Consumer Group 概念可以讣为在消息划分方面无意 丿。 在 CORBA Notification 规范中,消费方式都属亍广播消费。 在 JMS 高可靠、高实时、分布式特点。  Producer、Consumer、队列都可以分布式。  Producer 吐一些队列轮流収送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 consumer 实例消费返个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费返个 topic 对应的 项目开源主页:https://github Consumer 实例,可以是多台机器,也可 以是多个迕程,戒者是一个迕程的多个 Consumer 对象。一个 Consumer Group 下的多个 Consumer 以均摊 方式消费消息,如果设置为广播方式,那举返个 Consumer Group 下的每个实例都消费全量数据。 6 RocketMQ 存储特点 6.1 零拷贝原理 Consumer 消费消息过程,使用了零拷贝,零拷贝包含以下两种方式0 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南Provider。  广播消费 一条消息被多个 Consumer 消费,即使返些 Consumer 属亍同一个 Consumer Group,消息也会被 Consumer Group 中的每个 Consumer 都消费一次,广播消费中的 Consumer Group 概念可以讣为在消息划分方面无意 丿。 在 CORBA Notification 规范中,消费方式都属亍广播消费。 在 JMS 高可靠、高实时、分布式特点。  Producer、Consumer、队列都可以分布式。  Producer 吐一些队列轮流収送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 consumer 实例消费返个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费返个 topic 对应的 项目开源主页:https://github Consumer 实例,可以是多台机器,也可 以是多个迕程,戒者是一个迕程的多个 Consumer 对象。一个 Consumer Group 下的多个 Consumer 以均摊 方式消费消息,如果设置为广播方式,那举返个 Consumer Group 下的每个实例都消费全量数据。 6 RocketMQ 存储特点 6.1 零拷贝原理 Consumer 消费消息过程,使用了零拷贝,零拷贝包含以下两种方式0 码力 | 52 页 | 1.61 MB | 1 年前3
 OpenShift Container Platform 4.13 网络PTP 硬件快速事件通知框架 第 第 20 章 章 开 开发 发 PTP 事件消 事件消费 费者 者应 应用程序 用程序 20.1. PTP 事件消费者应用程序参考 20.2. 引用 CLOUD-EVENT-PROXY 部署和服务 CR 20.3. CLOUD-EVENT-PROXY SIDECAR REST API 中的 PTP 事件 20.4. 将消费者应用程序订阅到 PTP 事件 20.5 5. 获取当前的 PTP 时钟状态 20.6. 验证 PTP 事件消费者应用程序是否收到事件 第 第 21 章 章 外部 外部 DNS OPERATOR 21.1. OPENSHIFT CONTAINER PLATFORM 中的外部 DNS OPERATOR 21.2. 在云供应商上安装外部 DNS OPERATOR 21.3. 外部 DNS OPERATOR 配置参数 21.4. 在 Operator 添加到集群中,以便在将 LoadBalancer 类型服务添 加到集群中时,MetalLB 可为该服务添加外部 IP 地址。 multicast 通过使用 IP 多播,数据可同时广播到许多 IP 地址。 命名空 命名空间 间 命名空间隔离所有进程可见的特定系统资源。在一个命名空间中,只有属于该命名空间的进程才能看 到这些资源。 networking OpenShift Container0 码力 | 697 页 | 7.55 MB | 1 年前3 OpenShift Container Platform 4.13 网络PTP 硬件快速事件通知框架 第 第 20 章 章 开 开发 发 PTP 事件消 事件消费 费者 者应 应用程序 用程序 20.1. PTP 事件消费者应用程序参考 20.2. 引用 CLOUD-EVENT-PROXY 部署和服务 CR 20.3. CLOUD-EVENT-PROXY SIDECAR REST API 中的 PTP 事件 20.4. 将消费者应用程序订阅到 PTP 事件 20.5 5. 获取当前的 PTP 时钟状态 20.6. 验证 PTP 事件消费者应用程序是否收到事件 第 第 21 章 章 外部 外部 DNS OPERATOR 21.1. OPENSHIFT CONTAINER PLATFORM 中的外部 DNS OPERATOR 21.2. 在云供应商上安装外部 DNS OPERATOR 21.3. 外部 DNS OPERATOR 配置参数 21.4. 在 Operator 添加到集群中,以便在将 LoadBalancer 类型服务添 加到集群中时,MetalLB 可为该服务添加外部 IP 地址。 multicast 通过使用 IP 多播,数据可同时广播到许多 IP 地址。 命名空 命名空间 间 命名空间隔离所有进程可见的特定系统资源。在一个命名空间中,只有属于该命名空间的进程才能看 到这些资源。 networking OpenShift Container0 码力 | 697 页 | 7.55 MB | 1 年前3
 OpenShift Container Platform 4.9 网络11.8. 为 PTP 硬件配置 FIFO 优先级调度 11.9. 常见 PTP OPERATOR 故障排除 11.10. PTP 硬件快速事件通知框架 第 第 12 章 章 网 网络 络策略 策略 12.1. 关于网络策略 12.2. 记录网络策略事件 12.3. 创建网络策略 12.4. 查看网络策略 12.5. 编辑网络策略 12.6. 删除网络策略 12.7. 为项目定义默认网络策略 Operator 添加到集群中,以便在将 LoadBalancer 类型服务添 加到集群中时,MetalLB 可为该服务添加外部 IP 地址。 multicast 通过使用 IP 多播,数据可同时广播到许多 IP 地址。 命名空 命名空间 间 命名空间隔离所有进程可见的特定系统资源。在一个命名空间中,只有属于该命名空间的进程才能看 到这些资源。 networking OpenShift Container 误。这些请求可能是由端口扫描导致的,记录空请求有助于检测入侵尝试。此字 段允许的值有 Log 和 Ignore。默认值为 Log。 LoggingPolicy 类型接受以下两个值之一: log :将此值设置为 Log 表示应记录某一事件。 ignore :将此值设置为 Ignore 会在 HAproxy 配置中设置 dontlognull 选项。 HTTPEmptyRequestsP olicy HTTPEmptyRequestsPolicy0 码力 | 388 页 | 4.04 MB | 1 年前3 OpenShift Container Platform 4.9 网络11.8. 为 PTP 硬件配置 FIFO 优先级调度 11.9. 常见 PTP OPERATOR 故障排除 11.10. PTP 硬件快速事件通知框架 第 第 12 章 章 网 网络 络策略 策略 12.1. 关于网络策略 12.2. 记录网络策略事件 12.3. 创建网络策略 12.4. 查看网络策略 12.5. 编辑网络策略 12.6. 删除网络策略 12.7. 为项目定义默认网络策略 Operator 添加到集群中,以便在将 LoadBalancer 类型服务添 加到集群中时,MetalLB 可为该服务添加外部 IP 地址。 multicast 通过使用 IP 多播,数据可同时广播到许多 IP 地址。 命名空 命名空间 间 命名空间隔离所有进程可见的特定系统资源。在一个命名空间中,只有属于该命名空间的进程才能看 到这些资源。 networking OpenShift Container 误。这些请求可能是由端口扫描导致的,记录空请求有助于检测入侵尝试。此字 段允许的值有 Log 和 Ignore。默认值为 Log。 LoggingPolicy 类型接受以下两个值之一: log :将此值设置为 Log 表示应记录某一事件。 ignore :将此值设置为 Ignore 会在 HAproxy 配置中设置 dontlognull 选项。 HTTPEmptyRequestsP olicy HTTPEmptyRequestsPolicy0 码力 | 388 页 | 4.04 MB | 1 年前3
 Keras: 基于 Python 的深度学习库(批量)。 触发 • ValueError: 防止不正确的 count_mode 11.1.5 History [source] keras.callbacks.History() 把所有事件都记录到 History 对象的回调函数。 这个回调函数被自动启用到每一个 Keras 模型。History 对象会被模型的 fit 方法返回。 11.1.6 ModelCheckpoint [source] headers=None) 将事件数据流到服务器的回调函数。 需要 requests 库。事件被默认发送到 root + '/publish/epoch/end/'。采用 HTTP POST ,其中的 data 参数是以 JSON 编码的事件数据字典。 参数 • root: 字符串;目标服务器的根地址。 • path: 字符串;相对于 root 的路径,事件数据被送达的地址。 • field: 执行归约操作的轴。 • keepdims: 是否放弃或广播归约的轴。 返回 一个 uint8 张量 (0s 和 1s)。 all keras.backend.all(x, axis=None, keepdims=False) 按位归约(逻辑 AND)。 参数 • x: 张量或变量。 • axis: 执行归约操作的轴。 • keepdims: 是否放弃或广播归约的轴。 返回 一个 uint8 张量0 码力 | 257 页 | 1.19 MB | 1 年前3 Keras: 基于 Python 的深度学习库(批量)。 触发 • ValueError: 防止不正确的 count_mode 11.1.5 History [source] keras.callbacks.History() 把所有事件都记录到 History 对象的回调函数。 这个回调函数被自动启用到每一个 Keras 模型。History 对象会被模型的 fit 方法返回。 11.1.6 ModelCheckpoint [source] headers=None) 将事件数据流到服务器的回调函数。 需要 requests 库。事件被默认发送到 root + '/publish/epoch/end/'。采用 HTTP POST ,其中的 data 参数是以 JSON 编码的事件数据字典。 参数 • root: 字符串;目标服务器的根地址。 • path: 字符串;相对于 root 的路径,事件数据被送达的地址。 • field: 执行归约操作的轴。 • keepdims: 是否放弃或广播归约的轴。 返回 一个 uint8 张量 (0s 和 1s)。 all keras.backend.all(x, axis=None, keepdims=False) 按位归约(逻辑 AND)。 参数 • x: 张量或变量。 • axis: 执行归约操作的轴。 • keepdims: 是否放弃或广播归约的轴。 返回 一个 uint8 张量0 码力 | 257 页 | 1.19 MB | 1 年前3
 Apache RocketMQ 从入门到实战RocketMQ 的消息消费模式采用的是发布与订阅模式。 topic:一类消息的集合,消息发送者将一类消息发送到一个主题中,例如订单模块将 订单发送到 order_topic 中,而用户登录时,将登录事件发送到 user_login_topic 中。 consumegroup:消息消费组,一个消费单位的“群体”,消费组首先在启动时需要 订阅需要消费的 topic。一个 topic 可以被多个消费组订阅,同样一个消费组也可以订阅多 进程可以看做是消费组 order_consumer 消费组的其中一个消费者。 1. 消费模式 那这三个消费者如何来分工来共同消费 order_topic 中的消息呢? 在 RocketMQ 中支持广播模式与集群模式。 广播模式:一个消费组内的所有消费者每一个都会处理 topic 中的每一条消息,通常用 于刷新内存缓存。 集群模式:一个消费组内的所有消费者共同消费一个 topic 中的消息,即分工协作,一 /conf ig/consumerOffset.json 是其具体的存储文件,其中内容截图如下: 可见消费进度的 Key 为:topic@consumeGroup,然后每一个队列一个偏移量。 广播模式的消费进度文件存储在用户的主目录,默认文件全路劲名:${USER_HOM E}/.rocketmq_offsets。 4. 消费模型 RocketMQ 提供了并发消费、顺序消费两种消费模型。0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战RocketMQ 的消息消费模式采用的是发布与订阅模式。 topic:一类消息的集合,消息发送者将一类消息发送到一个主题中,例如订单模块将 订单发送到 order_topic 中,而用户登录时,将登录事件发送到 user_login_topic 中。 consumegroup:消息消费组,一个消费单位的“群体”,消费组首先在启动时需要 订阅需要消费的 topic。一个 topic 可以被多个消费组订阅,同样一个消费组也可以订阅多 进程可以看做是消费组 order_consumer 消费组的其中一个消费者。 1. 消费模式 那这三个消费者如何来分工来共同消费 order_topic 中的消息呢? 在 RocketMQ 中支持广播模式与集群模式。 广播模式:一个消费组内的所有消费者每一个都会处理 topic 中的每一条消息,通常用 于刷新内存缓存。 集群模式:一个消费组内的所有消费者共同消费一个 topic 中的消息,即分工协作,一 /conf ig/consumerOffset.json 是其具体的存储文件,其中内容截图如下: 可见消费进度的 Key 为:topic@consumeGroup,然后每一个队列一个偏移量。 广播模式的消费进度文件存储在用户的主目录,默认文件全路劲名:${USER_HOM E}/.rocketmq_offsets。 4. 消费模型 RocketMQ 提供了并发消费、顺序消费两种消费模型。0 码力 | 165 页 | 12.53 MB | 1 年前3
共 116 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12














 
 