3306π嘉宾专访-点融网架构师许增伟

许增伟

点融网架构师

西南交通大学毕业,曾任职于联想、IBM、HP等多家知名企业,目前就职于点融成都。

分享时间:17:30 -18:10

分享议题:《深入数据同步技术研究》

1、3306π社区:请嘉宾给我们做个自我介绍?

许增伟:大家好,我是许增伟,点融网架构师,目前就职于点融成都。对服务治理、容器、分布式、数据库、鉴权、大数据等多个领域有浓厚兴趣,希望和大家一起探讨和学习。

2、3306π社区: 您在点融网从事的是架构师职位,您是如何看待这个职位的? 架构师平时工作的主要挑战有哪些呢?

许增伟:每个公司都有架构师职位,但可能每个公司对架构师的定位和认知都有不同。我个人认为,作为架构师,需要具备两个最基本的能力,一个是业务分析能力,另外一个是综合性的技术能力。先从第一个业务分析能力说起,系统架构本身是公司业务驱动的,从来也没有一个大一统的可以满足任何行业、任何业务场景的架构出现,所以需要分析和理解业务,搞明白业务真正需要的是什么,关键流程和环节又在哪里,然后才能设计出和业务相对匹配的系统架构出来。第二个就是综合性的技术能力,架构师需要比较广泛的技术涉猎和能力积累。目前开发一个复杂业务系统所涉及的技术领域越来越多,和外围系统的依赖和交互也越来越复杂。

作为架构师,需要知道每一类问题可以用什么技术或框架来实现,业界成熟的技术方案有哪些,这些技术方案又有哪些优缺点和限制,从而可以接近或找到满足业务要求的最优解。

目前我们架构组的主要挑战是要把架构组的一些统一的标准、组件和SDK下放出去,并推动其他业务部门进行集成,从而做到对公司系统的统一管控。

主要包括服务治理、调用链路跟踪、日志打点和采集、API设计规范、统一配置中心等等方面。

推广过程中发现了大量问题,比如语言异构(Java,PHP,Python,Golang等等)问题,比如一些基础框架版本过旧的问题,这些问题都需要想办法逐一解决。

3、3306π社区:您这次演讲的主题是数据迁移方面的,请问在实际工作中,数据迁移主要应用场景有哪些? 环境中有长期保持异构的数据迁移环境及如何实现?

许增伟:目前我能想到的数据同步和迁移的业务场景包括:

(1)基于较单纯的同步目的

由于业务需要,我们就需要把A库的表同步到B库去,这个目的单一且直接,并且往往是一次性和临时性的行为。

(2)出于构建数据总线目的

我们知道一般系统中都有一个主数据库,该数据库是一个OLTP库,随时接受终端用户的业务请求,对数据库发生CRUD操作。

如果可以构建一个数据总线(Data Bus),在主数据库有变更事件发生时,可以将数据变更传播到其他系统,比如:Memcached/Redis(更新缓存),ES(更新索引),Kafka/RabbitMQ等队列系统(通知其他业务方,这些业务系统对某些表数据的变更事件很感兴趣)。

数据总线机制可以看做是实现数据发布、数据订阅、数据通知的基础载体。

(3)大数据平台的数据同步

还有一种业务场景,就是希望将关系型数据库中的数据,同步到大数据平台。

我们可以借助于Apache Sqoop或阿里的DataX这样的数据交换平台,将关系型数据库中的数据同步到HDFS、HBase、Hive等Hadoop生态系统中,从而完成后续的数据分析工作。

(4)其他业务场景

比如数据库的灾备、异地多活,同步至数据仓库等。

一个好的数据同步工具需要满足几个特点:

(1)高性能:这里涉及到批处理操作,以及分析innodb聚簇索引的特点,尽量减少目的端B树索引的移动,减少i/o压力。

(2)及时性:当源数据发生改变时,能否用尽量少的时间传播到目的端,从而达到较好的同步及时性。

(3)可见性:通过某种机制,可以查看同步引擎执行每一个步骤的具体过程、耗时和结果,出现问题可以迅速定位。

(4)健壮性:分布式环境下,一切都是不可靠的。比如源和目的挂掉怎么办,出现网络抖动怎么办,容器突然crash重启后能否恢复上次的同步状态等等

(5)异构性:可以满足多个异构系统/平台间的数据同步工作

(6)时序性:需要把源数据按照数据发生变更的时间先后顺序,同步到目的端。

以上几个问题在本次分享中或多或少都有提及,其中时序性是本次分享的重点。

4、3306π社区 : 您是否可以给我们分享一下MySQL在互联网金融中遇到过什么坑及怎么规避?

许增伟:之前公司的一些核心业务跑在Oracle上,因为去O的缘故,很多已经慢慢迁移到MySQL中,其中很多坑是由Oracle和MySQL两种数据库的差异引起的。还有一些属于MySQL的 bug导致,当然我们有专业的DBA团队,完全不用关心此类问题,我可以简单地从应用层的角度来谈一下。

比如对待空串'',下面的SQL在两种数据库中运行,结果截然不同,需要应用层代码格外注意:

select 1 from dual where '' is null;

再比如编码的问题,MySQL的utf8编码是假utf8编码,支持的字符不全,导致Oracle中存储的一些稀有字符如emoji表情符同步到MySQL后出现乱码,所以最好将库级/表级的默认编码设置为utf8mb4,而不是utf8。

再比如Oracle字符串区分大小写,而MySQL默认不区分,应该将MySQL的collation设置为bin模式。

还有就是事务隔离级别的问题,MySQL默认使用的repeatable read(可重复读)隔离级别比SQL一般意义上的repeatable read更严格,因为MySQL会因为防止发生幻读而添加Gap Lock(间隙锁),导致锁定范围扩大,阻塞后续的insert操作。

session1

session2

begin

begin

update t1 set name = 'myname' where id >= 16

insert into t1(id, name) values(20, 'little');#就会发生hang住,等待锁。

应该将锁的范围更细粒度化,比如尽量基于确定的主键进行更新。

还有就是死锁的问题,需要保证多个事务按照特定的顺序进行加锁,否则很容易产生死锁的现象。

5、3306π社区 : 您做为职场的老鸟,在招聘新人方面一般会看重那些方面? 也希望您能给新人分享一些学习的方法?

许增伟:归纳总结,公司招聘人才主要是看中3个方面:

(1)思维清晰,沟通无障碍

(2)有良好的技术基础。

(3)有责任感和主人翁精神。

对于新人,有一些经验还是可以分享的,比如不要放弃工作中涉及到的每个知识点和细节,不但要知道这样做可以解决问题,还要知道为什么可以解决问题。

另外,知识的学习需要长期不断的积累,需要坚持不懈,必须合理规划自己的私人时间,和周围的人多做沟通和交流。

「3306π」技术Meetup-成都站

主办:「3306π」社区主办

协办:爱可生、腾讯云、知数堂基情赞助支持

时间:2018年8月11日 13:30-18:10

地点:成都市高新区天府三街198号腾讯成都大厦A座817会议室

关于「3306π」社区

围绕 MySQL 核心技术,将互联网行业中最重要的数据化解决方案带到传统行业中;囊括其他开源技术Redis、MongoDB、Hbase、Hadoop、ElasticSearch、Storm、Spark等;分享干货知识,即便是赞助商,也要求如此,拒绝放水。

原文发布于微信公众号 - 3306pai(pai3306)

原文发表时间:2018-07-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

大数据所要面临的麻烦

在计算机的发展当中,出现了两种选择,一个是超级计算机,另一个则是云架构。超级计算机看起来很美好,因为对于程序员而言,只要和平常一样当成单机系统处理就好,但是...

982
来自专栏大数据钻研

年薪50W大数据工程师入门学习路线

视频方面: 推荐《毕向东JAVA基础视频教程》。学习hadoop不需要过度的深入,java学习到javase,在Java虚拟机的内存管理、...

1934
来自专栏pangguoming

Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)

说在前面的话   此笔,对于仅对于Hadoop和Spark初中学者。高手请忽略! 1 Java基础: 视频方面:           推荐《毕向东JAVA基础...

6967
来自专栏杨建荣的学习笔记

自动化平台开发小结(六)

最近几天还在不断的改进平台里的事情,而翻了下之前写过的文章,发现从起步到现在也有一个多月了。如果不是看看自己总结的文章,好像啥也没干。 在此期间,我设立了两个里...

3475
来自专栏个人分享

项目研发流程及管理之我见

随着工作年限的增长,我们从一开始负责一个功能,再到负责一个模块的数据字典及框架设计。再到负责整个系统的需求评审及架构设计。这一路见证着程序猿的成长。但当我们逐步...

1833
来自专栏原创

亿级高并发系统的监控与报警

什么是系统监控 对于功能简单,用户量较少的软件系统,大部分公司不需要额外的监控系统来保证公司业务的正常运行。而当公司发展到一定程度,系统越来越多元化,单一系统也...

4147
来自专栏SDNLAB

JUNOS DEVOPS尤便捷 更精彩

一、 新一轮IT变革来临(DEVOPS) 如今IT发展风起云涌如火如荼,各领域技术百花齐放,各山头厂商占地为王。纵观整个IT江湖,虽拥有众多的昙花一现和太多的不...

3358
来自专栏云计算D1net

如何集成云层与本地存储

云和本地存储正走向越来越紧密的整合,于是云成为了另一个存储管理员可用的层级。 ? 组织不大可能把100%的数据都移到云服务上,但大多数企业都会至少想让一部分数据...

3146
来自专栏架构师小秘圈

1亿级PV网站架构演变

作者:叶军 来自:http://www.yejun.cn/?p=1154 一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不...

5307
来自专栏腾讯大数据的专栏

一行代码,一个系统!您的 Crash 实时分析已上线

腾讯移动分析(MTA),将内部打磨多年的 Crash分析能力对外输出,在复杂的App生态下,专注于构建完善的质量体系,助力 App 研发者用一行代码拥有完整 C...

3351

扫码关注云+社区

领取腾讯云代金券