摘要:架构设计的重要性不言而喻,挖财首席架构师王福强日前在一个技术沙龙中分享了挖财架构设计中的6大关键点:系统层级分离;消息传递;异步化处理;信息存储,宁多勿缺;系统安全;存储冗余。

编者按:要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。在UPYUN Open Talk 第二期“移动时代互联网金融架构趋势”的技术分享中,挖财首席架构师王福强带来了《挖财的互联网金融技术探索》,王福强重点分享了当前挖财架构设计中的6大关键点:

1. 系统层级分离

从大的体系来讲,挖财主要在做四个纬度的事情,第一个是会员中心,挖财有一套自己的会员体系,第二个是现金流,第三个是风控中心,第四个是产品中心,最后是一些清算和结算的东西。

挖财在所有的系统上都会做一些适度的关键点分离。在这个层面上SOA(构造分布式计算的方法)必不可少,当系统形成一定规模后也会逼着我们往这个方向走。

在现金流体系中,因为现金流数据的特性和一般数据特性不一样,它会随着时间的纬度不停往上涨,不能单纯按照用户来划分,所以挖财从用户和时间线两个维度的区分现金流。为了保持数据的一致性,挖财在选型的时候采用了Scala语言。在系统体系里,中间件会随着数据量的增长而遭遇瓶颈,所以挖财在后面的服务化方向就专门针对服务做优化,在应用层针对数据层做一些屏蔽工作,将其分离开来。

除了在技术上做边界分离,我们还会对职责进行一些划分,让个人优势得以充分发挥,挖财在这一点上强调的是前后端分离,最早挖财在技术上只是做异步的调用,生成一些protect层面的规范,但最终前端的事情还是要完全由前端来做,这会使得前后端的工作效率得到整体提升。

2. 消息传递

上面的分离,主要是在系统层级的隔离和界定上,隔离后还需要进行系统层级间的交流互通,形成体系后才可以产生更大价值的服务。挖财采用了消息传递机制来解决系统互通的问题。

在消息传送的方式上采用remoting(分布式处理方式),提到remoting更多的还是和RPC相关的概念,互联网大部分技术体系都是同时采用多语言开发的,RPC是跨语言的通信标准。基于服务做的工作,基本都会参考使用DUBBO服务框架。鉴于金融系统对高并发的要求没有特别高,挖财采用了HTTP协议来实现。

3. 异步化处理

通过消息传递解决了系统互通的问题后,为了尽量减少事件给系统带来的影响,在尽可能所有的地方都走异步化。

挖财,Async典型应用场景

当移动端对服务器端发起的请求直接达到百万级别以后,通过异步处理的方式形成一个完整的异步闭环,等数据处理完后,将数据Push给移动端。在这个过程中,服务器端可以进行某些交互,也可在本地做一些事情。在这个环节挖财使用得最多的是Kafka和Akka技术。Akka是Actor模型在JAVA/Scala平台上的一个比较成熟的实现。

Akka本质上没有限速,所有的消息都可以实时发送,这就会导致稍不注意就会导致处理节点的数据崩盘,所以我们在使用Akka过程中第一个要处理的问题就是限流。比如通过ACK机制缓解后端处理压力。

4. 信息存储,宁多勿缺

挖财对信息这一块现在采用宁多勿缺的原则,保留每一次的更改,代替原有的直接覆盖,这样使得出现问题的时候能有迹可循,不会因为查询不到一些信息而一头雾水。

在消息传递环节采用Kafka也是考虑到了这方面的原因,我们最看重的就是Kafka的多副本数据保存能力。

除了Kafka,我们还进行了一些小实践,在维护方面,如果核心资料变更,以前是直接覆盖,现在是核心字段配一个版本号,后期出现任何问题都可以根据时间将操作找出来。比如说Actor崩溃的话,我们通过Akka的创建功能可以随时回去,不至于出现消息丢失、数据丢失的问题。总之挖财的技术希望能有自己的时光机,出了问题可以回退。

5. 系统安全

对金融系统来讲,安全是一个比较重要的问题。在金融系统来说,ATBS已经是最低标准。为了抵制外来危害,首先尽可能的设置门槛,这样可以减低技术成本。

在技术层面,会构建基本防御层,比如网络防火墙,应用防火墙。

在业务层面,借力第三方,在反欺诈层面挖财使用了同盾科技的技术,同时配以风控团队进行人工干预。

在拦截层面,为了保证隔离性,且不希望Kafka在接管所有东西后,这个集群出现问题,这个集体整体会受到影响,因此希望从物理上部署应用的隔离性,相应集群负责相应的业务处理。

6. 存储冗余

从分布式存储的角度来讲,传统互联网更多在CP的角度考虑问题,往往是将存储弱化掉,但对互联网金融企业来讲,需要将存储数据的一致性提高到第一位。对于核心交易系统,为了避免Message Queue的弱势,采用了简单、灵活的Multi-write来解决数据一致性的问题。

挖财从技术架构上来说,希望最终形成这样一套完全靠事件来触发的,以时间和数据为流向,充满弹性机制的Reactive(响应)系统。

作者:王福强,现任挖财首席架构师,原阿里资深架构师, 先后在阿里巴巴平台技术部及天猫产品技术部任职;6 年日本、欧美顶级金融机构信贷,外汇期货,债券交易平台产品规划,架构设计,开发运维;5 年阿里系浸淫大数据,搜索/推荐, 中间件, 实时数据计算与流计算等多个技术领域;1 年自由职业,平台研究及创作;cobarclient分布式数据访问层作者;《Spring揭秘》作者;Scala早期接受者与布道者。


挖财首席架构师王福强:架构设计中的6大关键点相关推荐

  1. 阿里P8架构师王福强大牛,[Spring boot揭秘]引领程序员成神之路

    前言: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...

  2. 【科创人上海行】扶墙老师王福强:架构师创业要突破思维局限,技术人创业的三种模式,健康第一...

    与上千位科技创业者共同关注科创人的成长心路. 那些曾经在圈内小有名气.被称为"老师"的技术前辈们,他们如何跨越人生转型的鸿沟?经历了多少曲折?如今过得如何? 左耳朵耗子.高春辉.王 ...

  3. 王福强:一名架构师的自我修养

    本文作者为王福强.先后在花旗.阿里等金融和互联网企业担任技术专家和资深架构师.老王与21CTO社区创始人杜江(洛逸)是前同事.他在Java领域不断深耕积粮,终成『砖家』.他将跟大家探(chui)讨(n ...

  4. 微软亚太研发集团高性能计算首席架构师徐明强访谈:我的成长启示录

    记者 / 陈秋歌 [caption id="attachment_4516" align="alignright" width="200" ...

  5. 王福强谈微服务:系统化考虑交付效率,掌握技术“手感”

    2014年由Martin Fowler与James Lewis共同提出微服务开始,伴随着以Docker为代表的容器的兴起,微服务+容器时不时被当作一组话题被架构师们提及,既然微服务和容器技术拥有令人兴 ...

  6. 1号店架构师王富平:一号店用户画像系统实践

    转载:https://blog.csdn.net/qiansg123/article/details/80121794 我先引用梵高的一句话:"我想强调的是,同一个人有多样的自画像.与其追求 ...

  7. 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值

    简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库解决方案架构师 王宏宇关于"云原生数据仓库AnalyticDB在零售行业的深度应用和业 ...

  8. 百度开放云首席架构师徐串:架构师对架构的理解

    百度开放云首席架构师徐串:架构师必须理解程序员的痛 时间 2016-05-18 13:19:49  CSDN 原文  http://geek.csdn.net/news/detail/74783 主题 ...

  9. .NET 高级架构师0003 架构师之路(2)---架构师的职责

    2 架构师的职责     近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎.我怀着无比崇敬的态度,拜读了一下牛人们的发言.里面有个哥们发起一个话题:"CTO, 你多久没有写程序了?&q ...

最新文章

  1. Udacity机器人软件工程师课程笔记(三十六) - GraphSLAM
  2. (十二)运行环境(加载、性能优化、安全)【这些会了,你就可以飞了】
  3. Beetlex之websocket/tls服务压测工具
  4. 在Linux中,用什么命令查看文件或目录的权限?
  5. ACDSee Photo Manager 12 中文绿色版
  6. 微处理器:50岁了!
  7. 成本管控难题怎么破?BI大神带你一步步拆解分析,节省成本390万
  8. linux装Oracle需要jdk,告诉你Ubuntu Linux下安装Oracle JDK的方法及命令
  9. 网易云音乐ios旧版本安装包_网易云音乐产品分析报告
  10. 淘宝高可伸缩高性能架构的相关框架介绍
  11. Python进阶-----类组合的方式完成授权
  12. DOS的一个小工具 LOIC
  13. 关于RSS的聚合---OPML
  14. linkinfo.dll病毒 盗取 用户登陆 网页帐号,和密码
  15. 注册微信小程序的操作步骤
  16. 解决Qt5.7.0 cannot find -lGL
  17. 客户端,从服务器上下载文件流程
  18. Flex 学习笔记之一:Flex 简介
  19. 由光声前向模型求取光声信号
  20. JPush(极光推送)实战总结

热门文章

  1. 在线招聘进入2.0时代:前程无忧、智联招聘已经进入死局?!
  2. IDEA 2019.3.4 使用教程
  3. 中国十大高薪职业出炉
  4. 【AGA三维路径规划】基于matlab自适应遗传算法单无人机三维路径规划【含Matlab源码 214期】
  5. 【路径规划】基于拓展随机树(RRT)算法的路径规划问题(Matlab代码实现)
  6. 循环链表的一个C++实现
  7. oracle 4535,记一次Oracle Clusterware安装成功后的故障处理
  8. 计算机毕业设计Java学生宿舍管理系统(源码+系统+mysql数据库+lw文档)
  9. GBase 8a优化建议
  10. Android集成友盟社会化分享