B2B2C商城的系统架构思考
一、总述
本方主要向你介绍思程Shop (SiC B2B2C Shop)的技术方案,帮助快速了解思程Shop的技术架构。
- 系统安全方案;
- 系统扩展方案;
- 系统性能指标;
- 技术架构蓝图;
- 集群部署图;
- 采用的技术框架;
- 高质量的代码;
二、系统安全方案
目标:构建安全的信息系统,保证用户数据安全,防止系统被黑客攻击。
安全特性 | 描述 |
---|---|
密码加强 |
使用sha1算法 + salt(盐) ,来防止碰撞猜出密码。 使用SystemService.entryptPassword()生成安全的密码,生成随机的16位salt并经过1024次 sha - 1 hash。 |
安全cookie |
使用HTTPonly状态的cookie,使js无法读出cookie,无法盗取cookie。 |
智能验证码 |
登录失败3次后,要求输入图片验证码。 |
权限验证 |
每一个方法都有服务端权限验证,无法绕过,保证数据安全。 |
表单验证 |
前端使用js做表单验证,用户体验好。 服务端再做一次相同逻辑的的表单验证,安全性高。 |
防止SQL注入 |
本系统可防止SQL注入攻击,保护数据安全。 |
防止XSS攻击 |
对文本框防止xss攻击,对于富文本编辑器防止xss攻击,保护数据安全。 |
属主检查 |
修改、删除数据时,做属主检查。防止跨会员删除数据 多用户平台,在删除记录时,要检查这条记录的主人是不是当前用户,是才可以删除,防止人为修改url中的ID参数删除其它用户的记录。 |
防止表单重复提交 |
网速较慢时,用户可以连续点击“保存”按钮:解决方案。1按钮变灰,2 使用token 按F5刷新页面会导致前面提交过的表单再一次提交,使用重定向来解决。 |
图片访问控制 |
普通图片,都是可以匿名访问的(如产品图片),只要知道图片的url,就可访问图片。 由于业务需要,系统接收了用户上传的身份证、营业执照的图片,这些图片需要保密,不能泄漏到互联网上。由图片访问控制来保证安全。 |
三、系统扩展方案
本系统采用高扩展性的技术架构方案,系统可扩展性强,为未来大数据量、大用户量,留出了扩展的空间。
应用服务器:可做集群部署。
缓存服务器:可做分布式部署。
搜索服务器:可做分布式部署。
图片存储服务器:可采用支持分布式存储的文件系统。
四、系统性能指标
目标:构建高性能的信息系统。
性能项 | 性能指标 |
---|---|
系统可承受会员量 | 100万 |
系统可承受商品量 | 500万 |
系统可承受日访问量 | 300万PV/天 |
PC端页面打开时间 | 低于2秒 |
并发压力(独立 IP) 同时在线人数 |
50000 |
注意:采用10台常规物理服务器(8核16G),并且分布式、集群部署。
五、技术架构蓝图
本架构蓝图,在技术方面,描述B2B2C的核心架构。读者可通过本图,对B2B2C商城架构有一个全貌的了解。便于更好的做开发工作。
|
应用层
前台Front:是商城的前台系统,主要用于展示商城首页、商品列表页、商品详情页。
会员中心Member:买家登录后进入会员中心,与当前买家购买相关的信息都在这里。
商家中心Seller:卖家登录后进入商家中心,与当前卖家开店销售相关的信息都在这里。
安全中sso:对会员(买家、卖家)账号的管理,实现单点登录功能。
管理后台Admin:商城平台管理员登录后进入管理后台,可管理整个商城。
静态资源Static:css\js\图标都在这里,前端的库(jquery\bootstrap)都在这里,便于管理,做CDN加速。
上传Uploader:接收上传来的图片,图片处理(缩图),后端接图片存储。做CDN加速。
领域服务
库存服务:计算商品的库存量,总库存=可销售库存+订单占用库存。
价格服务:计算商品的价格。
令牌服务:产生令牌、验证令牌。向uploader系统上传文件时、单点登录时,通过令牌验证合法性。
Cahce服务:为业务层提供Cache操作的能力,后端可对接多种缓存技术。
基础服务
略...
任务调试
结算任务:定时执行结算任务
统计任务:定时执行统计任务
定时任务:系统还有很多种业务的定时任务。
搜索
采用solr技术实现的搜索引擎,供业务系统调用,实现商品搜索(按关键字、按参数)、猜你喜欢、相似商品推荐、搜索建议。
图片处理
在用户访问时实时生成缩略图。
文件存储
本地存储:在单机部署时,使用本地文件系统来存储图片。
OSS云存储:可对接阿里云的OSS云存储,海量、高性能。
FastDFS:一种分布式文件存储系统。
MQ
是消息队列,实现削峰填谷抵挡突发流量,实现异步调用,实现可靠消息。
缓存
可对接多种缓存实现,当单机部署时使用Ehcache缓存,当分布式部署时使用Redis缓存。
数据库访问层DAL
通过DAL实现访问 Oracle\mysql\sqlserver数据库。完成实体关系映射。
数据库(读写分离)
面对大型系统时,使用读写分离技术,提供高性能的数据库能力。
外部接口
支付接口:对接支付宝、易宝支付
短信接口:对接多种外部的短信网关
邮件接口:对接多种外部的邮件通道
物流接口:查快递信息
公共设施
监控系统:使用外部成熟的监控系统,监控商城的硬件资源、系统可用性、系统响应时间。
日志收集:收集并分析日志
六、系统部署图
集群部署图
整个系统采购集群部署,避免出现单节点,保障系统的高可用性。
|
单节点简化部署图
最简化的单节点部署,用于便捷快速的完成部署,常用于开发环境。
|
七、采用的技术框架
八、高质量的代码
我团队十分注重编码规范,代码格式美观,结构优良,变量名见名知意,数据表结构合理,表名命名优雅。
请参考以下部分截图