canal subscribe to为什么要过滤

业务场景描述:
在我们的项目中有些配置信息持久化在数据库中,这些配置信息又是在系统启动后自动加载并缓存在local或者redis中,但如果后台运营系统进行了相应更新配置操作,我们需要实现“热部署”或“热插拔”等功能的话,我们有哪些方案可以实现呢?单机项目就非常简单了,但分布式集群的项目怎么办呢?
分布式集群的项目之间同步数据,我们来讲一下有哪些方案解决。
方案一:项目程序中对DB进行操作后,留一个后门接口进行刷新操作,针对不同机器的IP进行轮询或点对点刷新同步操作。其简单,就是再次进行一次db查询操作,该接口的安全性也需要留神,比较low。
方案二:项目程序中对DB进行操作时,通过切面或者自带调用一个异步方法将数据发送给MQ或者缓存Redis等中间件,再由另一个程序去监听并读入到本地缓存或者公共缓存。其简单但不稳定,如果忘了通知或者通知MQ失败了或者事务回滚了,要谨慎和想完全其处理逻辑。
方案三:使用阿里的canal等成熟的基于数据库日志增量订阅&消费的中间件进行独立有效的数据同步。其简单,可独立立项,更解耦更成熟,但缺点是属于Java方向,暂时支持的数据库为mysql,后文也将重点介绍这个方案。
方案四:使用成熟的分布式系统的协调中间件Zookeeper等的环境变量进行简单配置信息管理。
以上所说的四种方案,可以相互结合使用,也可以单独使用,没有最终的方案,只有适合不是适合而已,因人而异。
方案一和二的主要是在代码层面和主流的消息或缓存中间件之间的搭配,方案四主要是增加相关环境变量属性,我们就不多说了,接下来我们还是重点介绍一下方案三。
首先介绍Canal是什么?
Canal是阿里巴巴团队基于数据库日志增量订阅&消费的框架。纯java开发的,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql。
Canal的工作原理是?
原理相对比较简单,你也可以举一反三封装其他DB中间件:
1.&canal模拟mysql&slave的交互协议,伪装自己为mysql&slave,向mysql&master发送dump协议
2.&mysql&master收到dump请求,开始推送binary&log给slave(也就是canal)
3.&canal解析binary&log对象(原始为byte流)
Canal如何安装及使用?
A.&Canal的原理是基于mysql&binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row.&
修改Mysql配置:vim&./etc/f&
log-bin=mysql-bin&#添加这一行就ok
binlog-format=ROW&#选择row模式
server_id=1&#配置mysql&replaction需要定义,不能和canal的slaveId重复
B.&Canal的原理是模拟自己为mysql&slave,所以这里一定需要做为mysql&slave的相关权限.&
CREATE&USER&canal&IDENTIFIED&BY&'canal';&&
GRANT&SELECT,&REPLICATION&SLAVE,&REPLICATION&CLIENT&ON&*.*&TO&'canal'@'%';
--&GRANT&ALL&PRIVILEGES&ON&*.*&TO&'canal'@'%'&;
FLUSH&PRIVILEGES;
C.&下载最新Release版本:
D.&解压相关文件并进行config配置:
解压指令:&
mkdir&~/tmp/canal
tar&zxvf&canal.deployer-1.0.22.tar.gz&-C&~/tmp/canal
目录结构:
修改配置:vi&~/tmp/canal/conf/example/instance.properties
配置自己数据库配置
E.&启动Cannal和查看相关日志:
启动:sh&~/tmp/canal/bin/startup.sh
查看日志:tail&-f&~/tmp/canal/logs/canal/canal.log&
&&&&&&&&&tail&-f&~/tmp/canal/logs/example/example.log
停止:sh&~/tmp/canal/bin/stop.sh
F.&Java-Maven项目集成及Demo:
1.添加pom依赖:
&dependency&&&
&&&&&groupId&com.alibaba.otter&/groupId&&&
&&&&&artifactId&canal.client&/artifactId&&&
&&&&&version&1.0.12&/version&&&
&/dependency&&&
2.代码:参考/alibaba/canal/wiki/ClientExample
package&com.ft.test.unit;
import&java.net.InetSocketAddress;
import&java.util.List;
import&com.alibaba.otter.canal.client.CanalConnector;
import&com.alibaba.mon.utils.AddressUtils;
import&com.alibaba.otter.canal.protocol.Message;
import&com.alibaba.otter.canal.protocol.CanalEntry.Column;
import&com.alibaba.otter.canal.protocol.CanalEntry.Entry;
import&com.alibaba.otter.canal.protocol.CanalEntry.EntryType;
import&com.alibaba.otter.canal.protocol.CanalEntry.EventType;
import&com.alibaba.otter.canal.protocol.CanalEntry.RowChange;
import&com.alibaba.otter.canal.protocol.CanalEntry.RowData;
import&com.alibaba.otter.canal.client.*;
&*&Created&by&drjr&on&16-8-15.
public&class&TestCanal&{
&&&&public&static&void&main(String&args[])&{
&&&&&&&&//调用通过canal获取DB数据同步
&&&&&&&&neveDieGetMysqlDB();
&&&&private&static&void&neveDieGetMysqlDB()&{
&&&&&&&&//&根据ip,直接创建链接,无HA的功能
&&&&&&&&String&destination&=&&example&;
&&&&&&&&//&创建链接
&&&&&&&&CanalConnector&connector&=
&&&&&&&&&&&&&&&&CanalConnectors.newSingleConnector(new&InetSocketAddress(AddressUtils.getHostIp(),&11111),&destination,&&&,&&&);
&&&&&&&&int&batchSize&=&1000;
&&&&&&&&int&emptyCount&=&0;
&&&&&&&&try&{
&&&&&&&&&&&&connector.connect();
&&&&&&&&&&&&connector.subscribe(&.*\\..*&);
&&&&&&&&&&&&connector.rollback();
&&&&&&&&&&&&Long&batchId&=&
&&&&&&&&&&&&while&(true)&{&//demo方便处理,可以根据时间情况调整
&&&&&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&&&&&Message&message&=&connector.getWithoutAck(batchSize);&//&获取指定数量的数据
&&&&&&&&&&&&&&&&&&&&batchId&=&message.getId();
&&&&&&&&&&&&&&&&&&&&int&size&=&message.getEntries().size();
&&&&&&&&&&&&&&&&&&&&if&(batchId&==&-1&||&size&==&0)&{
&&&&&&&&&&&&&&&&&&&&&&&&emptyCount++;
&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&empty&count&:&&&+&emptyCount);
&&&&&&&&&&&&&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&Thread.sleep(1000);
&&&&&&&&&&&&&&&&&&&&&&&&}&catch&(InterruptedException&e)&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&&&&&&&&&emptyCount&=&0;
&&&&&&&&&&&&&&&&&&&&&&&&printEntry(message.getEntries());
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&connector.ack(batchId);&//&提交确认
&&&&&&&&&&&&&&&&}&catch&(Exception&e)&{
&&&&&&&&&&&&&&&&&&&&if&(null&!=&batchId)&{
&&&&&&&&&&&&&&&&&&&&&&&&connector.rollback(batchId);&//&处理失败,&回滚数据
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&}&finally&{
&&&&&&&&&&&&connector.disconnect();
&&&&private&static&void&printEntry(List&Entry&&entrys)&{
&&&&&&&&for&(Entry&entry&:&entrys)&{
&&&&&&&&&&&&if&(entry.getEntryType()&==&EntryType.TRANSACTIONBEGIN&||&entry.getEntryType()&==&EntryType.TRANSACTIONEND)&{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&RowChange&rowChage&=&
&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&rowChage&=&RowChange.parseFrom(entry.getStoreValue());
&&&&&&&&&&&&}&catch&(Exception&e)&{
&&&&&&&&&&&&&&&&throw&new&RuntimeException(&ERROR&##&parser&of&eromanga-event&has&an&error&,&data:&&+&entry.toString(),
&&&&&&&&&&&&&&&&&&&&&&&&e);
&&&&&&&&&&&&}
&&&&&&&&&&&&EventType&eventType&=&rowChage.getEventType();
&&&&&&&&&&&&System.out.println(String.format(&================&&binlog[%s:%s]&,&name[%s,%s]&,&eventType&:&%s&,
&&&&&&&&&&&&&&&&&&&&entry.getHeader().getLogfileName(),&entry.getHeader().getLogfileOffset(),
&&&&&&&&&&&&&&&&&&&&entry.getHeader().getSchemaName(),&entry.getHeader().getTableName(),
&&&&&&&&&&&&&&&&&&&&eventType));
&&&&&&&&&&&&for&(RowData&rowData&:&rowChage.getRowDatasList())&{
&&&&&&&&&&&&&&&&if&(eventType&==&EventType.DELETE)&{
&&&&&&&&&&&&&&&&&&&&printColumn(rowData.getBeforeColumnsList());
&&&&&&&&&&&&&&&&}&else&if&(eventType&==&EventType.INSERT)&{
&&&&&&&&&&&&&&&&&&&&printColumn(rowData.getAfterColumnsList());
&&&&&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&&&&&System.out.println(&-------&&before&);
&&&&&&&&&&&&&&&&&&&&printColumn(rowData.getBeforeColumnsList());
&&&&&&&&&&&&&&&&&&&&System.out.println(&-------&&after&);
&&&&&&&&&&&&&&&&&&&&printColumn(rowData.getAfterColumnsList());
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&private&static&void&printColumn(List&Column&&columns)&{
&&&&&&&&for&(Column&column&:&columns)&{
&&&&&&&&&&&&System.out.println(column.getName()&+&&&:&&&+&column.getValue()&+&&&&&&update=&&+&column.getUpdated());
运行后,会输出empty,并一直在读取:
3.Test表:
CREATE&TABLE&`test1`&(
&&`id`&int(11)&NOT&NULL,
&&`name`&varchar(45)&NOT&NULL,
&&`scoure`&decimal(10,2)&NOT&NULL,
&&PRIMARY&KEY&(`id`)
)&ENGINE=InnoDB&DEFAULT&CHARSET=UTF8;
4.进行简单Insert,Update语句操作后:
INSERT&INTO&`canalTest`.`test1`&(`id`,&`name`,&`scoure`)&VALUES&('6',&'niefei',&'0.0');
UPDATE&`canalTest`.`test1`&SET&`scoure`='100'&WHERE&`id`='6';
我们可以看到我们的监听程序监听了相关数据信息:
这样看我已经可以获取想要的全部信息了,接下来就是对你想要的“表”,“字段”等进行相关获取及封装进行操作了,后面也可以解析数据后放到公共的redis中等,监听也可以放在一个独立或者放在本身项目中就随你了。
我们现在是Canal单机的配置,其也支持集群方式部署,目前看单机已满足我们的业务需求。
Canal还能做什么?
1.&数据库镜像
2.&数据库实时备份
3.&多级索引&(卖家和买家各自分库索引)
4.&search&build
5.&业务cache刷新
6.&价格变化等重要业务消息
我们这边主要介绍的是通过监听获取DB的数据进行业务cache刷新,你有兴趣的话可以参考以下相关文档使用其更多功能。
更多文档可参考文献:
Canal的介绍:
MySQL的Binlay&Log介绍:
Redis介绍:
RabbitMQ介绍:
ActiveMQ介绍:
RocketMQ介绍:
本文已收录于以下专栏:
相关文章推荐
配置说明介绍配置之前,先了解下canal的配置加载方式:
canal配置方式有两种:
ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibab...
首先需要先启动canal server,可参见:Canal Server的 canal快速开始
运行canal client,可参见:canal client的 ClientExample
http://blog.csdn.net/lishehe/article/details/
  目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署...
继6月15日正式发布FlashRAID之后,Memblaze携FlashRAID分布式集群解决方案亮相2016中国闪存峰会,Memblaze高级技术总监吴忠杰分享了《构建NVMe高性能存储的方法与实践...
目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。
 目前,在集群系统下实现session统一的有如下几...
Apache shiro集群实现 (一) shiro入门介绍
Apache shiro集群实现 (二) shiro 的INI配置
Apache shiro集群实现 (三)shiro身份认证(Shiro...
Apache Shiro的基本配置和构成这里就不详细说明了,其官网有说明文档,这里仅仅说明集群的解决方案,详细配置:shiro web config
    Apache Shiro集群要解决2...
目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。
 目前,在集群系统下实现sessi...
上一篇《Elasticsearch与MongoDB 数据同步及分布式集群搭建 (一)》我们已经配置了一个Elasticsearch与MongoDB 数据同步高可用,可扩展以及分布式是ES的一个优势和特...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)镇江古运河旁的“神秘”围挡为啥围?_播报天下_贵阳网
&&&&&&>&&&&&正文
镇江古运河旁的“神秘”围挡为啥围?
摘要:沿市区焦顶山路由东向西,一道沿路的古运河景色在道路西侧被隔断了。陶先生每天吃过晚饭后喜欢到室外走走,因为焦顶山路南侧就是古运河,受到美景吸引,陶先生经常沿这条路散步。
中国江苏网1月30日讯
沿市区焦顶山路由东向西,一道沿路的古运河景色在道路西侧被隔断了。用来分割景色的是三排围挡,如果算上运河这道天然屏障,围挡整体看上去像是一个“口”字。围挡内有草坪也有灌木,与周围景色“一脉相承”。家住附近的陶先生最近经过观察发现,围挡内一连几个月都毫无动静,既无施工人员也无施工设备。他不禁疑惑,这道围挡内究竟在做什么?为什么要人为把美景隔开?
陶先生每天吃过晚饭后喜欢到室外走走,因为焦顶山路南侧就是古运河,受到美景吸引,陶先生经常沿这条路散步。
然而不知何时起,一道几百米长的围挡竖立在了马路南侧的人行道旁,将一大片沿路景色阻挡在视线之外。时间长了,陶先生几次忍不住从围挡上被撕开的缺口走进内部,发现围挡内没有施工迹象,也没有看到与施工有关的公示。一连几个月光围着不施工,陶先生着实猜不出“谜底”是什么。
听完陶先生的话,记者也很好奇,围挡内是要酝酿大动作吗?近日,经过数次实地查看,记者心中的疑问也未解开。
这道围挡准确的地点,在焦顶山路与苗家湾路交界处,整体位于焦顶山路上。围挡北面与京口花园小区隔路相对,西侧不远即是运河广场,周围居民区密集。
围挡共有三面,沿焦顶山路一面长度在300米左右,上面张贴着“讲文明树新风”的公益宣传画。两端的围挡南北向插入草坪,一直延伸到运河边。围挡并不是完全封闭的,东西两面各有缺口,弯下腰很容易就能进入。
围挡里是一片开阔的草坪,景观树夹杂在其间。除了自然景色,围挡内没有施工人员,没有施工设备与材料,甚至连施工的痕迹都很难找到,也正因如此,附近的居民说,不晓得里面在做什么工程,有人猜测,“是不是要建房子?”
围挡没动静多久了?一名老大爷说,有三四个月时间了。另一名带着孩子玩耍的男子说,有快一年时间了。无论哪种说法,大家的共识是,至少从去年秋天开始,围挡就孤零零地竖立在路边了。
从围挡上的宣传画中,记者看到两家单位名称“市文旅集团”“市水务公司”,昨天,记者与水务公司取得了联系。相关工作人员朱先生说,他们原本在围挡所在的区域有过规划,不过因为我市启动了“古运河与城市发展战略规划”,他们的原计划暂缓了,也就没有进行施工。
朱先生称,围挡目前并不会拆除,他们将等相应的规划确定后,再进行安排。至于原先的规划是什么,朱先生没有透露。(陈路) 摄影 陈路
原标题:镇江古运河旁的“神秘”围挡为啥围?
责任编辑:
  截至9月底,毕节市已登记备案社会救助协理员共3033名...昨日,“周末大舞台 市民展风采”2017筑城广场市民才艺大...昨日,记者从遵义市发改委获悉:该市正酝酿设立脱贫攻坚 ... 10月14日,贵州恒丰智诚迎来本赛季最后阶段的倒数第二 ...  10月14日上午,一列编组37节车厢的货物试验列车以80 ...
扶贫题材电影《南哥》还未上映即获得业内关注。日前在京 ...近期,《河神》《白夜追凶》《无证之罪》三部网络剧成为 ...电影《天才枪手》10日在中国40城举办提前观影活动,电影 ...“平时演的角色比较威猛,如硬汉、大侠之类。”演员胡军1...《环太平洋:雷霆再起》(暂译)全球首支预告来袭,新生 ...
10月14日,2017贵阳市第二届“甲秀杯”电子竞技联赛总决 ...北京时间10月12日凌晨4点30分,中国女子冰球国家队在美国...盐亭,一座历史感厚重的城。它所创造的,是造福几千年人 ...以三金一银两铜、位列奖牌榜第一的战绩结束了蒙特利尔世 ...昨天,北京男女排的两名国手曾春蕾、刘力宾从北京首都国 ...
小露香肩可以让你在人群中脱引而出,并且散发着女性独有 ...碎花裙的种类很多,有“乱花渐欲迷人眼”的缤纷碎花,也 ...少女时代组合成员泰妍3月24日韩国仁川机场街拍:身着Clau...最近总有小伙伴反馈说丰胸贫乳都穿不了露肩衣,编编觉得 ...近期街拍TOP单品当属金属色百褶裙,无论明星、时尚博主还...
依据《工业和信息化部重点实验室管理暂行办法》(工信部科〔号)有关规定,现将拟认定的2017年工业和信息化...[]
日中国共产党第十八届中央委员会第七次全体会议通过)  中国共产党第十八届中央委员会第七次全体会议,于2017年...[]现代为啥不修运河_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
现代为啥不修运河
现代为啥不修运河
我有更好的答案
啊,因为效果不大,但我们有南水北调,只是我们国家没修了。在外国,苏伊士运河,巴拿马运河都是现代修的
采纳率:73%
强行修建运河倒不如修建铁路和公路。当然,像苏伊士运河这样的特殊水道另当别论水运运力大,但是速度慢,有很多大宗货物运输的发达地区,往往是临近海洋或者大河的地区,完全可以依托现有水系进行运输。而内陆地区本来就没有水
因为有飞机、火车更方便。
为您推荐:
其他类似问题
等待您来回答乱谈:天朝为啥不会修尼加拉瓜运河
我的图书馆
乱谈:天朝为啥不会修尼加拉瓜运河
日 21:55日,习近平主席在亚信第四次峰会上做主旨发言,提出亚洲的事情要靠亚洲人民来办,亚洲的问题要靠亚洲人民来处理,亚洲的安全要靠亚洲人民来维护。这就是说,亚洲的事务归根结底要由亚洲人拿主意。于是,外媒说中国要搞亚洲版的“门罗主义”。年底的中美元首会谈,习大大就说了,中方提出亚洲安全观,就是希望亚洲各国以包容合作精神构筑共同安全。中美应该继续就亚太事务加强对话和协调,尊重和照顾彼此在本地区的利益和关切,携手为亚洲安全作出贡献。这是相辅相成的,不是相互排斥的。所以说,中国领导人还是有很清醒的认识,目前天朝的综合国力还无力挑战美国主导的国际格局。即使在亚洲,美国的“亚太再平衡”已经中国感受到压力了,中国在缅甸、泰国的投资都遭遇到“巧实力”的杯葛。更不要说远在大洋万里之外,美国人自1823年就明确提出门罗宣言的“美洲人的美洲”。尼加拉瓜对大多数中国人来说,完全没概念。大概介绍下,现在执政的尼加拉瓜民族解放运动组织于日成立,组织成立后,立即投入反对索摩查独裁政权的游击斗争。1979年7月,桑地诺民族解放阵线领导的人民武装推翻了索摩查的独裁统治,建立了民族复兴政府。1984年11月,它在大选中获胜,丹尼尔·奥尔特加当选总统。在执政期间,没收索摩查及其同伙的财产,实行国营、私营及合营的混合经济,进行土地改革,使劳工和群众组织合法化。冷战期间,苏联在中美洲的主要拉拢目标就是尼加拉瓜,当尼加拉瓜同美国的关系恶化时,苏联立即表示声援,宣称“完全站在桑地诺民族解放阵线一边。”并很快同尼加拉瓜建立了外交关系。里根声称,美国“不允许存在一个马克思主义的,同苏联结盟并致力于向中美洲其它地区输出革命的尼加拉瓜”。经济上,军事上,政治上,里根都采取手段制裁尼加拉瓜。到1984年底,苏美在尼加拉瓜问题上的争夺趋于激烈。美国怀疑苏联向尼加拉瓜运送了米格一21型战斗机,一再声明,这一事态是美国政府所不能容忍的,美国将不惜使用武力阻止米格飞机出现在中美洲。苏塔斯社予以驳斥说,这是美国“为进攻和入侵尼加拉瓜制造舆论”。但苏联只是表面上态度强硬,实际上己向美国作了不向尼加拉瓜提供先进飞机的保证。和古巴导弹危机遇到的问题一样,苏联的力量投送不到当地,所以每当美国态度强硬时,苏联往往暂时退让或使用比较灵活的策略。比如,苏联对美国在尼加拉瓜港口布雷等行动反应比较克制。安德罗波夫在接见尼加拉瓜“桑解阵”的领导人时强调尼加拉瓜“有能力捍卫自己的自由与独立”,言下之意,是要尼在遭到美国入侵时不要对苏抱过高的期望。苏官员曾在非正式场合表示,即使美国公开干涉尼加拉瓜,苏也将避免同美国在中美洲发生直接冲突。在苏联红色帝国顶峰期间,尚且没有实力与决心在美国后院挑战美国。现在的天朝,一方面外交重点是亚欧大陆的“一带一路”战略,为了和美国缓和关系,尽量少受干扰,不会在中美洲主导新修一条运河来刺激美国。另一方面,天朝的命门是马六甲海峡石油运输线,优先的工程也是绕开马六甲的泰国克拉运河。归根到底,天朝仅有一搜训练用的航母,海外力量投送和当年的苏联还差着一大截,现在去尼加拉瓜修运河,简直是肉包子打狗。再从外交角度来说,1985年,桑解执政,尼加拉瓜与中国建交。1990年右翼“全国联盟”领导人查莫罗夫人上台,尼加拉瓜宣布与台湾“复交”,中国政府随即终止了与尼的外交关系。2006年,桑解重新执政,巧合的是同一年,哥斯达黎加左翼总统阿里亚斯也当选上台,2007年哥国宣布与台湾断交,与大陆建交。到了2008年,海峡两岸达成了“外交休兵”共识,尼国与大陆复交算是耽误下来了。于是大陆和尼哥两国的亲疏远近就拉开了,而尼哥之间有关圣胡安河的航行权纠纷持续了200多年,两国曾在1858年签署条约规定,这条河除靠近哥斯达黎加岸边的部分,其余全部属于尼加拉瓜。2005年,哥斯达黎加将尼加拉瓜告上国际法院,指称尼加拉瓜对该国根据条约规定的航行权施加了不公正的限制。2010年,两国关于圣胡安河上的卡莱罗岛的争议再起,尼加拉瓜派兵占了卡岛,两国2011年还在国际法院还为此打官司。哥斯达黎加请求法院下令采取以下临时措施:在确定本案的案情实质前,尼加拉瓜不得在整个波蒂略岛区域,即整个圣胡安河右岸以及波蒂略泻湖(又称港头泻湖)湖岸和陶拉河岸之间(“关联区”)兴建或扩大运河(http://www.un.org/zh/ga/66/docs/4/5_16.html),国际法院至今没有裁决。根据现在媒体的报道,王靖是2012年和尼加拉瓜搭上线的,也就是两国已经打了官司之后才有了这事,尼加拉瓜的小算盘无非是傍上中国这颗大树,造成既成事实来欺负没有军队的哥斯达黎加。这就是为什么外交部多次申明项目是有关企业的自主行为,中国政府没有参与。商务部提示考虑到尼加拉瓜与我无外交关系,且该项目恐涉及哥斯达黎加与尼加拉瓜两国界河纠纷,潜在风险较大,特此提醒企业切勿以任何形式参与上述项目。日,中国同哥斯达黎加建立合作战略伙伴关系,习近平指出,要站在战略高度,把握中哥长期友好、共同发展的大方向,在涉及彼此核心利益问题上相互理解和支持。对于任何一个政府来说,领土都是核心利益,所以中国的潜台词就是会理解和支持哥伦比亚在争议地区的主张。而且尼加拉瓜这总统还真不是省油的灯,2013年,巴拿马总统里卡多·马蒂内利联合哥伦比亚、哥斯达黎加和牙买加向联合国秘书长潘基文揭露尼加拉瓜的扩张野心,并表示了对奥尔特加政府的敌意。此外,尼加拉瓜还和洪都拉斯也有领土纠纷。1月8日,习近平就中拉论坛未来发展提出4点建议。一是坚持平等相待的合作原则和友好协商、共同建设、共享成果的理念,打牢整体合作的政治基础。二是坚持互利共赢的合作目标,牢牢把握共同发展的主旋律,争取早期收获,实现“1加1大于2”的效果。三是坚持灵活务实的合作方式,通过双多边渠道开展形式多样的合作,实现优势互补。四是坚持开放包容的合作精神,充分考虑相关各方不同的利益诉求。我们欢迎拉美和加勒比其他地区组织和多边机构积极参与中拉整体合作。中拉论坛不仅有利于双方团结协作和南南合作,也必将为促进世界发展繁荣作出积极贡献。尤其是第四点特别提到,要充分考虑相关各方不同的利益诉求,为了一个尼加拉瓜,得罪前面这么多国家,当diang是王靖家开的啊。而且8号的论坛已经定调了,未来5年基本上就在这次来参加中拉论坛并且和中国外交关系相对稳定的国家做样板,尼加拉瓜,慢慢排队吧。(Jeffrey-Infinity)
馆藏&69264
TA的推荐TA的最新馆藏
喜欢该文的人也喜欢1411人阅读
github:/alibaba/canal
里面有包括canal的文档,server端 client端的 例子 源码包等等。
2、canal概述:
canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。
早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析
基于日志增量订阅&消费支持的业务:
数据库镜像
数据库实时备份
多级索引 (卖家和买家各自分库索引)
search build
业务cache刷新
价格变化等重要业务消息
keyword:数据库同步,增量订阅&消费。
3、canal工作原理:
从上层来看,复制分成三步:
master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变反映它自己的数据。
4、部署canal:
部署canal-server:
(1)开启mysql的binlog功能,并配置binlog模式为row。
在my.cnf 加入如下:
(2)在mysql中 配置canal数据库管理用户,配置相应权限(repication权限)
(3)下载canal&/alibaba/canal/releases&
&解压到相应文件夹
canal 文件目录结构
修改配置 instance.properties
然后cd到bin目录 &启动和停止canal-server
验证启动状态,查看log文件
上述日志信息显示启动canal成功
运行canal-client实例:
(1)建立实例maven工程
(2)添加pom依赖:
(3)更新依赖 mvn install
(4)canal-client.java &实例代码
(5)运行java实例
启动后看到控制端信息:
(6)触发数据库变更
(7)client 抓取mysql信息:
5、部署过程中产生问题:
(1)启动失败,log日志中地址正在使用
1、11111端口正在被占用 可以用 ls -i:11111 查看监听进程谁占用端口 或者 用 ps -ef | grep 11111 查看哪个进程占用端口号 &然后 kill -9 进程号 &杀掉占用进程
2、可以编辑 canal/conf/canal.properties 中的端口号 ,改为不占用的端口
(2)canal无法抓取mysql触发数据库改变的信息
1、检查mysql是否打开binlog写入功能 &检查binlog 是否为行模式。
2、检查my.cnf 和 instance.properties 等配置文件填写信息是否正确。
3、检查client 代码 调试实例代码
4、版本兼容问题,canal 1.8 换成 canal 1.7 继续测试
5、查看所有日志文件 分析日志&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:58313次
排名:千里之外
原创:18篇
转载:94篇
(1)(10)(10)(1)(4)(17)(1)(9)(5)(16)(4)(11)(12)(14)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 canal subscribe 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信