麻袋理财基于Docker的容器实践:互联网金融征信项目的微服务化之旅

FinTech第一期

征信是互联网金融的核心系统之一,在单体应用到服务化改造中,定义了API Gateway,Scheduler Service,Data Processing Service,Cache Service和Worker Service等服务,并实现了对基于Docker的微服务化。



本次分享的主题是《麻袋理财基于Docker的容器实践》——

            
征信要做的事情就是从内部外部获取数据,以此对用户的还款意愿进行甄别。
现在市场上也有很多第三方的征信公司,每家征信公司的数据来源各不相同,比如有些来自通信运营商,所以我们需要对接很多第三方的公司,而且各家公司的IT技术能力层次不齐,提供的接口也各不相同。

痛点:

  1. 对接N家公司;
  2. 使用不同接口;
  3. 各个接口的并发限制,超时时间各不相同

            

改造之前是一个典型的单体应用。
            
改造过程中,我们希望把和第三方交互的模块抽取出来以便于单独扩展,提供API Gateway,对外提供统一的接口。
在方法与流程上,我们希望用自动的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跑完之后,通过merge request的方式合并到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:我们现在没有用overlay network,因为不需要做隔离。

Q6:单体到容器微服务化,相同研发人员产能究竟提升了多少,有无度量数据?
A6:首先是模块化能够带来很多好处,当然系统的复杂性也会增加,所以要先根据业务场景进行分析。数据没有度量。

Q7:不同征信渠道作为一个worker单独部署,渠道多的时候,起很多Docker也是很占资源,做成一个微服务,并发去掉用呢?
A7:Docker占用资源还好了,主要是访问第三方需要不同线程池,不让对方响应比较慢,会把线程都占用掉。

Q8:对这种大额低频的应用上Docker的意义在哪?主要是部署和运维层面?
A8:征信是一个高频应用(因为审批需要调用),也会不断接入新的第三方渠道,所以这样拆分之后,就可以做到不停机加渠道及升级不同渠道。

Q9:关于问题四,接着请教[抱拳]理财和分期不同于秒杀场景,需要先注册,然后提订单,通常在同一时间并发应该没那么高,按渠道做那么多Docker实例必要性?

A9:这里拆分的原因还是因为要对接不同第三方渠道,第三方渠道提供不同接口,我们希望能够用一个模型来进行屏蔽这种差异性。



作者简介
王天青,麻袋理财首席架构师,曾就职于EMC中国研究院,对OpenStack,Cloud Foundry及Docker有较深研究。2015年加入麻袋理财,负责整个基础架构的演进。

本文转载自微信公众号 中生代技术 freshmanTechnology

时间: 2025-01-19 14:04:55

麻袋理财基于Docker的容器实践:互联网金融征信项目的微服务化之旅的相关文章

基于Docker的开发实践案例分享

当下,容器已成为一个非常热门的趋势,而只要谈到容器大家也通常都会说到Docker.甚至,容器已经有了自己的动词形式containerizing,用以描述使用Docker将应用程序打包. 在热烈争论之后,Docker领域的重点迁移到如何在现实生产环境中使用容器,人们纷纷将"containerization"的哲学运用到存储.网络,亦或是管理. 毫无疑问,在这个强劲的势头下,Docker可以在生产环境稳定使用肯定不会太遥远.而这里将分享一些基于Docker的用例,它们已经得到了工程师的验证

互联网金融“新大陆”:征信脱网的5亿“陌生人”

没有比"冰火两重天"这词更适合用来形容眼下中国的P2P(个人对个人借贷)行业了.一方面,P2P老板跑路新闻不断:另一方面又有源源不断的人与资金杀入这一行业. 7月19-20日,"2014·上海新金融年会暨互联网金融外滩峰会"在上海举办.会场人满为患,"大数据与互联网征信"专场外的走廊里,挤满了听众--如此可见行业的热度. 而这样一个学术氛围颇浓的论坛,对互联网金融.对P2P行业的看法也是千差万别.中国金融四十人论坛常务理事会副主席谢平指出,P2P

互联网金融"新大陆":征信脱网的5亿"陌生人"

没有比"冰火两重天"这词更适合用来形容眼下中国的P2P(个人对个人借贷)行业了.一方面,P2P老板跑路新闻不断:另一方面又有源源不断的人与资金杀入这一行业. 7月19-20日,"2014·上海新金融年会暨互联网金融外滩峰会"在上海举办.会场人满为患,"大数据与互联网征信"专场外的走廊里,挤满了听众--如此可见行业的热度. 而这样一个学术氛围颇浓的论坛,对互联网金融.对P2P行业的看法也是千差万别.中国金融四十人论坛常务理事会副主席谢平指出,P2P

Wecash闪银客户端上线 征战互联网金融

本文讲的是Wecash闪银客户端上线 征战互联网金融,征信是互联网金融领域的制高点,征信不仅为人们的生活带来的便利,让人与人之间的距离更紧密,更是未来互联网金融业务的重要命门.信用评估的市场虽然很大,但鲜有大有作为的玩家来承担和运作这一庞大的体系. Wecash闪银作为国内首家大数据信用评估公司,将用户数以亿计的互联网行为转化为"互联网信用",建立全新的信用体系,打通多维生活场景,建造多元化服务方式,为个人消费者提供便利.Wecash闪银前景良好,并于今年8月份获IDG4000万A轮投

互联网借贷与个人征信:一场矛与盾的攻坚战

近年来,随着互联网金融的快速发展,诚信.征信.信用分等成为生活中最常见的字眼.原本在大部分人眼中,只是房贷.车贷等涉及到个人征信问题.而在消费购物分期.信用分免押金租赁/酒店免押金入住.互联网借贷与征信挂钩等的普及之下,大众的日常生活已经与个人征信形成紧密联系. 在这样的态势下,众多互联网借贷与个人征信其实是形成了一种"矛与盾"的关系.互联网借贷项目虽然日趋成熟,但仍有诸多漏洞和限制.而在与个人征信挂钩后,大众对互联网借贷项目的动机也持怀疑态度.如此一来,围绕互联网借贷等新型金融体系构

基于Docker的应用负载均衡与服务发现

基于Docker的应用负载均衡与服务发现 概述 现在微服务架构越来越流行,阿里云容器服务对于微服务架构提供了很好的支撑,平台提供了便利的服务注册与发现机制,内置的服务负载均衡与路由功能,以及灵活的模板编排.全生命周期管理. 对于Web应用,下图是阿里云容器服务对弹性高可用Web应用负载均衡及路由支持的一种形式: 阿里云容器路由服务 假如你有一个Web应用需要运行多个实例,并对外提供服务.可以配置docker compose模板如下(以Java应用的Tomcat+Mysql为例), 这里通过Doc

腾讯理财通规模近1000亿,推互联网金融征信系统

9月17日消息,腾讯财付通今日宣布旗下互联网理财平台"理财通"推出半年里,资金规模已近1000亿元,目前用户数在千万级别.目前,理财通平台上共有4只货币基金产品和1只定期理财产品,用户可在 同一平台上对投资组合进行搭配.根据用户的成熟阶段,未来理财通提供更高收益的产品供用户选择,包括银行理财类,券商类,权益类,私募.信托等理财产品,收益率和风险性均有所不同.另外,理财通近日在尝试与传统领域结合推出产品,包括最近和腾讯房产合作的购房理财产品"购房理财宝",和广州万科合

中央高层:为互联网金融点了哪些“急刹车”

最近一个时期,很多金融改革的重大举措密集出台,表明金融改革已经从理论层面全面进入行动的层面.在人口.土地等要素红利日渐萎缩的环境下,金融改革有望引领中国经济迅速渡过经济结构的转型期.体制改革的阵痛期.刺激政策的消化期,打造中国经济发展的升级版. 中国人民银行副行长刘士余 1.金融市场主体行为扭曲 金融市场主体行为的扭曲,突出的表现在各类金融机构同业业务.理财业务,也表现在实体经济自身的运行上.实体经济大家说行为扭曲体现在什么地方呢?我的思考至少有这么几个方面. 一是对资金的价格信号反应极其迟钝.

史上最大互联网金融盛会91金融节启幕

本文讲的是史上最大互联网金融盛会91金融节启幕,2015年9月15日,由全国最大的互联网金融服务平台91金融举办的"躬耕四载·不忘初心"91金融盛典暨91金融节启幕仪式在北京盛大开幕,91金融创始人.CEO许泽玮宣布互联网金融史上首次综合规模最大.历时最长的金融盛会正式拉开帷幕. 七大产品及战略 只为普惠金融初衷 在91金融节启幕仪式上,91金融创始人.CEO许泽玮公布了七大全新产品及移动战略,包含发布91金融移动战略,目标吸引1000万注册用户;发行全国第一张经监管机构批准的互联网金