青橙商城
2019-09-18 10:31:23 0 举报
AI智能生成
项目整理
作者其他创作
大纲/内容
青橙商城技术选型
主框架技术
SSM(Mapper)+Dubbo
前端技术
网站后台 : Vue.js+ElementUI
网站前台: 采用Vue.js 和模板技术 thymeleaf
网站前台: 采用Vue.js 和模板技术 thymeleaf
消息中间件技术
RabbitMQ
搜索中间件技术
elasticsearch
缓存中间件技术
redis
报表插件
echars
安全框架
SpringSecurity
单点登录中间件
CAS
青橙商城系统架构图
用户中心
支付服务
订单服务
用户服务
网站前台
支付服务
订单服务
用户服务
商品服务
运营服务
系统服务
管理后台
订单服务
用户服务
商品服务
运营服务
系统服务
短信服务
青橙各模块依赖关系图
父公共模块
common
common
服务公共模块
common_service
common_service
商品服务模块
service_goods
service_goods
订单服务模块
service_order
service_order
....服务模块
service_xxx
service_xxx
服务公共模块:
dao配置,
redis Template配置,
dubbo服务提供者公共配置,
雪花算法工具类,
存储redis的key的枚举类
dao配置,
redis Template配置,
dubbo服务提供者公共配置,
雪花算法工具类,
存储redis的key的枚举类
interface
dubbo服务提供者和服务消费者都需要使用公共的接口
pojo
实体类
web公共模块
common_web
common_web
管理后台模块
web_manager
web_manager
CAS公共模块
web_CAS
web_CAS
前台主流程模块
web_portal
web_portal
前台用户中心模块
web_center
web_center
cas公共模块:
cas公共配置,
UserDetailsService(授权类,如果不适用cas,那么这个就是登录认证类,需要访问数据库),
LoginController接收异步请求返回用户名
cas公共配置,
UserDetailsService(授权类,如果不适用cas,那么这个就是登录认证类,需要访问数据库),
LoginController接收异步请求返回用户名
web公共模块:
dubbo消费者公共配置,
springMVC相关配置,
json转换器,
文件上传解析器,
阿里云oss
,task定时任务开启,
统一异常处理类
dubbo消费者公共配置,
springMVC相关配置,
json转换器,
文件上传解析器,
阿里云oss
,task定时任务开启,
统一异常处理类
父公共模块:
提供加载所有
properties文件的配置,
工具类,
zk地址
提供加载所有
properties文件的配置,
工具类,
zk地址
后台管理
品牌管理与上传
模板与分类管理
商品后台管理后台逻辑
数据库分片
如今随着互联网的发展,数据的量级也是呈指数的增长,从GB到TB到PB。
对数据的 各种操作也是愈加的困难,如何解决这个问题呢?
此时就需要做数据库集群,为了提高 查询性能将一个数据库的数据分散到不同的数据库中存储,这就是我们通常所说的数据 库分片。
对数据的 各种操作也是愈加的困难,如何解决这个问题呢?
此时就需要做数据库集群,为了提高 查询性能将一个数据库的数据分散到不同的数据库中存储,这就是我们通常所说的数据 库分片。
如何实现数据库分片?
我们通常会使用mycat数据库中间件来解决。
我们通常会使用mycat数据库中间件来解决。
分布式ID生成解决方案
UUID
优点:
1)简单,代码方便。
2)生成ID性能非常好,基本不会有性能问题。
3)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应 对。
1)简单,代码方便。
2)生成ID性能非常好,基本不会有性能问题。
3)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应 对。
缺点:
1)没有排序,无法保证趋势递增。
2)UUID往往是使用字符串存储,查询的效率比较低。
3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。
4)传输数据量大
5)不可读。
1)没有排序,无法保证趋势递增。
2)UUID往往是使用字符串存储,查询的效率比较低。
3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。
4)传输数据量大
5)不可读。
常见的方式。可以利用数据库也可以利用程序生成,一般来说全球唯一。
Redis生成ID
解决:
当使用数据库来生成ID性能不够要求的时候,
我们可以尝试使用Redis来生成ID。
这主要 依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。
可以用Redis的原子操作 INCR和INCRBY来实现。
当使用数据库来生成ID性能不够要求的时候,
我们可以尝试使用Redis来生成ID。
这主要 依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。
可以用Redis的原子操作 INCR和INCRBY来实现。
优点:
1)不依赖于数据库,灵活方便,且性能优于数据库。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。
1)不依赖于数据库,灵活方便,且性能优于数据库。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。
缺点:
1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。
2)需要编码和配置的工作量比较大。
3)网络传输造成性能下降。
1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。
2)需要编码和配置的工作量比较大。
3)网络传输造成性能下降。
开源算法snowflake
snowflake是Twitter开源的分布式ID生成算法,
结果是一个long型的ID。
其核心思想 是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器 ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最 后还有一个符号位,永远是0
结果是一个long型的ID。
其核心思想 是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器 ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最 后还有一个符号位,永远是0
子主题
订单管理
统计分析
登录与认证
授权
RBAC模型
子主题
表结构分析
子主题
前台管理
模板渲染解决方案
缓存解决方案
搜索解决方案--elasticsearch
搜索解决方案2--过滤查询
搜索解决方案3--分页与排序
消息中间件RabbitMQ
单点登录解决方案CAS
购物车解决方案
分布式事务解决方案
微信支付解决方案
秒杀模块
青橙商城模块归属
服务模块
business:轮播图,广告等
goods:商品服务,商品的增删改查
order:订单服务
pay:支付服务
seckill:秒杀服务
sms:短信服务
system:系统服务,授权,认证
user:用户中心
goods:商品服务,商品的增删改查
order:订单服务
pay:支付服务
seckill:秒杀服务
sms:短信服务
system:系统服务,授权,认证
user:用户中心
web模块
manager:后台管理
portal:前台交互模块
seckill:秒杀交互模块
user:前台用户中心模块
portal:前台交互模块
seckill:秒杀交互模块
user:前台用户中心模块
技术:Maven,通用Mapper
业务:后台品牌管理
增删改查,分页,条件查询.
业务:后台品牌管理
增删改查,分页,条件查询.
0 条评论
下一页