返回首页
基于微服务架构的商城大数据版技术架构方案
发表时间:2019-12-21 阅读:12069
微服务商城
电商系统
基于微服务架构的商城大数据版技术架构方案

1 技术选型

开发框架

Spring boot

服务远程配置

Spring cloud config

服务网关

Zuul

服务注册与发现

Eureka

服务负载均衡

Ribbon

服务接口通信

RestTemplate/FeignMQ

断路器

Hystrix

前端负载

Nginx+ Lua+Redis

后端服务负载

DNS负载+Nginx+zuul

缓存

Redis(阿里云Redis或自建redis cache-cloud )

MQ中间件

生产环境RabbitMQ/开发环境springboot内置ActiveMQ

数据库集群

Mysql Cluster + LVS + Keeplived

微服务封装与部署

Docker

可持续自动化测试与集成

Jenkins

分布式定时任务

xxl-job(基于quartz实现的分布式定时任务)

Session同步

Spring-session

数据库crud操作

Spring-jdbcTemplate

MQ生产与消费

Spring-jmsTemplate

前端页面渲染

Vue.js

页面静态化

FreeMarker

应用服务器

Spring boot集成Tomcat-embeded

服务安全框架

Spring security

2 整体架构

2.1 后端整体架构

1. HA:所有服务包括网关(zuul)、服务发现器(Eureka)、安全服务(Security)、业务服务基于spring cloud实现,屏蔽细节,实现了自动注册、负载均衡(基于Ribbon)、故障隔离,失败熔断与服务降级(Hystrix),从架构上满足了系统的高可用需求。

2. 性能:从架构图可以清晰的认识到,微服务架构不存在任何单点与中心,任何一个服务使用的资源可以动态调配,服务支持水平扩展,能够从架构上满足日常与业务高峰期的并发需求。

3. 服务容灾:

a) 所有服务注册中心(Eureka)均可查看服务注册情况,如图:

b) 利用Hystrix将失败信息传递给第三方系统(运维系统:当异常发生时利用短信、邮件提醒运维人员处理,并生成统计图表,能够确定存在严重问题的服务并有针对性的修改服务)。

4. 服务安全:使用spring-security实现服务注册的鉴权、移动端接入的鉴权(token),在zuul网关添加过滤层过滤类DDOS攻击。

2.1.1 服务与服务间调用架构

1. 同步api调用

a) 同步调用适合的业务场景:服务与服务在调用时,上游服务必须要知道下游服务处理的结果状态,才能完成自己的业务,且上游服务性能要求不高时才适合使用同步api调用。

b) 同步调用通过Feign实现,声明式的服务调用,屏蔽细节,调用简单。

2. 异步消息式调用。

a) 异步调用适合的业务场景:上游服务性能要求较高,对于下游服务处理的状态并没有刚性需求。比如下单服务,商品出库服务,下单为了满足高并发的需要,那么必然要牺牲掉强一致性,通过mq消息确认、补偿模式、可靠事件、TCC等等方式来保证最终一致性。

b) 异步调用通过jmsTemplate进行生产、消费、订阅,中间件生产环境使用RabbitMQ,开发环境使用ActiveMQ

2.1.2 数据层架构

2.1.2.1 数据库解决方案

1. 所有服务的db使用mysql-clustermysql-cluster本身具备了高可用、数据分片容灾、高性能读写的特性,在此不再赘述,有兴趣可以参看mysql官方白皮书。

2. mysql目前没有开源的图形化运维解决方案,oracle提供收费的图形化部署、扩容、横向扩展的运维工具,我们考虑在不侵犯oracle版权与mysql开源协议的基础上,在将来提供图形化运维解决方案。

2.1.2.2 缓存解决方案

所有服务如需要应用缓存以提升读写性能,本架构中基于搜狐开源项目cachecloud提供redis图形化运维、解决方案。


1. cache-cloud相关使用文档见https://cachecloud.github.io/

2. 本系统对redisTemplate进行了封装来支持阿里云rediscache-cloud提供的redis-standaloneredis-sentinelredis-cluster共四种缓存应用方案,所有服务可以单独配置使用独立的redis

3. 服务与服务之间db隔离、缓存隔离。

2.1.3 边缘解决方案(单点登录、分布式定时任务)

2.1.3.1 spring-session的应用

利用spring-sessionset-cookie的方式进行session共享,跨二级域名的单点登录(目前未提供token式的单点登录解决方案)

2.1.3.2 分布式定时任务

利用quartz集成的开源项目xxl-job实现定时任务与业务的拆离,业务只需要关心执行器逻辑实现,xxl-job提供任务调度策略、执行日志记录,如下图所示:

2.2 前端解决方案

前端及cms模块整体架构如下:

1. 前端页面使用freemarker将需要静态化的部分静态化,不需要静态化的部分则使用vue.js调用api的方式进行渲染,利用nginx ssi模块来进行页面headerfooter的引用,简化了开发工作。

2. 模板服务(template-service)提供基于FileWatchServer的文件监控服务,初次启动时即按策略初始化所有html,并按处理需要静态化的html模块,生成静态页放入nosql;当html发生变化时,发送jms消息,cms-pagecreator服务订阅cms-template消息,并按策略重新生成对应静态页。

3. Cms-managr为管理专题、频道、首页等页面数据的服务,当发生数据变化时入库并发送jms消息,cms-pagecreator服务订阅cms-manage消息、订阅其他服务消息并按策略重新生成对应静态页。

4. 页面展示服务为Nginx+LUA脚本开发,通过这种方式访问Redis并响应给浏览器,能够极大程度上提高页面吞吐率,提高系统性能。

5. 以上所有服务均为spring-cloud项目,注册在eureka上,本身具备了HA特性;页面展示服务利用KeepAlive实现自身HA

6. 将页面展示实现前后端分离,必然要面对的问题是:离开了模板引擎,页面渲染所需要调用的api接口增多、随着访问量的激增,势必对后端应用造成压力。通过这个类似大Nginx系统的应用解决了页面不常变动的数据(静态化部分)、与需要实时性较高的部分(正常api调用部分)的完美结合,不仅将前后端拆离,也将前后端压力拆离。而监控服务提供了静态化页面的动态更新,完美解决页面访问的问题。

7. 为前端开发提供了cms-work插件(目前以jar形式运行),在未来会做为eclipse插件发布,提供易用的开发环境。

2.3 其他架构解决方案。

2.3.1 持续集成测试环境

应用jekins+maven实现版本迭代,spring-cloud本身支持服务的版本控制,可以做到不同版本应用的兼容与并存。

2.3.2 docker部署和动态扩容。

目前不支持图形化的docker部署,但是在发布前有计划研究docker图形化运维工具。

2.3.3 服务跟踪与性能分析

目前只提供hystrix dashboard方式的性能监控与分析调优,未来有计划集成Zipkin等服务追踪开源框架。



文章来源:广州朗尊软件科技有限公司
【朗尊软件】是中国领先的专业电商平台提供商,秉承着“专业塑造传奇,用心成就电商”的理念, 专注于为用户提供一体化的电商解决方案及服务,搭建垂直行业垂直电商一站式营销管理工具。目前拥有自主研发的电子商务平台产品:SAAS云平台、微商城小程序、云商城、云小店、代理商平台、B2B2C商城、B2B大宗交易平台、跨境电商服务、大数据平台搭建、微服务架构等产品、各种定制商城及解决方案。
网站声明:以上内容为朗尊软件官方网站的原创文章,如需转载,请注明出处,谢谢合作!
上一篇: 找玩具项目批发功能的 B2B2C 商城正式上线
下一篇: 微服务大数据版技术解决方案
相关文章
Legendshop电商商城系统在技术上有哪些优势
《信息系统安全等级保护基本要求》 之二 - 朗尊软件,企业级电商平台提供商
电商平台直播技术及解决方案 - 朗尊软件,企业级电商平台提供商
开源商城系统介绍企业写开源多用户商城 - 朗尊软件,企业级电商平台提供商
供应链金融浅析 - 朗尊软件,企业级电商平台提供商
电商头条新闻
1
工业行业 | 工业产品B2B跨境电商解决方案
2
私域电商如何赶上智能热潮?
3
三一全球购 | B2B2C电商平台+员工福利平台的定制解决方案
4
跨境电商 | B2B2C跨境电商系统解决方案
5
社群团购系统——社区流量与社交电商融合
热门标签
小羊直播
供应链
电商系统
Java商城
电商平台
B2B商城
跨境电商
商城平台
新零售系统
云商城系统
B2B2C商城系统
多用户商城
微服务商城
供应链商城
商城系统
电商直播系统
私域电商
大宗交易平台
数字化转型
直播供应链
全渠道零售
O2O商城系统
java开源商城
SAAS云平台
B2C商城系统
SaaS系统
生鲜电商
用户标签
APP
S2B
MRO平台
微信小程序商城
移动商城
社区电商
营销活动
新零售电商
分销系统
门店管理
分销体系
社交电商
直播电商
数字化
客服系统
社群电商
引爆流量
供应链金融
员工福利平台
工会福利商城
企业智慧采购平台
机械设备
抖音电商
数智化
数字化
区块链
S2B2C
B2B2B
订单融资
数字中台
VUE
用户标签
仓单融资
大数据
应收账款
集采代采
医药电商
推荐阅读
公告:【微信小程序备案】9月1日起,微信小程序需完成备案才可上架!
工业行业 | 工业产品B2B跨境电商解决方案
私域电商如何赶上智能热潮?
三一全球购 | B2B2C电商平台+员工福利平台的定制解决方案
家居行业的S2B2C商城平台解决方案