前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3306π嘉宾专访-点融网架构师许增伟

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

作者头像
田帅萌
发布2018-08-15 10:33:38
4130
发布2018-08-15 10:33:38
举报
文章被收录于专栏:「3306 Pai」社区「3306 Pai」社区

许增伟

点融网架构师

西南交通大学毕业,曾任职于联想、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等;分享干货知识,即便是赞助商,也要求如此,拒绝放水。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档