项目简介
品优购网上商城是一个综合性的 B2B2C 平台,类似京东商城、天猫商城。网站采用商家入驻的模式,商家入驻平台提交申请,有平台进行资质审核,审核通过后,商家拥有独立的管理后台录入商品信息。商品经过平台审核后即可发布。
品优购网上商城主要分为网站前台、运营商后台、商家管理后台三个子系统。
网站前台
主要包括网站首页、商家首页、商品详细页、搜索页、会员中心、订单与支付相关页面、秒杀频道等。
运营商后台
是运营商的运营人员的管理后台。 主要包括商家审核、品牌管理、规格管理、模板管理、商品分类管理、商品审核、广告类型管理、广告管理、订单查询、商家结算等。
商家管理后台
入驻的商家进行管理的后台,主要功能是对商品的管理以及订单查询统计、资金结算等功能。
架构组合
品优购(B2B2C电商项目)采用前后端编程架构(前后端分离):
- Dubbox+SSM( back-end );
- angularJS+Bootstrap( front-end )
数据库表结构
|表名称|含义|
|tb_brand|品牌|
|tb_specification|规格|
|tb_specification_option|规格选项|
|tb_type_template|类型模板:用于关联品牌和规格|
|tb_item_cat|商品分类|
|tb_seller|商家|
|tb_goods|商品|
|tb_goods_desc|商品详情|
|tb_item|商品明细|
|tb_content|内容(广告)|
|tb_content_category|内容(广告)类型|
|tb_user|用户|
|tb_order|订单|
|tb_order_item|订单明细|
|tb_pay_log|支付日志|
|tb_address|地址|
|tb_area|行政区域县区信息|
|tb_city|行政区域地州市信息|
|tb_province|省份信息|
|tb_seckill_goods|秒杀商品|
|tb_seckill_order|秒杀商品订单|
|tb_freight_template|货运模板|
电商行业技术特点
- 技术新
- 技术范围广
- 分布式
- 高并发、集群、负载均衡、高可用
- 海量数据
- 业务复杂
- 系统安全
相关概念简述
什么是SOA架构
SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。其实SOA架构更多应用于互联网项目开发。
为什么互联网项目会采用SOA架构呢?随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,迫切需一个治理系统确保架构有条不紊的演进。
单机结构/单体结构
拿一个普通的商城小项目来举例子,这个项目有登陆、购物、货运等功能,这些功能统统在一个项目里,将这个项目部署到一台服务器上运行,这种属于单机结构。当这个项目的业务增长到一定程度,单机的硬件资源以及无法满足业务需求,这时就需要集群模式了。
这种单机结构的优点是开发简单、方便运行、易于调试/测试/部署。
缺点也很明显:
- 项目过于臃肿,维护成本大,出现bug难定位。
- 资源无法隔离:共享一个数据库,或者一块内存。如果一个功能模块突然访问量过大,可能影响整个系统的性能。
- 无法灵活扩展:单体系统也可以集群部署,但是不够灵活,我明明只是订单系统遇到了瓶颈,只需要将订单模块水平扩展就行,但现在要将整个系统水平扩展。不灵活!
- 交付周期长:所有功能得一起上线,一起构建,一起部署。任何一个环节出错,都可能影响交付。
集群结构
当单机的处理能力达到瓶颈,可以通过增加服务器的数量来提高业务能力,这些服务器就构成了集群。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,这样一来系统的处理能力就得到了相当程度的提升。
而由哪个节点来为用户提供服务呢?这就涉及到了负载均衡,通过负载均衡服务器来调节各个服务器节点的访问压力,避免某个节点由于负载压力过大而导致宕机。
集群结构的好处就是系统扩展非常容易,业务能力达到一个瓶颈了,那就再添加一个节点,当再继续添加节点也明显无法提升系统性能时,就需要考虑将系统升级为分布式架构了。
分布式架构
本项目使用的Dubbox就是一个分布式框架,分布式就是拆分功能模块,这些功能模块之间各自独立,分布在不同的服务器上来运行。这些功能模块各自都是一个独立运行的服务/子系统/子项目,可以通过RPC方式进行调用。
分布式的好处就是可以降低系统耦合度、分担访问压力、解决高并发带来的问题、提高复用性和扩展性等,其优点和单机结构的缺点是相对立的。
但是分布式架构也有缺点:
- 性能:分布式系统是跨进程,跨网络的,性能很收网络延迟和带宽的影响。
- 可靠性:由于高度依赖网络状况,任何一次远程调用都可以失败。随着服务的增多,还会出现更多的潜在故障点。
- 异步:引入各种中间件,异步通信大大增加了功能实现的复杂度。
- 数据一致性:分布式系统必然会有分布式事务的出现,这时对数据的一致性,需要在C(一致性)A(可用性)P(分区容错性)中做出选择。
- 运维成本:一个系统拆成了多个服务,每个服务都得配置,部署,监控,日志处理。
微服务架构
微服务一般都是分布式的,而微服务更强调敏捷和健壮,它的边界应该更加清晰,包括你部署的程序和数据都应该独立,这里可能借助docker。微服务架构各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合),其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行。
简单地理解,微服务比起分布式,其服务的粒度更细;分布式将服务部署到不同的机器上,而微服务可以将服务都部署在同一台机器上。
分布式:分散压力。
微服务:分散能力。
高可用性与高可靠性
可用性(Availability)和可靠性(Reliability)这两个概念和高并发有关。
什么是高并发?比如天猫双十一,一分钟有十个亿的交易额,在同一时间肯定会有很多人在进行同样的操作,请求同样的数据与服务,这就是高并发。并发量一高,就会产生各种各样的问题,比如服务器挂了,也就是所谓的宕机,而集群、分布式、微服务就是解决高并发的具体方案。
高可用就是在高并发的情况下,系统依然可以正常运行提供服务。对于电商企业,高可用是很重要的,假如天猫在双十一服务器宕机了,重启下服务器需要一分钟,那就直接没了十个亿–
可靠性和可用性概念很接近,简单来说,可靠性是一段时间内系统正常运行的概率,可用性是系统在提供服务的任意时刻能正常工作的概率。
要提高可靠性,可使用变更管理,UPS,RAID,Cluster,链路冗余等管理和技术手段减少系统Down机的可能性。要提高可用性,除提高可靠性外,还可以使用合理备份,业务连续性计划等方式来减少从灾难中恢复的时间。
数据库分片
电商企业需要存储海量数据,还是举天猫双十一的例子,一分钟十个亿的交易额,这么庞大的数量光靠一台服务器肯定是无法处理并存储的,可以通过对数据库进行分片,将数据存储到多台服务器上。
对于数据库的分表、分库、分片、分区,可以参考这篇文章:MySql从一窍不通到入门(五)Sharding:分表、分库、分片和分区
主要的电商模式
B2B–企业对企业
B2B ( Business to Business)是指进行电子商务交易的供需双方都是商家(或企业、公司),她(他)们使用了互联网的技术或各种商务网络平台,完成商务交易的过程。电子商务是现代 B2B marketing的一种具体主要的表现形式。
案例:阿里巴巴、慧聪网
C2C–个人对个人
C2C即 Customer(Consumer) to Customer(Consumer),意思就是消费者个人间的电子商务行为。比如一个消费者有一台电脑,通过网络进行交易,把它出售给另外一个消费者,此种交易类型就称为C2C电子商务。
案例:淘宝、易趣、瓜子二手车
B2C–企业对个人
B2C是Business-to-Customer的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业零售模式。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。
案例:唯品会、乐蜂网
C2B–个人对企业
C2B(Consumer to Business,即消费者到企业),是互联网经济时代新的商业模式。这一模式改变了原有生产者(企业和机构)和消费者的关系,是一种消费者贡献价值(Create Value), 企业和机构消费价值(Consume Value)。
C2B模式和我们熟知的供需模式(DSM, Demand Supply Model)恰恰相反,真正的C2B 应该先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产。通常情况为消费者根据自身需求定制产品和价格,或主动参与产品设计、生产和定价,产品、价格等彰显消费者的个性化需求,生产企业进行定制化生产。
案例:海尔商城、 尚品宅配
O2O–线上到线下
O2O即Online To Offline(在线离线/线上到线下),是指将线下的商务机会与互联网结合,让互联网成为线下交易的平台,这个概念最早来源于美国。O2O的概念非常广泛,既可涉及到线上,又可涉及到线下,可以通称为O2O。主流商业管理课程均对O2O这种新型的商业模式有所介绍及关注。
案例:美团、饿了吗
F2C–工厂到个人
F2C指的是Factory to customer,即从厂商到消费者的电子商务模式,从工厂到消费者之间无任何中间环节,即工厂直销。
B2B2C -企业-企业-个人
B2B2C是一种电子商务类型的网络购物商业模式,B是BUSINESS的简称,C是CUSTOMER的简称,第一个B指的是商品或服务的供应商,第二个B指的是从事电子商务的企业,C则是表示消费者。
第一个BUSINESS,并不仅仅局限于品牌供应商、影视制作公司和图书出版商,任何的商品供应商或服务供应商都能可以成为第一个BUSINESS;第二B是B2B2C模式的电子商务企业,通过统一的经营管理对商品和服务、消费者终端同时进行整合,是广大供应商和消费者之间的桥梁,为供应商和消费者提供优质的服务,是互联网电子商务服务供应商。C表示消费者,在第二个B构建的统一电子商务平台购物的消费者;
B2B2C的来源于目前的B2B、B2C模式的演变和完善,把B2C和C2C完美地结合起来,通过B2B2C模式的电子商务企业构建自己的物流供应链系统,提供统一的服务。
案例:京东商城、天猫商城
参考链接
- 集群和分布式 区别和优点
- 为什么要用分布式架构,又为什么要用微服务?
- 分布式服务架构与微服务架构概念的区别与联系是怎样的?
- 微服务和分布式的区别
- 可用性 Availability 和可靠性 Reliability
- 究竟啥才是互联网架构“高可用” “高并发” 学习笔记
- 品优购课程讲义