本栏目责任编辑:李雅琪
电子商务与电子政务
Computer Knowledge and Technology
电脑知识与技术
第 16 卷第 10 期 (2020 年 4 月)
第 16 卷第 10 期 (2020 年 4 月)
E-mail:[email protected]
http://www.dnzs.net.cn
Tel:+86-551-65690963 65690964
ISSN 1009-3044
Computer Knowledge and Technology
电脑知识与技术
Vol.16, No.10, April. 2020
微服务架构下电商平台的研究和实现
方嵩柯,谷志峰,张冠甲,王伟光,马学友
(河南科技大学软件学院,河南 洛阳 471003)
摘要:近年来,随着互联网行业的迅猛发展,公司和业务的不断扩展,使得原本一个小型而简单的应用变得十分复杂,一旦
一个小型的应用成长为一个庞大而复杂的单体,开发很有可能将陷入一个原地踏步的境地,为了解决单体应用的问题,我
们采用近几年流行的微服务架构的方式来进一步实现电商平台的高内聚,低耦合,提高开发效率。
关键词:B/S架构;电商平台;Spring Cloud;持续集成;云原生;微服务;Docker 容器;MySQL 数据库
中图分类号:TP311.5 文献标识码:A
文章编号:1009-3044(2020)10-0288-02
开放科学(资源服务)标识码(OSID):
1 研究背景及研究内容
1.1 研究背景—陷入焦油坑的单体应用模型
近年来,随着互联网行业的迅猛发展,公司和业务的不断
扩展,需求的快速变化以及用户量的不断攀升,以及随着 SSH
和SSM 框架的成熟,一个传统项目的开发似乎已经进入一个非
常简单的方式。然而,成功的应用程序都有一个趋势,随着时
间的推移业务量逐渐增多,需要修改的地方也就越来越多,这
就意味着需要添加更多的代码,这种添加的代码量使得原本一
个小型而简单的应用变得十分复杂,一旦一个小型的应用成长
为一个庞大而复杂的单体,开发很有可能将陷入一个原地踏步
的境地,甚至在修改一处 BUG 后,带来更多的 BUG。为了修改
更多的问题,又会产生更多的代码,如此恶性循环,使得产品陷
入焦油坑最终成为一个不可思议的大泥球。当产品陷入焦油
坑而不能自拔时会来带来更多的问题,原本重启服务耗时五十
秒,那么在添加了大量代码后,重启时间可能会达到三分钟之
长,使得开发变得愈加困难。
1.2 研究内容
1.2.1 微服务解决复杂难题
为了解决单体应用的问题,也出现了一系列架构来解决这
些问题,我们从单体架构走向分布式架构再走向SAO面向服务
架构。直到 2014 年当今世界软件开发领域具影响力的大师
Martin Fowler 与 James Lewis 共同提出了微服务的概念,定义微
服务架构,将微服务架构推到了一个时代浪尖。我们将一个传
统的庞大的业务进行拆分,拆分原则可按照业务来进行划分,
如果过于复杂我们可以采用 DDD 领域驱动设计来进行划分。
将庞大的业务拆分成若干个小的业务,各个业务之间内部采用
RPC 的方式来进行通讯,对外部则采用 REST 风格的 API 进行
通讯。从而将一个大型应用分解为若干个小型应用通过对模
块解耦来解决问题。
1.2.2 云原生架构下的微服务实践
2010 年 5 月 28 日 WSO2 的 CTO 和联合创始人在他的一篇
博客中首次提出了 Cloud Native 这个概念,2014 年 Netflix 的云
架构师 Adrian Cockcroft 介绍了基于 Cloud Native 的成功应用,
吸引了大批开发人员争相模仿。我们在向微服务架构的转型
中将会出现各种各样的问题,云原生的敏捷基础设施以及公共
基础设施将成为一个微服务是否成功的关键。为此出现了代
替虚拟机的容器 Docker,持续集成私有云平台 gitlab,docker 镜
像管理平台 Docker Registry 等。为此,此次研究我们结合云原
生与微服务,来做到真正的微服务架构。
2 系统总体要求
2.1 系统框架要求
1) 开发环境。操作系统:Windows 10 Enterprise;开发工
具:Intellij IDEA;数据库:MySQL 5.7.22;
2) 部署环境。操作系统:Linux Ubuntu Server 16.04 X64;虚
拟化技术:VMware + Docker;
3) 项目管理工具。项目构建:Maven + Nexus;代码管理:
Git + GitLab;镜像管理Docker Registry;
4) 后台主要技术。核心框架:Spring Cloud+SpringBoot;视
图框架:Spring MVC;页面引擎:Thymeleaf;ORM 框架:tk.myba⁃
tis 简化 MyBatis 开发;数据库连接池:Alibaba Druid;数据库缓
存:Redis Sentinel;消息中间件:RabbitMQ;接口文档引擎:Swag⁃
ger2 RESTful风格 API 文档生成;分布式日志系统:ELK(Elastic⁃
Search + Logstash + Kibana);反向代理负载均衡:Nginx;
5) 前端主要技术栈:前端框架:Bootstrap + jQuery 或者 ele⁃
mentui+vue;
6) 自动化运维:持续集成:GitLab;持续交付:Jenkins。
2.2 硬件的支持要求
运行本系统的硬件最低要求:CPU:3.0Hz;内存:16G;硬
收稿日期:2020-02-10
基金项目:河南科技大学SRTP 项目资助(No.2019107)
作者简介:方嵩柯(1998—),男,河南科技大学软件学院,学生;谷志峰(1978—),男,硕士,讲师,研究方向为软件工程、语义web。
288