如何打造高可伸缩的移动电商架构?

网友投稿 254 2022-10-20

如何打造高可伸缩的移动电商架构?

高可伸缩的移动电商架构设计,包括了几个部分:App客户端架构、服务端的架构,以及如何使用私有云、公有云部署服务端的应用,可以让大家快速的建立,搭建高可伸缩的移动电商系统架构的知识体系。

App端的混合架构

首先介绍App端的混合架构,还有服务端的SOA架构,也包括弹性云的架构设计,基于容器的虚拟化以及电商SOA如何部署在弹性云的环境当中。最后的部分,会讲一个具体的案例。比如说双十一的时候,该怎么去应对这种大促?

如图一,这是App端的混合应用框架。大家都知道,做App开发的时候,如果用纯Native进行开发,成本很高,但是用户体验会非常好;如果说用纯H5来开发,开发速度很快,但是在实现复杂交互时,体验就不那么好了。

图一

所以业界主流的做法就是所谓的App混合应用架构。从这个框架当中,可以看到,其实我们是通过用JSBridge去封装一些原生方法,让H5通过调用JS,可以访问摄像头、重力感应等等功能。

在App的混合架构当中,大家在设计App框架时可以考虑,实现H5本地包缓存的机制,如图二。通常每一次App请求都是向服务器端发送请求,然后返回给数据给客户端。我们的做法是H5页面框架包包括CSS、JS、图片放到本地,相当于本地有一个http的代理服务器。当用户访问App的时候,我们调用的是本地的H5页面。当这个页面需要加载一些数据,这个时候JS才会去服务端拉取数据。

当然H5其实现在有很多的特性,如:LocalStorage、SessionStorage这里面都可以存储很多数据,比如说购物车信息、浏览信息都可以缓存在里面,不用去服务器端去取。通过这样的方式可以加速整个的App页面的加载速度。

图二

可能有的朋友会问,安全机制怎么办?如果在App客户端有一个所谓的代理服务器,那相当于是服务器跨域调用服务器,在安全机制上可能会存在一些问题。当然你在设计移动端的时候,你要有服务调用的安全认证机制,首次访问通过认证后获取动态令牌,以后每次调用通过动态令牌进行身份认证。

这就是大致的一个H5本地包缓存的机制,用户请求本地App的时候,同时会去服务器端校验,当前是不是最新的版本,如果不是最新版本就去服务器端拉最新的H5包回来,当然也可以由服务器端进行主动推送消息,通知客户端更新。

SOA服务端的架构

接下来看服务端的SOA架构,这个部分涵盖了从数据层、访问层、基础服务、核心服务,如图三,最上面的就是面向终端用户的网站和App。基础服务层其实就是有没有封装业务逻辑的,一般业务逻辑是封装在核心服务层,基础服务层只是提供一些原子类的数据操作。

图三

我们在设计SOA架构的时候,我们需要注意:核心服务层要能够实现隔离、保护、降级等功能。举个例子,比如说价格服务,其实在团购、购物车、促销这些模块当中都会涉及到价格。但是你在部署的时候你可能要做一个隔离,就是哪些机器上部署的服务只给团购用,哪些服务只给购物车用。

这样的好处是在极端情况下,做“过载保护”的时候更容易一些,比如说大促的时候压力是来自购物车或者是详情页,如果说不是针对团购的,可以把团购这边的价格服务少放几台机器,把这些机器都调到压力大的业务中去。还有就是对服务的监控、负载均衡等等,需要有一套的服务治理平台进行管理。

整体的架构,如图四,从App端到服务端的架构示意图,最底层的服务端就是我们上面所讲到的SOA的架构。在SOA之上,我们会加一层分发层,它有很多的适配器,它是专门用来让服务去适配各类平台的。这些服务是供移动App、PC站、B2B、团购等等系统进行调用,每一个平台端所获取的数据其实是不太一样的。

图四

以购物车为例,在移动端的购物车和PC端的购物车其实所展现的信息是不一样的。在PC端你可以展示很多的促销商品、活动。但是在移动端可能就没有那么多的空间来展示。因此这个时候,我们对购物车所要提供的数据,我们可能会做一个适配。这是这个架构当中所需要注意的一点。

如果说你们公司只有一个App,只有H5站,没有PC站,那问题不大。但多数的公司可能本来主要的业务是在PC端,移动时代来了之后,它才把这些业务迁移到移动APP当中,这种公司就要注意架构上的设计问题。

基于容器的虚拟化

接下来我们了解一下弹性云架构,是基于容器技术的虚拟化。这是容器的特点,容器和传统的虚拟机相比,以一台4核16G物理机为例,传统的虚拟机只能「1虚5」,一台物理机可以虚出5台虚拟机;而Docker技术起码是10到15台。这个利用率就提升2-3倍,这是其中的一个好处。另外一个就是磁盘空间和网络传输量,举个例子,我们使用一台物理机虚拟了10个Docker,你可以在这一台机器上部署不同的服务,这些服务相当于是本机通讯,这样可以减少网络传输。

Docker服务器的特点是启动快,创建项目、启动/停止几秒内就可以完成。如果说是传统的虚机的技术,那你装机、部署一个应用,做配置要多久,即便是自动化,起码也要几分钟,而且几分钟已经也算是快的了。这是一个非常显著的优点。

另外你在做装机模板的时候,你可以把你的应用和你的环境、操作系统做成一个镜像。你在安装容器的时候,可以在几十秒把环境和服务、应用快速的建立起来。

容器运行的环境如图六。这里面大家稍微了解一下。在操作系统之上会构建Docker的环境,在Docker之上会有API管理平台,会对Docker做一些监控、管理、分配空间等等。这是更细的一个Docker的工作环境,我就不详细阐述了。

图六

这是单台物理机当中的整个结构。从最底端的物理机到操作系统,到上面的Docker平台,到Docker平台上的每一个容器,每一个容器上部署的nginx也好,或者是Java环境,JDK+tomcat这些。

关于电商的私有云建设

刚刚介绍了容器,其实当你的企业机器足够多的时候,几百台上千台时候,你应该构建一个私有云的平台。

图七

如图七所示的私有云整体框架,包括IaaS、SaaS和PaaS,我们所谓的私有云其是在PaaS这一层,包括存储、网络、缓存等等。

这是私有云的一个管理平台,如图八。如果说你有几百台上千台机器,你需要对这些资产,对每个月产生的这些流量、带宽的费用都非常清楚,你作为一个运维管理人员,当老板问你,我们一个月的带宽、CDN、第三方监控的费用情况,你要能够回答出来。以及当应用出现问题的时候,你的硬件出现一些问题,你有没有对这些事件进行跟踪管理。当我们的系统出问题的时候,我们可以很快从这个问题管理平台当中找原因。

图八

比如说10点我们的系统出现问题,报警了。你在处理的时候,你首先关注的是什么?是前5个报警的信息,最开始的报警的是网络不通,接下来负载飙高了,有很多服务不可用了,导致有一些应用开始报警了,这些都是一连串的反应,最重要的就是要先解决前面的几个错误,因为如果拖久了,所有的应用都报错了,你更不知道是哪里出问题了。

除此之外还要有自动发布的平台以及你的应用和配置需要进行分离,数据库的链接、环境变量的配置等等都要一个独立的配置中心去做配置。其他的就不细讲了,这些都是我们做运维时所需要的一些工具。

欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker安装Es+Kibana
下一篇:关于feign.codec.DecodeException异常的解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~