2017~回顾分享
# 关于后端架构设计
关注了大半年的微服务架构,现在感觉有些力不从心。IT行业的技术累积,需要时间和不断沉淀。
对于服务架构方面设计,这一年心路成长历程:
支付宝
先看看业内最强的支付宝系统,支付宝的支付系统整体架构设计
京东金融
来自京东支付平台总体架构设计
京东金融是在网银在线的基础上发展起来的。 网银在线的原班技术人员有不少来自易宝公司,在京东收购之后,又引入了支付宝的人才。因而从架构上受这两个公司的影响很大。
去哪儿
来自去哪儿公司分享的支付产品架构
支付系统从架构上来说,分为三层;
支撑层: 用来支持核心系统的基础软件包和基础设施, 包括运维监控系统、日志分析系统等。
核心层: 支付系统的核心模块,内部又分为两个部分: 支付核心模块以及支付服务模块。
产品层: 通过核心层提供的服务组合起来,对最终用户、商户、运营管理人员提供的系统。
支撑系统支撑系统是一个公司提供给支付系统运行的基础设施。 主要包括如下子系统:
运维监控: 支付系统在下运行过程中不可避免的会受到各种内部和外部的干扰,光纤被挖断、黑客攻击、数据库被误删、上线系统中有bug等等,运维人员必须在第一时间内对这些意外事件作出响应,又不能够一天24小时盯着。这就需要一个运维监控系统来协助完成。
日志分析: 日志是支付系统统计分析、运维监控的重要依据。公司需要提供基础设施来支持日志统一收集和分析。
短信平台: 短信在支付系统中有重要作用: 身份验证、安全登录、找回密码、以及报警监控,都需要短信的支持。
安全机制: 安全是支付的生命线。 SSL、证书系统、防刷接口等,都是支付的必要设施。
统计报表: 支付数据的可视化展示,是公司进行决策的基础。
远程连接管理、分布式计算、消息机制、全文检索、文件传输、数据存储、机器学习等,都是构建大型系统所必须的基础软件,这里不再一一详细介绍。
支付核心系统支付核心系统指用户执行支付的核心流程,包括:
用户从支付应用启动支付流程。
支付应用根据应用和用户选择的支付工具来调用对应的支付产品来执行支付。
支付路由根据支付工具、渠道费率、接口稳定性等因素选择合适的支付渠道来落地支付。
支付渠道调用银行、第三方支付等渠道提供的接口来执行支付操作,最终落地资金转移。
支付服务系统支持支付核心系统所提供的功能。服务系统又分为基础服务系统、资金系统、风控和信用系统。
基础服务系统提供支撑线上支付系统运行的基础业务功能:
客户信息管理:包括对用户、商户的实名身份、基本信息、协议的管理;
卡券管理: 对优惠券、代金券、折扣券的制作、发放、使用流程的管理;
支付通道管理: 通道接口、配置参数、费用、限额以及QOS的管理;
账户和账务系统: 管理账户信息以及交易流水、记账凭证等。这里的账务一般指对接线上系统的账务,采用单边账的记账方式。 内部账记录在会计核算系统中。
订单系统: 一般订单系统可以独立于业务系统来实现的。这里的订单,主要指支付订单。
资金系统指围绕财务会计而产生的后台资金核实、调度和管理的系统,包括:
会计核算: 提供会计科目、内部账务、试算平衡、日切、流水登记、核算和归档的功能。
资金管理: 管理公司在各个支付渠道的头寸,在余额不足时进行打款。 对第三方支付公司,还需要对备付金进行管理。
清算分润: 对于有分润需求的业务,还需要提供清分清算、对账处理和计费分润功能。
风控系统是支付系统必备的基础功能,所有的支付行为必须做风险评估并采取对应的措施;信用系统是在风控基础上发展的高级功能,京东的白条,蚂蚁花呗等,都是成功的案例。
支付应用支撑系统、核心系统和服务系统,在每个公司的架构上应该是大同小异的,都是必不可少的模块。而支付应用是每个公司根据自己的业务来构建的,各不相同。 总的来说,可以按照使用对象分为针对最终用户的应用、针对商户的应用、针对运营人员的运营管理、BI和风控后台。
# 关于前端和后端的区别
首先前端分为 UI设计,UED用户体验设计,前端开发等等,web前端开发用到的诸多技术(JavaScript,JQuery,TypeScript,Vue,Node,ReactNative,AngularJS,CSS3,HTML5,ES6等等)我们简称这些为 类库,像构建项目的脚手架有很多(yeoman,Gulp、webpack等等)
这么多成熟的技术框架基本取决于你的需求,好用的框架技术有很多,某些技术适合做某个模块的功能(比如HTMl适合做web页面设计,JS更能提高HTML的交互逻辑)。一般性来说前端更注重用户的视觉敏感度,其逻辑也相对于后端更加简洁清晰明了,如果有兴趣可以选择前端开发工作。
后端也就是所谓的网络编程,其原理很简单(通过前端交互数据来增加业务逻辑),其用到的最为广泛的(Java,PHP,Go,ASP,.Net,C++)等等,其中Java相对于其他编程语言更适合做后端开发,学习成本较低 思想深奥,有相应成熟的技术体系和成熟的开发团体,PHP属于脚本语言,经过几个版本的迭代,现在所占市场份额不亚于Java,不过在大型系统和强大的后端逻辑里面几乎很少见,不是在恶意贬低,其开发成本和运营成本远低于java,最后就是google推出的Go语言,我个人认为go更像java的衍生版,其内在优化了许多,现在也有相应的成熟团队,开发成本和运营成本也相对较低。C# 和 .Net在2000年左右还是现对于比较火的,包括现在的新浪,腾讯,百度,京东,等等知名的公司前身都是采用这些技术。阿里巴巴旗下的淘宝,最早采用的PHP,后面慢慢转向Java,包括前面提到的那些大公司。不过说这么多,腾讯是最为奇葩的一个,整个平台运营十几年,最早的 QQ空间竟然用CGI写的,比较注重C++ 这种古老的开发语言。不过C相对其他领域的编程语言更适合做底层交互。
说了这么多,其实java后端现在玩的东西较多,比如Maven,Redis,Echen,Spring等等,此处有机会慢慢分享
## 关于前端学习路线
基础篇:
【CSS3】 前端必学之路,起CSS3样式
【HTML5】 只需记住HTML标签和作用即可
【JavaScript】 作为浏览器脚本语言,必学
【JQuery】至今最为流行的开发类库,必学
JavaScript 设计模式 以下链接:http://www.cnblogs.com/chen-jie/p/JavaScript-Composite.html
最近带前端妹纸,感觉自己在技术钻研的程度上永远跟不上,大问题没有,小问题一堆,关于妹纸的想法有很多,在这里我就不隐瞒自己啦,或多或少的对妹纸有点倾慕之情,但是我已表露不出太多感情了,那种掏心掏肺的日子相信大家都有,也不会对妹纸太多的期待;只希望我能带她融入这个圈子,在这个看脸的社会为她增添一点硬实力,期待太多,失望越多,控制好自己的执念;有些时候执念这玩意儿给自己带来太多痛苦,原因都很简单 就是希望能得到,但是现实得不到的只能会给自己增添一份伤感和无情。