简述互联网背景下的金融和支付
最后更新于:2022-04-01 11:03:04
互联网金融,本质上是金融,互联网只是手段。金融是什么?资金融通,存款、贷款、证券,都是金融。
### 互联网金融为什么能火?
貌似从2013开始开火的,称之为互联网金融元年。民间借贷,借助于互联网这个工具,开始服务更多的人,满足各种人的借出接入需求。
对于lender来说,比银行的利息高,总比股市的风险小,所以,愿意借钱给资质高、信用好的互联网金融平台。
对于debtor来说,从银行借不到钱,而互联网金融的利息也比地下高利贷低,所以,愿意从任何利息较低的互联网金融平台借钱。
### 互联网金融的风险在哪里?
### 借方借钱不还
谁都怕这个不是。。遇到借钱不还的,特别是企业客户(也就是通常说的B端客户),一借几千万,到时还不出,引起资金链断裂,不能对lender按时履约,只能卷钱跑路了。
所以,和任何金融一样,互联网金融的核心也是风控,风险控制。
对B端的风控能力很难,手段也比较传统。
对C端的风控手段就比较多样,不会过分依赖传统手段(比如银行流水、工资记录、收入证明)等,可以从更互联网的方式进行信审,勾勒出一个人的信用情况。
有哪些手段呢?
曾经听过一个公司的公开讲座,大致罗列了如下方面:
基本情况:比如年龄、籍贯、职业、健康、社保情况
信用历史:过往信用账户还款记录及信用账户历史
行为偏好:在购物、缴费、转账、理财等活动中的偏好及稳定性
人脉关系:好友的身份特征以及跟好友互动程度
通过这些情况,勾勒出一个人的信用评分,决定是否给这个人贷款。
淘宝的“芝麻信用”评分,国外的FICO评分,都是干这个的。
同时,C端个人是多样的,可以有效的分散风险,所以很多互联网金融只作C端,不做B端。
### 贷方恶意挤兑
这个尚好,不像银行,有信用杠杆,有100块钱,利用信用杠杆,可以借出N个100块钱。
互联网金融是没有杠杆的,赚的只是借入借出的差价,很像电子商务,只是商品是钱。
只要利用合同控制贷方的行为,则基本没什么问题,比如:银行的T+1到账期限,不能让大额随借立提。
### 支撑互联网金融的系统有哪些?
**撮合**
把lender和debtor,直接撮合到一起。N <-----> N的形式。
**贷前管理**
lender及其借出款项的管理。
**贷后管理**
debtor及其借入款项、按期划款、催缴的管理。
**信用评估**
风险控制的手段。依靠信息收集和数据模型进行分析计算。
**支付中心**
所有款项的真实流转,记账,对账,都要走支付中心。
**资金托管**
资金托管,寓意是:“不能随便挪作他用,有监管了”,可以说是一种提高自身身价的手段。
**清算结算**
央行只管账户(比如,开个账户,日终时同步到央行即可),不通银行之间的清算结算,当前是被银联垄断的。2015-06-01,这个“银行卡清算”时长被放开,只要符合一定条件,具备一套符合央行标准的清结算系统,就可以进入这个市场,比如,支付宝就具备这个条件。
###支付中心
所有款项的真实流转,记账,对账,都要走支付中心。支付中心,最核心的工作,是一个对交易的“联机处理”的过程。
商户端通过其App发起交易请求开始,进入支付中心的OLTP环节,经过一系列的处理流程,比如:交易预处理、交易检查、风险控制、交易路由(走那个通道的规则)、计入最终的支付通道,支付完成后,记如账务系统。
在这个流转过程中,必须做到不出错,出一次错误,后果都是很严重的。特别是批量,可能就涉及个几百万的款项,难以追回。
### 最大的两个风险点
批量代付,付重:向客人追讨,是很麻烦的,甚至追不回来;这种情况是最危险的,客人本来就是取钱,说明需要钱,我们重复给他,他自然想千方百计推脱,先用着再说了。
批量收款,没有成功,通知客人成功:客人可能会赖着不还;这种情况还好一些,客人本来就是还钱,通过客服的手段,比较能说服客人重新还款。
### 针对风险点的风控手段
除了完整流程、状态控制之外,额外考虑两种最终的风控方法:
1、通过和通道的接口约定,能保证对于同一笔交易单号,可以验重,失败的可以多笔,成功只能有一笔,这是最完美的,能做到100%防重的一道关卡。
2、通道之后的风控手段:实时交易监控,这是一种事后的风控手段。
商业智能系统–公司运营、系统运行等的统计和分析
最后更新于:2022-04-01 11:03:02
### 开篇
商业智能系统,Business Intelligence,BI,数据中心,叫法各异,职责相同,以下统一称为BI系统。
BI负载对于公司的运营效果、系统的运行情况及改版效果,基于数据层面,进行比较客观的统计和分析,为高层管理人员对于公司运营、为产品部门对于网站的设计及改版或算法调整前后效果,提供参考及考量。
BI系统的职责是统计分析相关的,对数据的实时性要求不高,允许一天以上的数据延迟;对于和具体的业务密切相关的、或者实时性要求高的统计分析,则不应该放到BI系统,而是应该放在各自的业务支持系统中去。
BI系统是一个数据系统,用来帮助企业更好地利用数据提高决策质量的技术集合,是从大量的数据中钻取信息与知识的过程。简单讲就是业务、数据、数据价值应用的过程。基础的BI是统计分析,BI的进阶是决策支持,从“之前发生了什么,为什么会发生”,到“现在发生了什么,将来会发生什么”。
### 名词解释
BI:商业智能(Business Intelligence)
ETL: 提取、转换和加载(Extraction-Transformation-Loading)
ODS:操作型数据存储( Operational Data Storage )
DW:数据仓库(Data Warehouse)
DM: 数据集市 (Data Mar) 、 数据挖掘(Data Mining)
OLAP:联机分析处理(Online Analysis Process)
### 系统解决办法
(1)根据统计的需要,进行数据抽取,从业务系统数据库中,抽取到BI数据库
(a)、抽取的过程中,可能是每天定时、每小时定时、触发等方式,具体是要根据具体的场景
(b)、抽取的逻辑,要能保证重复抽取,比如某天数据出现问题时。。。
(c)、抽取的过程,可能涉及一些计算逻辑,比如对于毛利率的计算,需要商品的成本价,对于成本价的获取,可能就有一些逻辑
(d)、数据抽取的办法,可以引入能简化开发工作量的第三方框架,比如dataX
(2)数据收集
(a)、数据置标:根据业务的需要,一些数据需要置标,通过日志进行分析,或者把标记记录到数据库中,比如下单的:source、ref、pos
(b)、网站流量:插码或者分析日志,[http://blog.csdn.net/puma_dong/article/details/38943251#t12](http://blog.csdn.net/puma_dong/article/details/38943251#t12)
(c)、日志分析:收集用户访问路径,停留时间,退出页等
(3)结果呈现
(a)、使用好的JS框架图形化呈现BI报表,比如JQuery插件,但是不推荐ExtJS框架,太过于封装及学习成本的原因
(b)、短信提醒,重要结果的提醒
(4)公式定义
(a)BI的产品定义,对要展示数据内容的明确定义,比如毛利率公式、转化率等。
### 系统功能设置
呈现:
(1)实时数据报表
(2)订单售后相关报表
(3)商品库存相关报表
(4)渠道广告相关报表
(5)网站流量相关报表
数据:
(1)流量统计
(2)数据抽取中间件
### 待续
没有骨架就没有血肉,所谓皮之不存,毛将焉附,想到一点就写下来,后续补充。。。
订单管理系统–多种维度、多种渠道订单管理,自动化处理,及退换货处理
最后更新于:2022-04-01 11:02:59
### 界面
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d7384aab.jpg)
### 项目说明
订单中心,为网站下单提供接口,并基于多种维度提供订单查询,报表、导出功能。
关于订单的售后,放在“客服中心”系统中。
订单中心,负责处理订单流程,及与订单流程紧密相关的各种行为的支持。
所有市场、销售行为,最终目标都是带来订单。
市场行为中的各大网站广告,网站联盟,线下发卡行为 的效果,以及网站中点击各个位置下得单,都会记录在订单表的来源中,并在BI之类系统中进行统计,进行效果分析。
订单的下单方式,记录在订单类型字段中,用来标记是通过网站、手机等渠道下单的。
当前的订单来源,绝大多数都是来源于互联网,这也是互联网极大迅速发展的结果;电子商务之初不是这样的,开始的时候呼叫中心是最大的订单来源。
### 项目功能
计划实现的订单中心功能单元如下:
order-api-server:订单接口,对接其他系统
order-schedule:订单自动化处理任务,比如:转有效、转无效等
order-server:订单管理界面
订单中心相关IT功能的特点是:准确、实时性要求高,涉及的实时款项处理较多,涉及的业务逻辑较多,相对技术含量更少,这是个业务性更强的系统,当然,相对来说,后台相关的系统都是业务性强于技术性。
### 业务逻辑
分单:一般是按照库房+发货点/供应商进行分单,如果不分单,就要有库房之间的调拨,如何在客户体验和配送成本之间达到最佳平衡,是分单需要重点考虑的问题。
促销:各种各样的促销的伴随于订单流转中,下单就分摊到产品折扣中,利于后续的所有流程,因为促销是成本,会有各种核算,SVIP/VIP的折扣也归到这里来维护。
礼品卡/优惠劵:其实也是一种促销方式,其实际业务使用形式,各公司界定不相同。
抹零:方便配送上门收款,同时应尽量避免公司损失。
中间件:订单的自动化处理流程,例如各种根据库存的自动化处理,各种拦截及反拦截,流转过程中对用户友好而亲切的提醒。
中间件之对于于提高效率、减少成本非常关键,所谓“技术驱动”的公司,基本也反映在系统中各处中间件的强大程度吧。
### mybatis-generator
ORM框架采用MyBatis,为了提高开发效率,先根据数据库表单结构自动生成Model和MyBatis相关类,生成命令如下:
java -jar mybatis-generator-core-1.3.1.jar -configfile config_order.xml -overwrite
生成时需要把mybatis-generator-core-1.3.1.jar、mysql-connector-java-5.1.24-bin.jar、config_order.xml放到一个目录下,生成的相关类和XML会放置到CreateResult文件夹下面。
jar下载地址:http://pan.baidu.com/s/1qW98L0C
### 代码说明
前置项目:http://blog.csdn.net/puma_dong/article/details/12391479
最新源码:git clone git@github.com:pumadong/cl-purchase.git
### 问题
高并发场景如何占用库存,比如20台机器负载,在秒杀活动中,几秒可能会秒出上万商品。
推荐系统–揭开推荐的神秘面纱
最后更新于:2022-04-01 11:02:57
### 开篇
先推荐几篇关于推荐的文章,个人感觉对于入门很有实际意义,是IBM的工程师写的,如下:
[探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探](http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html)
[探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤](http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html)
[探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类](http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy3/index.html)
**推荐两本书,如下:**
项亮:《推荐系统实践》
蒋凡:《推荐系统》
### 推荐系统是什么
推荐,就是把你可能喜欢的商品,推到你的面前。构建一个推荐系统,就是构建如何把商品推到你面前的过程。
经常有人说,推荐就是算法,从某种角度来说,这未尝不对。但在接触推荐系统之前,我们还是先不研究算法,一说到算法,可能就以为很高深了,也很唬人,立马产生一种膜拜之感,也就变得神秘起来了。
对于我们没有多少推荐理论支撑的工程师,进入推荐,还是先求入门。我们不缺实践,先通过工作中的实践领会某种推荐方案,再求通过阅读书籍、学习算法加深领会和理解,进而通过不同的推荐方案,以及其效果的客观评估,提高水平和境界。
第一步,当我们真正完完整整的接触到推荐系统,达到一个入门级水平,可以独立构建一个千万级PV网站的推荐系统之后,可能基本的观点会是:
(1)推荐是一个整体的计算过程,在编码中,关于算法的部分所占的工作量可能1%都不到;
(2)每一种推荐方案的选择,都是一种整体的计算过程。
构建一个千万PV级别的推荐系统相对容易,一天的日志不过几百M,计算过程中的数据,单台机器的内存可以存下,当PV达到几亿几十亿时,就需要进行稍微复杂一点的分布式计算了;
推荐的计算方法很多,如何选择,效果难以预料,只有通过横向和纵向多做效果分析,才有意义。
随着理解的加深,境界的提升,知识的更多了解,认知也都会处于不断的调整中。。。
### 推荐的计算过程
### 计算的数据来源
Web访问日志、购买、收藏,这些实际是用户的行为数据;
用户,这是分析的基础数据;
商品,这是分析的基础数据;
### 计划日志的存储格式
如何标记同一个未登陆用户;如何找出未登陆用户和登陆用户是用一个人。
这是很重要的,这是以后日志分析计算的基础。
**示例如下:**
27.189.237.91 - - [27/Jun/2014:15:00:01 +0800] "GET 某个URL HTTP/1.1" 200 75 "前一个URL" "95907011.390482691.1402709325.1403851977.1403852394.7" "95907011.8a8a8aeb385a8c6b013860df24501310" [- - -] [image/webp,*/*;q=0.8] "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
以上Web日志URL,95907011.390482691.1402709325.1403851977.1403852394.7 和 95907011.8a8a8aeb385a8c6b013860df24501310 ,使用google analysis的js代码记录的,分别用来标记未登录用户的ID和登录用户的ID。
对于google analysis的js代码的用途,这里衍生一下,实际上,完全可以基于它建立第三方的流量分析系统,流程如下:
(1)需要统计流量的网站进行查码,用来记录cookie等,并触发到服务器端的请求(可以是去请求一个不存在的图片)
(2)当服务器端接收到请求后,会把Head里面的网站访问流量相关信息进行记录,服务器端的程序是一个简单的Servlet即可。
### 计算过程第一步
根据用户行为数据,分析出用户和商品的关系;用户<-->浏览、用户<-->购买、用户<-->收藏等。
### 计算过程的第二步
根据第一步计算的数据,分析中常用的推荐结果,比如根据浏览数据,计算出“看了又看”,根据购买数据,计算出“买了又买”等。
### 计算过程的算法(或者叫规则)
算法,是广义的,数学公式;规则,是小众的,公司自己定义的,复杂自己场景的业务规则,在计算过程的第二步,计算最终的推荐结果时,大部分使用的都是自行定义的业务规则。
以推荐“看了又看”为例,根据一个商品,如何推荐出其他商品呢:
可以就根据这个推荐类型的基本含义,一个商品 ---> 看了这个商品的很多人,又看了 ---> 很多的商品,这就是推荐结果了,但是这个推荐结果有非常非常多,如何推荐呢?
可以推荐购买次数最终的,推荐最新的,推荐两个商品的View人群最相似的......
### 推荐结果的接口提供
这就没有什么了,都是通用的。
### 推荐系统的核心
基于业务的,推荐效果的评价体系;
基于技术的,大数据量时的分布式计算
### 代码说明
**前置项目:**这个相关项目就比较多了,网站、商品、订单,都有相关性。
**最新源码:**git clone git@github.com:pumadong/cl-recommend.git 。
### 推荐的发展
大数据量计算、数据流实时计算、用户行为精准分析、用户聚簇细化、个性化推荐等。
可能更高级别的搜索推荐,还是需要搜索推荐理论的支撑,不同于实现层面的东西,这个可能存在境界层次方面的不同,认知了才知道。。。
### 日志分析扩展和流量统计
对于日志的分析,可以统计网站的流量,但是要过滤掉对JS/CSS/IMG等静态资源的URL,只保留真实有效的访问。
在一个页面的访问过程中,浏览器会向服务器发起很多个请求,把HTML/CSS/IMG/JS等都下载下来,解析成美观的页面,展现给访问者,在这个过程中其实会在NGINX等Web服务器中,记录很多行日志。
关于流量统计,也有很多采用插码的方式,插码这种方式,业界的代码标准是Google的GA,插码的好处是可以统计记录更多信息(超出日志),可以自定义很多事件,收集更多信息。
当前google由于特殊原因国内不能直接访问,但是对于ga代码的统计是没有问题的,访问地址是:http://www.google-analytics.com/ga.js。
比较日志分析和插码两种方式,日志分析是有访问就记录日志,此时页面可能没展示完成访问者就关闭了;插码这种方式,只有执行到插入的JS代码的时候,才会记录流星;也就是前一种强调来过,后一种强调有效访问。
日志分析这种流量分析方式,需要过滤掉爬虫的IP地址;而插码就不需要,因为爬虫只会爬页面内容,并不会执行JS,JS的执行实际是浏览器的JS引擎帮我们做的。
另外,对于第三方的流量分析,则必须是插码,不可能使用日志分析。
官方网址:[https://support.google.com/analytics](https://support.google.com/analytics) 。
搜索系统–基于Solr4.9.0的实现
最后更新于:2022-04-01 11:02:55
### 为什么需要搜索系统
随着商品数量的增长、以及复杂检索的需求,直接从数据库中检索信息,已经不能满足展示机搜索的需求。 比如:
[http://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C&enc=utf-8](http://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C&enc=utf-8)
[http://www.yougou.com/sr/searchKey.sc?keyword=%E5%A5%B3%E9%9E%8B%E5%A4%A9%E7%BE%8E%E6%84%8F](http://www.yougou.com/sr/searchKey.sc?keyword=%E5%A5%B3%E9%9E%8B%E5%A4%A9%E7%BE%8E%E6%84%8F)
这个时候就需要引入搜索系统。
搜索系统当前最常用的框架有:Solr、ElasticSearch,他们都是基于Lucene构建的。
本文演示的搜索系统,使用的框架是:Solr4.9.0,关于Solr框架的使用,可以参阅站点:
[http://lucene.apache.org/solr/](http://lucene.apache.org/solr/)
[http://blog.csdn.net/puma_dong/article/details/38880699](http://blog.csdn.net/puma_dong/article/details/38880699)
补充个概念,倒排索引,我们理解搜索系统的索引是怎么建立的,但是,为什么叫倒排索引呢?[http://www.zhihu.com/question/23202010/answer/23901671](http://www.zhihu.com/question/23202010/answer/23901671)
### 系统说明
### 基本信息
演示对商品信息的全量索引建立、主从配置以及搜索的Dubbo接口提供;
对Solr做了入门型的说明,基本满足基于Solr的搜索的日常应用,对于更多Solr的参数设置,深入研究需要在实践中不断总结进步。
**关于索引,基本内容大致包含如下:**
商品(编码,款号、名称、价格、尺码编号、尺码名称、颜色、价格、折扣、图片链接、销量);
分类(名称、别名、编码、拼音名称);
品牌(编码、中英文名称、别名、拼音名称、首字母拼音名称);
商品的属性项目(属性值);
以及一些用来排序的信息:销量、价格、折扣等;
对于品牌分类等,需要同时记录英文名称;
索引还需要一些管理控制功能,比如脏词屏蔽、扩展词库等;
为了提高建立索引的效率,可能还需要对一些中间结果进行计算,比如:商品的2周销售数量;
注:关于分类的别名、品牌的别名之类,不建议在搜索系统中单独为,建议提需求给商品管理系统。
本项目仅仅是演示的雏形,流程是可用的,单没有完整的信息完整的索引创建、索引接口、及管理控制功能,这个留待以后是否有足够的业余时间。
索引建立的运行方式如下:crontab */10 * * * * /usr/local/cl/create_index.sh &。
### 技术框架
在索引建立项目中,没有使用任何框架,使用最基础的JDK编码,定时任务方式采用crontab,任务流程控制采用linux shell命令。
索引查询接口项目中,依旧是采用dubbo提供接口。
客户端使用Solrj。
中文分词使用IK Analyzer 2012FF_hfl。
### 代码说明
**前置项目:**[http://blog.csdn.net/puma_dong/article/details/9854899](http://blog.csdn.net/puma_dong/article/details/9854899)
**最新源码:**git clone git@github.com:pumadong/cl-search.git 。
图片管理系统–CDN源站图片管理
最后更新于:2022-04-01 11:02:53
### 图片管理系统界面
### 图片浏览
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d73429bd.jpg)
### 图片上传
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d7365de9.jpg)
### 系统说明
这是Java开发的跨域的图片上传、图片删除解决办法;
提供针对商品的图片管理功能:浏览、切图、删除、上传;
这个系统仅仅进行图片在服务器硬盘的相关操作,除了认证、授权之外,和其他系统完全独立;
对于图片上传、图片删除是没有权限控制的;对于5个图片管理功能演示,使用Jasig CAS进行单点登录;
这个系统的目的是部署在作为CDN源站得图片服务器上,管理图片,主要是作为商品系统的图片管理的服务器端。
### 代码说明
**前置项目:**http://blog.csdn.net/puma_dong/article/details/12391479
**最新源码:**git clone git@github.com:pumadong/cl-picture.git 。
权限管理系统–Bootstrap框架/JasigCAS单点登录/Dubbo接口授权
最后更新于:2022-04-01 11:02:50
### 权限管理系统界面
### 部门管理
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d730b8e2.jpg)
### 角色管理
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d7324be2.jpg)
### 开发语言及技术框架
**后台:**Java、MySQL、Dubbo、Spring、SpringMVC、MyBatis、Redis、JasigCAS
**前台:**Bootstrap、Jquery(jsTree、jquery.validate、DataTables、Bootstrap Modals、jquery-multi-select )
### 系统特点
1、基于角色的管理,账户不进行单独的权限设置,只通过赋予账户多个角色进行授权。
2、一个权限实际就是一个菜单,通过账户具有的权限,控制对于账户显示哪些菜单。
3、认证和授权分为两个部分:认证是使用JasigCAS实现单点登录,授权是通过Dubbo接口提供。
将来会继续开发对于功能点的权限管理,以及登录日志模块。
关于系统的更多说明,请参阅这里:[https://github.com/pumadong/cl-privilege](https://github.com/pumadong/cl-privilege)
### 代码说明
这已经是第三个版本,放弃了Thrift这个通讯框架,改用Dubbo;对于界面,采用MetroNic这套基于BootStrap和JQuery框架的模板。
**最新源码:**git clone git@github.com:pumadong/cl-privilege.git 。
### 关于Thrift和Dubbo的比较
1、性能方面:Socket>Thrift>Dubbo>Hessian>WebService
2、易用性方面:Dubbo是一个完整的服务治理框架,本身通过Zookeeper提供负载,通过Netty进行基础通讯,易用、管理配置都方便
3、开发效率:Dubbo=WebService=Hessian > Thrift > Socket
Thrift:[http://thrift.apache.org/](http://thrift.apache.org/)
DUBBO:[http://alibaba.github.io/dubbo-doc-static/Home-zh.htm](http://alibaba.github.io/dubbo-doc-static/Home-zh.htm)[](http://code.alibabatech.com/wiki/display/dubbo/Home-zh)
商品管理系统–分类、品牌、属性、商品、价格、图片管理
最后更新于:2022-04-01 11:02:48
# 商品管理系统界面
### 分类管理
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-07_57060d72e1d74.jpg)
# 系统说明
本系统当前没有实现所有的功能,而是描述了实现思路,设计了主要功能和流程,设计了系统框架,并简要演示了几个功能;可以方便在这个系统基础上进行开发完善即可。后续的功能也会逐渐开发完善。
本系统的开发过程中,为了提高工作效率,使用MyBatisGenerator自动生成最初始的Model、Mapper类及Mapper.Xml,完成最基本的增、删、改、查功能,然后再此基础上进行加工 。
# 业务知识
### 概述
商品中心,是一个核心系统,会和其他系统都有交集,比如:网站、订单、采购、仓储、配送...,所以独立出来,做一个单独的商品中心,有人负责,还是很有必要的。
商品状态:1.新建(待进货)、2.待售(入库后)、3.上架(在售)、4.下架(停售),将来有审核的话用-状态
### 术语
款号:style,一个系列,一般都是供应商或者生产厂家进行编码并提供;
款色编码:供应商或生产厂家对某个系列下某个颜色商品的编码;到色的,级别对应的是系统的商品编码;
商品编码:系统按照一定的规则,对商品进行的规律性更强的编码,这个系统使用8-10位数字;
货品编码:我们把到尺码的商品,定义为货品,这个系统对货品的编码采取商品编码+3位数字的方式;
### 分类和属性绑定
分类和属性绑定,必须先绑定属性项,再绑定属性值,绑定属性项时,必须设置属性的规则(比如是否多远,是否必填,是否网站显示),即这些规则限制都是跟着分类走的;
规则限制以后的行为,不限制既存的数据:比如把一个属性项修改成必填,不代表要把过去的数据都设成必填。
### 数据批量导入
数据的批量导入,比如商品货品批量进入,批量调价等,本系统不使用Excel,建议使用页面上的表格,并间隔时间自动保存,存储格式为JSON,可以多次编辑进行导入。
### 商品标题是否可变
系统本身不做任何限制,但原则上业务会少改动;
### 商品价格
商品表里面会有成本价、卖价、市场价,并随着各种因素调整,支持着商品的销售;
订单里面记录成交价;
采购单里面记录成本价;
一个商品可以对应很多的订单,也可以对应很多采购单。
### 商品的属性项、属性值
对于商品,进行属性项、属性值的维护,目的是可以基于此建立搜索系统,消费者可以基于这些属性项、属性值检索,更准确找到和自己需求匹配的商品
# 代码说明
**前置项目:**http://blog.csdn.net/puma_dong/article/details/12391479
**最新源码:**git clone git@github.com:pumadong/cl-commodity.git
电子商务IT系统-系统框架、机器框架及人员构成
最后更新于:2022-04-01 11:02:46
### 框架选择
### Windows还是Linux
Windows生态相对简单易用,对开发、运维要求较低,可以满足大中型应用;费用不菲,1台机器的授权费用,Windows Server是万级,SqlServer是10万级;
Linux生态框架甚多,学习成本较高,开发、运维要求较高,可以满足大中型、及超大型应用;完全开源免费。
技术上讲一点,比如应用容器:
在Windows下,基本就是使用IIS了,Apache、Nginx 之类基本不适用;IIS 主要使用UI配置;
在Linux下,则一般用 Nginx 作为Web容器,及反向代理;用Tomcat/Jetty之类作为Java容器;使用 web.xml 作为主要的配置文件。
用了 Linux+java 生态,可以逐渐掌握技术的细节,而Windows生态,技术上的进步要慢一些、困难一些。
### CS还是BS
CS有其固有的优势,比如:开发效率会高:做个界面,弄个事件啥的都很快,可以有本地缓存,可以有客户端的多线程处理;
缺点是软件的升级维护相对麻烦;
由于Windows在桌面上的绝对垄断地位,以及Visual Studio开发桌面程序的效率,当前,CS开发基本都是使用.Net框架。
考虑到软件的升级维护,及长远的可扩展性,BS是更好的选择。
场景:
1、基于WindowsCE系列的PDA设备(仓储的手持设备),仓储的打包台部分(性能效率要求极高时);
2、频繁Excel处理的小工具,其实这个可以考虑用Web上的表格输入来实现;
3、其他场景,建议全部是BS。
### 开发语言
这个实在讨论的太多了。
.net开发人员众多,微软紧密集成,服务器基本就是windows了,数据库也基本是sqlserver了;
java开发人员也是众多,框架众多,对架构、运维要求都更高,否则易出问题,服务器基本是linux,数据库基本是oracle,mysql;
ruby on rails,据说开发web快,也有新锐者使用了;
根据公司实际情况选择吧;中小可以.Net,大中小都可以java。
这个选择还有个成本考虑,微软的服务器产品全部都是要钱的:Windows Server上万,SqlServer 上10万;linux系列的产品都是开源免费的,但是人力资本相对就高些。
### SOA框架及系统拆分
SOA框架实际是一种开发方式,让人专注于自己最熟悉的一块,不同系统之间发生的业务交叉,全部采用接口的方式提供,其最大的好处:
是非常有利于系统的性能提升,可以更方便的分库;
专注也能更利于优化和提升;
缺点是我们用不了以前那种查询所有的业务表,用一个大事务来保证一起执行的开发方式了,我们必须对系统的异常情况考虑更多,对关键业务的失败要做回滚处理,编码更多了;
对于大型系统来说,SOA是必然的选择;
对于小系统来说,为了快速开发,开始可能都是单库、查表;随着业务的发展,数据的增大,不可避免的要重构,要分库。
一般公司的框架发展过程(Linux/Java/MySql):
1、系统初创阶段,一般不给我们好好系统设计的时间,很多着急上线,经常会选择最快的方式而忽略系统架构,如果不能选择,这个阶段必须考虑以下部分:MVC、ORM(不要用Hibernate);这个阶段一定不要把需求做庞大,先做主干流程,先上线,后丰满;先出成果起到激励作用,否则迁延日久,士气怠矣。
2、快速发展阶段,拆系统,大约10块,指的是系统个数,不是行政组:
[权限管理系统](http://blog.csdn.net/puma_dong/article/details/12391479)
网站:网站(CMS)
销售中心:[销(订单、促销、退换货、分销)](http://blog.csdn.net/puma_dong/article/details/39272243)
采购中心:[采购管理系统](http://blog.csdn.net/puma_dong/article/details/39013635)
仓储中心:仓储管理系统
用户中心:[会员系统](http://blog.csdn.net/puma_dong/article/details/39505955)、[客服系统](http://blog.csdn.net/puma_dong/article/details/39506157)
商品中心:[商品管理系统](http://blog.csdn.net/puma_dong/article/details/9854899)、[图片管理系统](http://blog.csdn.net/puma_dong/article/details/16835677)
财务中心:结算、收付
搜索推荐:[搜索系统](http://blog.csdn.net/puma_dong/article/details/38942777)、[推荐系统](http://blog.csdn.net/puma_dong/article/details/38943251)
商业智能系统:数据统计分析
3、快速发展阶段,拆服务、加缓存:
各个系统之间数据交换尽量服务化,减少直接的查询本业务之外的数据。引入Dubbo、RabbitMQ、Redis等框架
4、快速发展阶段,拆数据库:
各业务系统数据库完全独立,除了MySql的主从同步之外,引入Otter框架用于数据复制。
5、经过以上的过程,达到完全的SOA化,但是这个过程的演进,实际是多花了非常非常多的时间,2倍?3倍?如果条件允许,尽量还是直接基于SOA框架进行开发,只要框架做好了,仅仅是编码工作而已,最初的开发工作量实际上和那种”原始的、所有系统、数据库都在一起的,唯速度考虑的编程方式“,不会增加很多,但是后期的好处及长远考虑,是值得的。因为,从长远来看,SOA是必须的。
有两篇文章很好,如下:
[http://javatar.iteye.com/blog/1329022](http://javatar.iteye.com/blog/1329022)
[http://javatar.iteye.com/blog/1345073](http://javatar.iteye.com/blog/1345073)
### 是否要读写分离
读写分离对于减小数据库压力是很有帮助的,原则上select只要能访问从库的就一定不要访问主库,因为从库是可以无限扩展的,而主库不容易扩展。
但是主从访问的方式是个选择性问题:
有的给软件开发者一定的自由决定,是连接主库还是从库,这导致了很多不必要的主库连接;
有的公司采取一刀切的方式,统一采用ameba,corba之类的系统连接数据库,只要是select,全部去了从库;这种方式,在一些写完马上查的地方,很容易发生“主从问题”,对代码要求严谨一些;
所以,这是个选择性问题,根据业务场景进行具体的选择,很多场景中:使用主库+缓存的模式,可以很好的解决问题。
### 千万PV需要的服务器规模估计
### 业务系统
| 用途 | 系统 | 物理机数量 | 虚拟机数量 | 备注 |
|-----|-----|-----|-----|-----|
| 网站中心 | 网站主站 | 10 | 0 | |
| | 网站后台 | 0 | 2 | |
| 订单中心 | 网站购物流程 | 0 | 0 | 包含在网站主站之内 |
| | 订单接口 | 3 | 0 | |
| 用户中心 | 网站会员中心 | 0 | 0 | 包含在网站主站之内 |
| | 用户接口 | 2 | 0 | |
| 商品中心 | 商品管理系统 | 0 | 2 | |
| | 图片管理系统及CDN源站 | 1 | 0 | |
| 采购中心 | 采购管理系统 | 0 | 2 | |
| | 采购接口 | 0 | 2 | |
| 仓储中心 | 仓储系统 | 0 | 2 | |
| | 配送系统 | 0 | 2 | |
| | 仓储配送接口 | 3 | 0 | 库存可以通过结构调整记录到商品表中,这里指的是为内部系统提供的接口 |
| 结算中心 | 结算管理系统 | 0 | 2 | |
| 客服中心 | 客服管理系统 | 0 | 2 | |
| 分销中心 | 网盟管理系统 | 0 | 0 | 前期暂缓 |
| 商家中心 | 招商管理系统 | 0 | 0 | 前期暂缓 |
| 搜索 | 搜索推荐系统 | 6 | 0 | 前期可以现有搜索系统,中后期再开发推荐 |
| 机器冗余 | | 1 | 0 | 冗余备用的机器1-2台 |
合计:29台物理机,16台虚拟机。
### 架构支撑
| 用途 | 系统 | 物理机数量 | 虚拟机数量 | 备注 |
|-----|-----|-----|-----|-----|
| Dubbo | Zookeeper集群 | 3 | 0 | |
| 消息 | RabbitMQ高可用 | 2 | 0 | |
| 缓存 | Redis高可用集群 | 2 | 0 | |
| 负载 | HAProxy/LVS | 3 | 0 | |
合计:10台物理机,0台虚拟机。
### 总结
1、系统是UI,接口逻辑,系统要满足的基本是静态PV,要求的是IO能力,不是CPU和内存,接口计算任务会多,要求CPU和内存;压力一般都在接口和数据库;
2、数据库按照业务系统的50%计算,4台虚拟机需要1台物理机计算,总计约需要60台服务器;
3、真实案例:Windows+MSSQL,支撑1000万PV,有人用过约120-150台R410/710服务器,个人感觉比较浪费;
4、我的估算和上面这个真实案例差别很大,实践中,可以根据实际情况,酌情增减;
5、针对3的真实案例,如果全用正版,仅license一项,就要花费几百万费用,才仅仅是一个千万PV的规模;
6、初期就安装SOA框架开发,相对于系统上规模再拆分,可以节省非常多的时间,架构做好了,开发效率并不低,而且,随着系统更大,非常容易扩展;
7、对于初期,可以先按照1/5规模,约12台,上线,逐步扩充。
### 服务器型号
| Dell服务器 | 档次 | 价格 |
|-----|-----|-----|
| 410/420系列 | 低端 | 1-2W |
| 710/720系列 | 中端 | 2-6W |
| 910系列 | 高端 | 6-~W |
Dell官网:http://www.dell.com.cn
### 人员构成
这里不考虑运维、产品、项目、测试部门,只描述研发部门。
### 1、角色定义
技术总监:资深的技术研发管理者,深厚的技术及业务功底;也有公司在这个职位上的人完全不懂技术,可能是产品总监、项目总监暂代。
架构师:技术框架的制定者,技术路线的倡导者,负责解决研发中框架相关的问题。
研发经理:经验丰富的工程师,业务功底,协调能力。
高级工程师:经验丰富的工程师,疑难技术问题的解决者。
工程师:自行协调、并解决问题的人。
初级工程师:能在帮助下解决问题的人。
### 2、人员构成
总监:1
架构师:2
经理:6-8
高级工程师:12-16
工程师:18-24
初级工程师:6-8
总计:五、六十人的规模
### 3、人员素质
不断学习的进取心、及悟性;
隐忍坚持、协作性好;
胜任职位的技术功底;
其实,我个人认为,人员的素质,其实指的是人员的工作素质,和公司本身的文化是非常相关的,甚至可以说,是公司的文化,塑造了职员在这个公司的工作素质。
### 电商IT系统介绍
[1、权限管理系统](http://blog.csdn.net/puma_dong/article/details/12391479)
[2、图片管理系统](http://blog.csdn.net/puma_dong/article/details/16835677)
[3、商品管理系统](http://blog.csdn.net/puma_dong/article/details/9854899)
[4、采购管理系统](http://blog.csdn.net/puma_dong/article/details/39013635)
[5、搜索系统](http://blog.csdn.net/puma_dong/article/details/38942777)
[6、推荐系统](http://blog.csdn.net/puma_dong/article/details/38943251)
[7、订单管理系统](http://blog.csdn.net/puma_dong/article/details/39272243)
[8、客服管理系统](http://blog.csdn.net/puma_dong/article/details/39506157)
[9、会员管理系统](http://blog.csdn.net/puma_dong/article/details/39505955)
[10、商业智能系统](http://blog.csdn.net/puma_dong/article/details/41546423)
以上系统并未完全实现,有些仅仅是功能设想和简单列表功能实现,需要在实际的生产过程中逐渐来补充,抛砖引玉,仅供参考。
电子商务(B2C)IT系统–综述
最后更新于:2022-04-01 11:02:43
### IT系统
### 商品中心
这是最基础的业务系统,和所有其他系统的关联最紧密。
这个系统主要会管理如下内容:
分类、品牌、商品(基本信息、价格信息、图片信息、属性信息)
### 采购中心
买断方式的运营方式中,需要采购管理系统的支持。
这个系统主要会管理如下内容:
合同、采购单、发货单。关于采购的结算管理(押款、预付款、对账单、付款、发票)等,有放在采购中心的,也有放在财务中心的,我个人感觉放在财务中似乎更合适,这样一来,采购中心相对就比较简单了。
### 招商中心
联营方式的运营方式中,需要招商管理系统的支持。
这个系统主要就是一个UI,供应商使用这个系统的过程中,会调用其他系统的接口,控制联营商品的流转。会涉及的相关系统会有:商品中心、订单中心、结算中心等。
### 仓储中心
仓储管理系统,负责在商品的“六进六出”过程中,保证库存在仓库、货位的准确。
六进六出指的是:采购返厂、订单退订、借出返还、调拨、盘盈盘亏、正残转换。
主要的功能大致如下:
基本功能(仓库、货位、条形码),六进六出的单据明细管理,预警功能,报表查询功能。
仓储的研发中,为了保证操作的高效可用,有两个地方建议做成CS的,打包台使用的打包、分拣、出库部分;仓库日常操作使用手持设备。
### 订单中心
订单管理系统,负责订单的流转过程。主要功能大致如下:
订单生成(分单逻辑、促销逻辑)、订单修改、订单退换货。
### 会员中心
会员部分,主要是指的网站的会员中心,以及为客户系统提供关于会员的接口。主要功能大致如下:
会员注册、会员管理(信息、级别、积分)
### 客服中心
个人感觉,应该最大限度的缩小这个系统的功能。
不要代客下单,售后服务也尽量引导用户在网站自行完成。
关于这个系统本身,主要提供的功能:订单查询、修改;退换货办理。
### 网站中心(CMS)
网站系统,直面消费者的终端。主要指:首页、频道页、专题页、单品页、活动页(促销)的展示,及其后台管理,也可称之为CMS。
### 搜索推荐
搜索系统:是基于搜索框架的商品索引建立及复杂查询接口提供,目的是方便检索。
推荐系统:是基于商品信息、用户行为的关联商品推荐,目的是相关性强的推荐商品,提高订单转化率。
### 分销中心
网站联盟、市场活动等分销、广告活动的管理。
### 结算中心
采购返厂的结算、联盟佣金的结算,一切和资金流转相关的系统都在这里。
### 数据中心
或者叫商业智能中心,BI系统,是一个数据系统,从各种维度(比如销售、退换、渠道、广告、流量等)统计分析当前网站的运行状况,并对网站的发展进行一定程度的预测。
### 研发行政组
网站组:网站中心(CMS)、会员中心、分销中心
商品组:商品中心、采购中心、招商中心
仓储组:仓储中心
订单组:订单中心、客服中心
搜索组:搜索推荐、网站的搜索频道(比如search.jd.com)
财务组:结算中心
相对来说,前台相关的,技术更多一些;后台相关的,业务更多一些。总的来说,研发是要懂业务,不懂业务,在很多情况下,就不敢改代码。
研发组,加上架构、DBA、运维、测试,也就是一个技术部了。
前言
最后更新于:2022-04-01 11:02:41
> 原文出处:[电商系统](http://blog.csdn.net/column/details/b2c-it.html)
作者:[puma_dong](http://blog.csdn.net/puma_dong)
**本系列文章经作者授权在看云整理发布,未经作者允许,请勿转载!**
# 电商系统
> 介绍电子商务,特别是B2C相关的业务支撑系统,希望能对电商IT系统的开发,起到一点点的借鉴作用。