在这个信息爆炸的时代,了解pulsar和pulsar消息队列的重要性不言而喻。本文将为您带来全面的解读,助您在这个领域中游刃有余。
Apache Pulsar 跨地域复制详解
在 Geo-Replication的设计支撑下,其一,我们可以比较容易的将服务分散到多个机房;其二,可以应对机房级别的故障,即在一个机房不可用的情况下,服务可以转接到其它的机房来继续对外提供服务。
Apache Pulsar内置了多集群跨地域复制的功能,GEO-Repliaaction是指把分散在不同物理地域的集群通过一定的配置方式让其能在集群之间进行数据的相互复制。
根据消息是否为异步读写的维度,跨地域复制可以分为如下两种方案:
下面我们讨论的是异步模式下,pulsar的跨地域复制方案。
Pulsar目前支持以下三种异步跨地域复制的方案:
从是否具有 configurationStoreServers(global zookeeper)的角度可以分为以下两种异步跨地域复制方案:
在整个跨地域复制中的一个核心理念在于,各个集群之间的数据是否能够互通,它们之间的交互主要依靠如下配置信息:
Full-mesh的形式允许数据在多个集群中共享,如下图:
对于多个集群之间的数据复制,我们均可以简化到两个集群之间的数据复制,基于这个理念,Geo-Replication的原理如下图所示:
当前拥有两个集群,分别部署在北京和上海,当用户在北京的集群中使用 producer发送数据时,首先会发送到北京机房的本地集群中(topic1)与此同时会去创建一个 replication cursor,用于专门复制数据的一个游标,通过这个cursor信息,你可以判断当前数据究竟复制到哪一个阶段。同时会去创建 replication producer,它会把数据从北京机房的 topic1中读取数据,然后将数据写到上海机房的 topic1中,上海机房的 broker收到 producer的请求之后,会写到本地相同的 topic中来(topic1)。此时如果上海机房的用户开启 consumer去消费数据的话,会接收到由北京机房 producer生产的数据信息。反之亦然。
在这里需要说明如下问题:
上面我们提到,在配置了 global zookeeper的情况下,是没有办法做数据的单向复制的,但是很多场景下,我们并不需要所有的集群之间的数据都是全连通的,这种场景下,我们就可以考虑使用单向复制的功能,需要强调的是,单向复制并不需要用户单独配置或指定 configurationStoreServers,配置时只需要将 configurationStoreServers的值配置为本地集群的 zookeeper地址(zookeeperServers)即可。
那么在不配置 global zookeeper的情况下,如何去做跨集群复制的场景呢?
在上面我们提到,global zookeeper的作用主要是用来存储多个集群的地址信息以及相应的namespace信息,并没有额外的元数据信息。所以在单向复制的场景下,你需要告诉其它机房的集群,你需要读到不同集群之间的 namespace信息。
Failover模式是单向复制的特例。
Failover模式下,远端机房的集群只是用来做数据的备份,并不会有producer和consumer的存在,只有当当前处于 active的集群宕机之后,才会把对应的 producer和 consumer切换到对应的 standby集群中来继续消费。因为有 replication sub的存在,所以会一同将订阅的状态也复制到备份机房。
目前 TDMD已经基于 Apache Pulsar应用在多种业务场景下,腾讯云TDMQ、计平、数平等多个团队也在一起共建Pulsar,对Pulsar感兴趣的小伙伴,欢迎加入下面的企业微信群一起交流。
[图片上传失败...(image-b7c1a1-1639451966467)]
基于Pulsar实现的数据同步实践
数据同步,就是让数据通过一定的传输介质,从一个地点到达另一个地点,从而实现数据的同步或复制,来满足应用需求。在本人的上一份工作中,随着业务量及数据量的的大幅增长,公司不得不对现有的微服务再度细化(拆分)。公司采用的是基于领域驱动设计的微服务体系,每个领域在需求日益增加的同时,必然会愈来愈大,考虑到业务内聚、系统性能等诸多因素不得不把某些大的领域中心拆分成多个服务。这个过程就是系统重构。
系统拆分如何让用户无感知呢?上线时通过分流策略将部分用户引流到新的服务中,要求新老系统并行运行一段时间来支撑新服务的试运行到完全落地,从而最大化减小生产故障。为了让新服务数据能够与旧系统服务中的数据实时一致,就需要同步数据。随着数据量大幅增长,要加快查询速度,可以将数据复制到 ES(ElasticSearch)中,提高查询速率。
综上总结:如何实现增量数据实时同步?
市场上有相关的开源数据同步产品和商业版数据通道工具,不需要人工任何接入即可实现双边的数据同步复制。但在系统重构时时可能会发生一些表结构的变动以及表对象的一些变动,此时就无法兼容商业的数据同步,当然也可以采纳其中的部分解决方案但还是需要开发人员介入进行相关处理,所以最终,我们采用了 Maxwell+ Pulsar的自研解决方案:使用 Maxwell读取 binlog(也可以使用 canal,maxwell实现较简单点),Pulsar进行数据传输。Maxwell+ Pulsar实现上层的数据读取,下游业务方实现对应的数据同步逻辑。比如,针对系统重构拆分的数据同步业务场景,以及读写分离,将数据复制同步到类似 ElasticSearch搜索引擎中的业务场景。
该图主要展示核心的数据链路,隐藏日志记录、链路追踪等一些微服务体系中所含有的组件。
Pulsar有四种消费模式:exclusive模式(独占模式)、failover模式(故障转移模式)、Shared模式(共享模式)以及 Key_Shared模式。
Exclusive模式只有一个 Consumer,接收一个 Topic所有的消息。
Key_Shared模式是 shared订阅模式拓展,一个分区可以有几个消费者并行消费消息,但具有相同 key的消息只会路由给一个消费者。其原理则是通过哈希来确定目标的使用者。每个消费端提供固定范围的哈希值,当然散列值的整个范围可以覆盖所有的消费端。
经上所述,对于数据同步的场景,我们将key指定为下面的示例,就可以实现有序的存放至指定的分区以及消息有序的消费啦!
消息的传输保障一般有三种:At least once、At most once和 Exactly once。
在数据同步场景下,要最大化的保证消息的可达性,可以运用 Maxwell的 At least once模式,尽可能保证消息传输。在网络不理想时,消息可能已经投递至目标,但接收到超时响应或者未接收成功,Pulsar会再次投递,从而产生了我们认为的“重复消息”。
充电桩的pulsar plus是什么
充电桩的pulsar plus是(快速)脉冲射电源。
充电桩其功能类似于加油站里面的加油机,可以固定在地面或墙壁,安装于公共建筑(公共楼宇、商场、公共停车场等)和居民小区停车场或充电站内,可以根据不同的电压等级为各种型号的电动汽车充电。充电桩的输入端与交流电网直接连接,输出端都装有充电插头用于为电动汽车充电。
充电桩一般提供常规充电和快速充电两种充电方式,人们可以使用特定的充电卡在充电桩提供的人机交互操作界面上刷卡使用,进行相应的充电方式、充电时间、费用数据打印等操作,充电桩显示屏能显示充电量、费用、充电时间等数据。
截至2020年6月底,全国各类充电桩保有量达132.2万个,其中公共充电桩为55.8万个,数量位居全球首位。
功能
充电桩(栓)能实现计时、计电度、计金额充电,可以作为市民购电终端。同时为提高公共充电桩(栓)的效率和实用性,今后将陆续增加一桩(栓)多充和为电动自行车充电的功能。
按照安装地点,可分为公共充电桩和专用充电桩。公共充电桩是建设在公共停车场(库)结合停车泊位,为社会车辆提供公共充电服务的充电桩。专用充电桩是建设单位(企业)自有停车场(库),为单位(企业)内部人员使用的充电桩。自用充电桩是建设在个人自有车位(库),为私人用户提供充电的充电桩。
充电桩一般结合停车场(库)的停车位建设。安装在户外的充电桩防护等级不应低于IP54。安装在户内的充电桩防护等级不应低于IP32。
按充电接口数分可分为一桩一充和一桩多充。按充电方式分充电桩(栓)可分为直流充电桩(栓),交流充电桩(栓)和交直流一体充电桩(栓)。
手表上写pulsar是啥意思
Pulsar的中文名是:琶莎(波沙)手表品牌
手表品牌的一种,精工集团除了发展SEIKO的品牌,另外推出高价位的PULSAR副品牌。
Pulsar是精工表旗下的一个品牌,中文译名不太清楚,可以到seiko的专柜看看,属于市场中档手表,有多种类型,男款女款,运动表,或者镶钻,价格不一。
Pulsar原来是一家美国表厂,是世上第一枚电子手表制造商,随后被精工集团收购,现为精工旗下一个定位比精工稍高一些的品牌。除了网站分类比精工本身好之外,可供查看的手表定位很实际,没有精工那种充大款的感觉。