专栏首页「3306 Pai」社区3306π嘉宾专访-点融网架构师许增伟

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),作者:「3306π」组委会

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 新功能简介|MySQL8.0数据查询脱敏

    数据库管理员会负责维护数据的隐私和完整性。针对数据的脱敏,通常的方案是:应用端实现或者引入加密机等。

    [3306 Pai ] 社区
  • 3306π年会,深圳站精彩预告

    [3306 Pai ] 社区
  • 初探TiDB-TiFlash

    TiFlash是TiDB生态组件之一,专门解决OLAP场景。借助ClickHouse实现高效的列式计算。

    [3306 Pai ] 社区
  • 带负值的图表标签处理方法

    今天跟大家分享带负值的图表标签处理方法! ▽▼▽ 在遇到某些特殊图表时,特别是一个数据系列中既有正值又有负值的情况,数据标签以及纵轴轴标签总是会相互遮挡,做出来...

    数据小磨坊
  • 配对交易千千万,强化学习最NB!(附文档+代码讲解)

    本推文会介绍如何在利用股票分钟数据,基于强化学习来做配对交易。包括基本概念和具体实现;这里采用的强化学习方法,是类似多臂老虎机(N-armed bandit)问...

    量化投资与机器学习微信公众号
  • 各类机器学习问题的最优结果合集!附论文及实现地址索引

    来源:中国大数据 本文为你介绍RedditSota 统计的各种机器学习任务的最顶级研究成果(论文)。 该 GitHub 库提供了所有机器学习问题的当前最优结果,...

    数据派THU
  • 良心GitHub项目:各种机器学习任务的顶级结果(论文)汇总

    机器之心
  • 【聚焦】大数据处理技术的活用实例

    持续增加的会员数据、透过各种感测仪器收集的数据、社群网站上被写入的Text数据等,企业内所接触、流通的数据正爆炸性地増加中。科技日新月异的今天,透过技术革...

    小莹莹
  • 深度学习性能提升的诀窍

    克服过拟合和提高泛化能力的20条技巧和诀窍 你是如何提升深度学习模型的效果? 这是我经常被问到的一个问题。 有时候也会换一种问法: 我该如何提高模型的准...

    CSDN技术头条
  • 逆向知识第六讲,取摸优化的几种方式

            逆向知识第六讲,取摸优化的几种方式 除法讲完之后,直接开始讲 % 运算符在汇编中表现形式 首先C的高级代码贴上来. 高级代码: // Tedy....

    IBinary

扫码关注云+社区

领取腾讯云代金券