小程序商城后台技术选型

需求分析
我们这个小程序商城,主要面向的客户是实体店,由我们公司完成一套小程序商城的模板,推广给实体店,为他们进行运行维护升级,商城的业务模型也不大,主要分为如下几个功能,商品模块、优惠券模块、订单模块、用户模块、案例模块、分销模块(推动订单完成能获取返利)、发现模块。

语言
选用的是JAVA,众所周知,在web领域PHP表现也是非常优秀,作为世界上最好的语言(手动添加狗头),PHP本就是专注于WEB开发的语言,有着先天的优势开发周期更短、开发成本更低、性能也有着不俗的表现,但是为什么选择JAVA呢?因为我不会PHP。

技术选型
由于我们的客户主要是面向实体店,单个店的访问量与并发量跟淘宝京东这种商城是无法比拟的,一般的一个实体店的访问量由一个单体架构的Tomcat能处理三四百并发就能够负载了,如果面对实体店比较多的品牌,我们也可以采用集群为他们服务,甚至到并发量更大的场景下,可以采用拆分服务搭建分布式了商城,这都是以后的事情了,如果真到了这个地步,相信公司也不只有我一个人后台开发了吧。现在我需要搭建是一个单体应用商城,技术选型如下:

SpringBoot:是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。

Spring:开源的轻量级企业级应用开发框架,其提供的IOC容器方便了开发人员对对象的管理,AOP更是方便了开发人员的面 向切面编程。

SpringMVC:使用的是MVC的分层思想,模块与模块之间的解耦方便了对代码流程的控制。

SpringDataJPA:使用的基于Hibernate实现的JPA,JPA是一个JPA数据访问抽象。Spring数据提供了一种解决方GenericDao自定义实现。它还可以代表通过方法名称约定生成JPA查询。选用JPA主要是为了将快速开发贯彻到底。

Redis:Redis是基于内存实现的可持久化的非关系型数据库系统,业务场景一可以缓存热点数据,可以提高用户体验,减轻物理库的负载。场景二可以缓存Session信息、手机号验证码、短信防刷机制、重复请求拦截,但是这里单体架构的系统下,暂时不使用,使用手写的JVM缓存替代,因为我不想多维护一个中间件,集群架构下再引入。

MySQL:MySQL是一个开源的关系型数据库系统,生态活跃、性能卓越。

SpringSecurity或Shiro:提供安全访问与权限控制的框架,不使用,使用AOP进行权限拦截,因为小程序权限比较单一,仅有微信用户这一个角色(不提供用户注册,仅使用微信授权登录),自己使用AOP拦截更方便。

JWT:是目前最流行的跨域身份验证解决方案,将用户标识加密后存储在客户端,通过牺牲服务端的CPU运算换取内存存储,还有一个更重要的原因,微信小程序没有cookie,如果要使用session存储登录态就很麻烦了,通常做法是将sessionId写在请求头中,不过如果是集群,又要进行session广播,总体来说还是JWT更简单方便。

Druid:阿里的数据库连接池,在功能、性能、扩展性方面都优于其他主流连接池。

Nginx:Nginx是一个高性能的HTTP与反向代理服务器,后期可以做Tomcat集群的反向代理,前期仅仅做路由转发。

你可能感兴趣的:(微信小程序)