摘要:随着企业电子商务系统的不断迭代开发,单体式应用已不能满足软件的迭代扩展需求。新兴的微服务架构(Microservice Architect)根据企业业务、逻辑将单体应用分解为一个个服务,每个服务独立运行、部署,相互之间采用轻量级的通信机制进行通信。本文对基于微服务的电商平台架构进行探讨研究。
关键词:微服务,电商平台,系统架构
随着企业电子商务的快速发展,企业在线交易业务的不断扩大,单体式架构应用的进程耦合程度较高,应用随着时间推移系统越来越复杂、越来越大,开发、扩展、维护成本高,可用率低,敏捷性开发和部署变动无法完成。而微服务架构,将单体应用划分为一组小的服务,这些服务围绕具体业务进行构建,彼此之间采用轻量级通信机制进行通信。各个服务独立运行,可以针对各项服务进行更新、部署和扩展,以满足对应用的日常运行和更新的需求。微服务架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。微服务灵活性、扩展性、伸缩性以及高可用性是未来发展的必然方向。
电商平台系统基于微服务架构,整个架构可以按照业务逻辑的规划,将复杂的业务拆分为细颗粒度的模块和服务,并利用docker容器装载每个服务或应用,docker容器隔离应用的能力使系统解耦,降低开发、管理、运维风险。Docker的细粒度、松耦合使一个Docker容器可以装载一个服务或者应用,一台服务器运行多个,或者多个容器在多台服务器上运行,并根据HTTP REST api的方式进行调用整合。
传统的企业服务总线、SOA模式中,服务调用者与提供者通过企业服务总线集成,在性能、成本消耗上ESB都会出现瓶颈。微服务采用“去中心化”支撑分布式应用,为了让整个业务系统的扩展没有瓶颈,只需按照业务发展需要进行扩展。减少研发成本、降低运维成本、解决性能问题、应对快速变化。
一、实现方式
基于Docker的组件服务化、管理可视化的微服务电商平台的总体架构,主要是从开发集成、微服务运行容器与平台、运行时监控治理和外部渠道接入等维度来划分的。Docker是一个开源的应用容器引擎,基于开放式标准可以在所有主流系统以及VM、云在内的基础服务设施上运行。Docker赋予应用隔离性,独立底层的基础设施,不依赖于任何语言、框架包括系统。平台主要提供以下能力:(1)应用系统的可视化配置管理,全面兼容Apache Tomcat等容器;(2)API接口的开发、开放、安全、统计等全生命周期管理;(3)数据库、业务指标、应用系统性能、操作系统性能和组件健康状况的全方位监控。
二、微服务数据流向
(1)客户前端发起的请求通过负载均衡统一转发到网关服务(API Gateway)。
(2)网关移除请求体后,将请求转发至网关辅助服务,进行集中地鉴权、限流等处理。
(3)网关辅助服务请求认证服务(OAuth Server),准备鉴权逻辑处理。
(4)网关判断是够需要做个性化处理,若不需要再做权限或者限流处理则添加JWT。
(5)权限检查与限流。
(6)网关辅助服务鉴权通过后,往http response中添加JWT token。
(7)网关请求真正的服务。
三、系统微服务架构服务集群
(1)服务注册(register-server)发现:承载了所有服务的管理,需要保证系统高可用。
(2)网关服务(api-gateway、gateway-helper)作为服务的唯一入口,负责验证、监控、负载均衡、缓存、请求分片等诸多功能,需要保证高可用。
(3)认证服务(auth-server)、权限管理(hpayiam)、平台服务(hpay-platform)属于使用频率稍高,要提高系统吞吐以及做到负载,后续也可视实际情况做伸缩即可。
(4)Api服务(manager-service)、配置服务(config-server)属于使用频率较低以及被其他服务依赖度不高的服务,不需要做负载均衡,只要可用即可,后可按需扩展,故设置1个实例。
(5)电子商城服务集(电子商城-service)包含供应商,考评,合同,送货,财务等核心服务,需要达成一定的系统吞吐量以及做到高可用及负载均衡,故需要根据企业的业务复杂程度适当调整服务实例数,适当地扩展。
(6)前端服务(front)同样可以看做为一个服务,部署在应用中,需要部署nginx做代理,将打包好的前端部署到nginx中即可。
四、微服务架构电商平台的优势
(一)高性能
系统所采用的体系架构从理论上对系统性能打下基础,但实现一个高性能的应用系统,还需要在技术设计及实现的每个阶段进行精心考虑。应用层所有节点均是无状态,在系统出现性能瓶颈时,能够通过增加应用节点平滑的进行负载分配。
在表结构设计、SQL语句优化、索引优化、表空间分配及维护、I/O及CPU瓶颈分析、数据库参数tuning等方面具有扎实的功底,能够有有效地提高基于ORACLE/Mysql数据库的系统的响应速度。
用缓存技术,将热点数据与静态数据比如组织架构、人员信息预先加载到缓存中,降低数据查询时的网络与数据库IO,提升接口性能,增强用户体验。
(二)可靠性
系统主要通过冗余备份服务器来实现高可靠性。其中:应用服务支持分布式集群,使用k8s容器云部署,这样一台服务器发生故障时,可自动由其他服务器接管,不影响系统的整体运行;数据库使用主从同步,多机互备,可更好地增强数据库服务器的可靠性。
(三)冗余
针对缓存、反向代理、数据库服务器的高可用性要求,支持缓存、反向代理、数据库服务器的keep-alive冗余配置,可以实现灾备自动切换。而针对数据库服务器,利用mysql的主备策略,实现数据库集群的实时同步。
(四)可扩展性
采用docker微服务架构,前后端分离,应用与数据库分离,天然具有良好的可扩展性。当系统负载增加时,可通过新启动一个服务节点来分担负载,当硬件资源遇到瓶颈时,则可通过在线增加硬件加服务,来提高系统的处理能力。
参考文献
[1]蒋彪.Docker微服务架构实战[M].电子工业出版社,2018.
[2]周立.Spring Cloud与Docker微服务架构实战[M].电子工业出版社,2018.