一、微服务项目
1.1.项目介绍
乐优商城是一个全品类的电商购物网站(B2C) ,目标是打造一个可扩展的,未来能支持千万用户量的商城。因此采用了目前流行的微服务架构方案。
目前国内实施微服务有两套技术解决方案:
●一种是以阿里的Dubbo为核心的,基于RPC的微服务架构
●一种是以Spring的SpringCloud的为核心的, 基于Rest风格的微服务架构我们的乐优商城选择了SpringCloud技术栈来构建项目。
原因是这样的:
●可靠: Spring平台一直致力于java技术的研究, 平台更加可靠稳定;毕竟dubbo有被阿里“抛弃过”的黑历史。
●方便:因为是Spring的" 亲生儿子",所以SpringBoot的支持非常完美, 简化了系统搭建的工作
●易上手:大多数程序员接触框架都是从Spring开始, 比较熟悉Spring的“味道", 学习SpringCloud也会熟悉的感觉。
1.2.架构图
1.2.2.架构要点
要点:
●整个系统采用了前后端分离的开发模式
●前端基于Vue相关技术栈进行开发,并通过ajax与后端服务进行交互。
●前端通过nginx部署,并利用nginx实现对后 台服务的反向代理和负载均衡●部分热点静态资源,碰到流量高峰时,会考虑使用CDN服务●使用Ivs来实现Nginx的主从,保证nginx的高可用
●后端采用SpringCloud技术栈来搭建 微服务集群,并对外提供Rest风格接口。●Zuul作为整个微服务入口,实现请求路由、负载均衡、限流、权限控制等功能
●后端微服务集群会通过Spring-Cloud-Config结合Spring-Cloud-Bus来实现统一配置管理和配置动态刷新●通过Spring cloud-sleuth和Zipkin实现服务的链路追踪
1.2.3.前端
前端页面分成两部分
●一部分面向公司内部人员,实现对商城日常业务的管理。后台管理页面
●一部分面向买家,实现商品的展示、搜索、购买等功能。前台门户页面
1.2.3.1.后台管理页面
●技术实现:
。后台管理页面会基于Vue实现单页应用(SPA)。使用webpack作为项目构建和打包工具。使用npm作为依赖管理
。使用Vuetify (基 于vue的UI框架,类似element-ui) 构建页面。。通过axios发起ajax请求, 与后端交互
●功能模块:
。商品管理,包括商品分类、品牌、商品规格等信息的管理。销售管理,包括订单统计、订单退款处理、促销活动生成等。用户管理,包括用户控制、冻结、解锁等
。权限管理,整个网站的权限控制,采用JWT鉴权方案,对用户及API进行权限控制。统计,各种数据的统计分析展示
1.2.3.2.前台门户页面
●技术栈:
。基于Vue技术栈
。使用Nuxt的服务端渲染方式,不再构建SPA应用(有利于SEO)。其它与后台管理技术类似
●前台门户面向的是客户,包含与客户交互的一切功能。例如:
。搜索商品。加入购物车。下单
。评价商品等等
1.2.4.后端服务
无论是前台还是后台系统,都共享相同的微服务集群,包括:
●商品微服务:商品及商品分类、品牌、库存等的服务
。商品分类管理。商品品牌管理
。商品规格参数管理:因为规格的可变性,采用竖表设计,分为规格和规格组表。商品管理,难点是SPU和SKU的设计,以及SKU的动态属性
。库存管理,库存加减采用乐观锁方案,另外定时对库存进行判断,库存不足可通知管理员●搜索微服务:实现搜索功能
。采用elasticsearch完成商品的全 文检索功能。难点是搜索的过滤条件生成。集群
●订单微服务:实现订单相关业务
。订单的表设计,状态记录
。创建订单需要同时减库存,跨服务业务,需要注意事务处理,流程
■查询订单提交的商品信息
■计算订单总价(计算商品总价、计算运费、计算促销金额)
●购物车微服务:实现购物车相关功能
。离线购物车主要使用localstorage保存到客户端, 几乎不与服务端交互。在线购物车:使用Redis实现
●用户服务:用户的登录注册、用户信息管理等业务
。用户注册
。注册数据校验。查询用户信息。收货地址管理。用户积分管理等
●认证服务:用户权限及服务权限认证
。权限管理CRUD。登录token生成。登录token认证。服务间token生 成。服务间token认证。cookie被禁用怎 么办。cookie盗用怎 么办
●短信服务:完成短信的发送,对接阿里短信平台,通过MQ实现异步的短信发送
●支付服务:完成支付平台对接,对接微信支付、对接支付宝支付。
●Eureka注册中心
●Zuul网关服务
●Spring Cloud Config配置中心
1.3.技术选型
1.3.1.相关技术
前端技术:
●基础的HTML、CSS、 JavaScript (基于ES6标准)
●Vue.js 2.0以及基于Vue的UI框架: Vuetify
●前端构建工具 WebPack
●前端安装包工具: NPM
●Vue脚手架Vue-cli
●Vue路由: vue-router
●ajax框架: axios
●基于Vue的富文本框架: quill-editor
●Nuxt: 服务端渲染
后端技术:
●基础的SpringMVC 5.0.8、Spring 5.0.8和MyBatis 3.2.8●Spring Boot 2.0.4版本
●Spring Cloud最新版Finchley.SR1
●Redis-4.0
●RabbitMQ-3.4
●Elasticsearch-6.2.4
●nginx-1.10.2
●FastDFS- 5.0.8
●Thymeleaf-3.0
●JWT
1.3.2.技术解读
上面的技术组合可以在項目中解决以下电商中的典型向題:
●利用Node.js及Vue.js技术栈,实现前后端分离开发。利用SpringCloud技术栈,实现真正的微服务开发
●贴近真实的电商数据库设计,解决全品商品的SPU和SKU管理问题。
●基于FastDFS解决大数据量的分布式文件存储问题
●基于Elasticsearch全文检索功能,实现商品的快速搜索,减轻数据库压力
●結合JWT和RSA非対称加密,自定义Feign过滤器实现自动化服务授权,解决服务対外暴露的安全问题。
●基于阿里短信实现SMS功能,解决注册短信验证。
●基于RabbitMQ实现可靠消息服务,解决服务间通信向題。基于RabbitMQ突現可靠消息服努,解决分布式事物问题。
●使用微信SDK实现微信扣款支付,符合主流付款方式
●基于Redis搭建高可用集群
●基于Thymeleaf实现页面模板和静态化,提高页面响应速度和并发能力
●基于Nginx实现初步的请求负载均衡和请求限流
●基于可靠消息系统实现分布式系统的柔性事务处理