中生代技术群分享第三十二期
讲师:王天青
编辑:友强
摘要: 征信是互联网金融的核心系统之一,在单体应用到服务化改造中,我们定义了API Gateway,Scheduler Service,Data Processing Service,Cache Service和Worker Service等服务,并实现了对基于Docker的微服务化。本期技术分享就带你走进互联网金融征信项目的微服务化之旅。
王天青: 麻袋理财首席架构师
分享内容: 麻袋理财基于Docker的容器实践
讲师简介:曾就职于EMC中国研究院,对OpenStack,CloudFoundry及Docker有很深的研究,2015年加入麻袋理财,负责整个基础架构的演进
内容简介:征信是互联网金融的核心系统之一,在单体应用到微服务改造中,我们定义了API Gateway, Scheduler Service, Data Processing Service, Cache Service和Worker Service等服务, 并实现了基于Docker的微服务化
FinTech第一期: 麻袋理财基于Docker的容器实践
本次分享的主题是《麻袋理财基于Docker的容器实践》——
征信要做的事情就是从内部外部获取数据,以此对用户的还款意愿进行甄别。
现在市场上也有很多第三方的征信公司,每家征信公司的数据来源各不相同,比如有些来自通信运营商,所以我们需要对接很多第三方的公司,而且各家公司的IT技术能力层次不齐,提供的接口也各不相同。
对接N家公司;
使用不同接口;
各个接口的并发限制,超时时间各不相同
改造之前是一个典型的单体应用。
改造过程中,我们希望把和第三方交互的模块抽取出来以便于单独扩展,提供APIGateway,对外提供统一的接口。
在方法与流程上,我们希望用自动的CI和CD,提高部署效率。从运维的角度来看,希望能够有更好的监控,及时发现问题,解决问题。
我们遵循12 Factor App的原则,服务拆分的时候,使用单一职责。代码和配置进行分离,这样Dev/Test/Prod环境可以用同一套代码加不同配置。
这是改造结果,后面我会一一叙述。
后面讲一下Docker的一些细节:
目前Docker版本已经到1.12了,我们也已经升级到了1.11版本,原则就是保持在上一个稳定版本。
我们有使用一些基础镜像,包含一些基础的组件。
我们的系统大部分使用Java开发,因此有Maven的基础构建镜像,JDK镜像等。
镜像仓库用的是VMware中国团队开发的Harbor,也是一个开源项目。
存储是一个高级话题,也包括如何优化Docker file,减少layer。
这是几种存储驱动的比较。
代码仓库我们目前用gitlab,遵循git-flow。目前每个项目有三个分支:dev,uat和master。每次代码提交都会触发Maven build和test,跑一些自动化测试脚本,结果会反馈到gitlab上。CI跑完之后,通过mergerequest的方式合并到uat分支,然后由测试和业务同事进行验证。测试完成后再通过merge request合并到master分支,然后进行产线部署,一般走灰度发布的流程。所有发布的流程都是用Jenkins实现
我们会使用Docker compose来部署一组相关服务,参数通过不同文件来指定。
集群管理使用Swarm+Shipyard。
日志监控用ELK,还有就是用filebeat把日志同步到某个目录,方便开发排错。
目前 Docker监控 以cAdvisor为主。
这是最后的部署架构图。
总结
1)每个worker和一个第三方渠道打交道;
2)每个可以独立跑的项目用Docker进行封装;
3)用gitlab+Jenkins+Docker实现自动化CI/CD
Q
A
&
Q1:王老师,请问你们如何解决合并分支时代码冲突的问题呢?尤其在涉及到多个feature分支以及个人分支的情况下。另外经常也会有已合并到dev分支上的feature需要撤销,这个怎么处理会比较好呢?
A1:代码冲突只能人工解决,另外一个微服务化的优势是,不同功能会放在不同项目中。
Q2:目前麻袋整合了多少外部征信数据,后期的征信数据再加工和标准化做到什么程度了?
A2:我们正在梳理自己的征信领域模型。
Q3:征信信息是实时查询吗?
A3:大部分是,但是有部分数据第三方提供的是异步接口;另外一个问题是第三方的IT水平也一般,不能保证7*24小时可用,再加上网络的问题,也会经常超时,所以要做好保护。
Q4:调用外部征信渠道是一个微服务?还是按渠道分成不同的微服务?
A4:按渠道拆分为不同的服务,可以根据第三方的能力动态部署多个instance。
Q5:Docker打通了三层网络?
A5:我们现在没有用overlaynetwork,因为不需要做隔离。
Q6:单体到容器微服务化,相同研发人员产能究竟提升了多少,有无度量数据?
A6:首先是模块化能够带来很多好处,当然系统的复杂性也会增加,所以要先根据业务场景进行分析。数据没有度量。
Q7:不同征信渠道作为一个worker单独部署,渠道多的时候,起很多Docker也是很占资源,做成一个微服务,并发去掉用呢?
A7:Docker占用资源还好了,主要是访问第三方需要不同线程池,不让对方响应比较慢,会把线程都占用掉。
Q8:对这种大额低频的应用上Docker的意义在哪?主要是部署和运维层面?
A8:征信是一个高频应用(因为审批需要调用),也会不断接入新的第三方渠道,所以这样拆分之后,就可以做到不停机加渠道及升级不同渠道。
Q9:关于问题四,接着请教[抱拳]理财和分期不同于秒杀场景,需要先注册,然后提订单,通常在同一时间并发应该没那么高,按渠道做那么多Docker实例必要性?
A9:这里拆分的原因还是因为要对接不同第三方渠道,第三方渠道提供不同接口,我们希望能够用一个模型来进行屏蔽这种差异性。
FinTech互联网金融科技专题
王天青, 麻袋理财首席架构师
分享内容: 征信系统的服务化,容器化
讲师简介:曾就职于EMC中国研究院,对OpenStack,CloudFoundry及Docker有很深的研究,2015年加入麻袋理财,负责整个基础架构的演进
内容简介:征信是互联网金融的核心系统之一,在单体应用到微服务改造中,我们定义了API Gateway, Scheduler Service, Data Processing Service, Cache Service和Worker Service等服务, 并实现了基于Docker的微服务化
FinTech第一期: 麻袋理财基于Docker的容器实践
张亮, 数人科技-解决方案总监
分享内容: 打造服务传统金融平台
讲师简介: IT从业经验14年以上,先后从事开发、架构、项目管理、。技术管理等岗位,曾就职于IBM,在大型企业数据中心运维方面,积累了超过10年的架构和规划管理经验,先后为五大行、农商行等金融机构提供数据中心运维管理规划和管理平台落地咨询及实施服务。热爱开源技术,现专注于openstack、docker、cloudify、apache kylin等开源方案在传统企业的落地。
内容简介:论述传统金融行业架构的治理和管理实践、包括方法论框架、标准建设、技术架构。同时结合目前双模IT的趋势,谈一下当前形势下如何构建新的企业架构。
李伟山, 江苏大圆银泰技术总监
分享内容: 撮合系统设计
讲师简介:毕业于国防信息大学,曾就职于华为、阿里巴巴,目前任江苏大圆银泰技术总监,曾主导设计淘宝虚拟团队的秒杀系统,对高并发、大数据架构设计有深刻的了解
敖小剑, PPMoney资深架构师
分享内容: PPMoney微服务之路
讲师简介:敖小剑,资深Java架构师,14年软件开发经验,对敏捷开发,架构设计有深入研究,曾在亚信,爱立信,唯品会任职。现任ppmoney基础架构负责人,负责Dolphin微服务架构和配套基础设施的开发,推进公司全面服务化。
冯磊, 银魅财富CTO
分享内容: 互联网安全的“土”办法
讲师简介:北京航空航天大学硕士,12年软件行业经验,先后就职于北大方正集团,中国国际金融有限公司,甲骨文等国内外知名企业,对软件工程、数据库、互联网高并发有深入研究和多年实践经验
王辉, 蘑菇街资深开发工程师
分享内容: 蘑菇街消费信贷产品“买呗”如何提升支付的性能
讲师简介:蘑菇街资深开发工程,支付金融事业部初创技术员工之一,经历金融产品技术从无到有的整个过程,参与过多个金融产品的重要项目,包括消费信贷产品“买呗”、理财宝、商家贷款等产品,以及第一版的支付账务可单元化优化等,主要技术方向是研究适合互联网金融应用的技术架构与大规模应用实践。
内容简介: 1个月的开发时间,“买呗”经历了从0到1的过程,再用3个月的时间发展到可以支撑2000笔/秒的支付量
樊双贵, 点融网DBA
分享内容: 典型互金系技术架构解析
讲师简介:曾就职于NCS集团、港澳资讯。先后做过开发、数据库建设,技术经理等工作。多年来一直从事证券、基金、银行、保险、互联网互联网金融等机构的IT系统的建设与运维服务,对IT系统建设和架构方案有深刻的理解和实践,目前主要专注于企业数字化转型等领域的方案设计和研究。2014年加入点融王,任资深应用级DBA。
待续
长按或扫描以下二维码
加入“中生代技术-FinTech互联网金融技术”群
和大牛们一起来讨论互联网金融技术!
(如二维码失效,请联系19815664申请,注明 姓名-公司-职位)
『中生代技术』
连接技术大咖的桥梁
促进科技技术的交流
微信号:freshmanTechnology