说说目前项目的架构

Posted by Deadline on March 11, 2016

还是先上图再来细说吧

整体架构图

0x00

首先介绍下各个部分:

wechat 微信公众号
www 公司主站
manage 管理后台 IOS、Android 就是移动客户端
nginx 代理服务器
api server 接口服务器
file server 文件服务器
static server 静态资源服务器(js html css 之类)
DB 数据库(Mysql)
Cache 缓存服务(Memcache) Third part 第三方服务(签约、即时通讯、支付等等)

总体可以分成 client 和 server 。 第一层的就全部都是 client 做过公众号的人都应该知道里面其实有很多都是网页,然后还有部分和公众平台的一些数据交互。
所以公众号是直接访问 www,特意做了一些 wap 页面以及微信号绑定、自动登录之类的。

client 通过 http post 请求和 api server 进行数据交互,使用 json 格式。
这样设计的好处就是能够同时给多终端提供数据接口服务,不用给终端单独开发接口。

nginx 在系统中发挥了很大的作用,首先一个就是给各个服务做反向代理,api、www、manage、file、static。 还有就是配置 https 证书十分方便。

cache 同时给 www 和 api 提供缓存服务,www 主要是缓存登陆用户信息,api 目前暂时好像没有用到。

为什么要用 cache 呢?
因为快呀,还有个最要的原因是解耦。
传统做法是将一些信息保存在 session 当中,如果是单容器的话肯定没有问题,那如果需要多个 tomcat 同时提供服务呢?那就涉及到登陆用户信息同步问题了,就是 session 同步,当服务器越多的时候效率越低。现在将信息保存在 cache 当中就不存在这样的问题了,不管用户从哪台服务访问都是从 cache 中取信息,就不存在同步的问题了,而且现在很多 cache 服务都能支持分布式,能够很好的水平扩展。然后服务器这边也能很好的水平扩展了。

0x01

再说说技术栈

后端主要是 Java,然后 Spring MVC + mybatis,前端用了 FreeMarker 模板。
虽然我知道现在很流行前端、后端完全分离。但是需要高级前端啊,而且前端工作量会多很多。只能说目前这样效率更高吧,前端写好 html 静态文件,然后我这边再整合一下。

我们没有前端,然后 html 都是找外包写的,这样其实问题也蛮多的。沟通成本啊,还有无法保证稳定的开发团队啊。今天这个前端写了一部分,明天另外一个外包写了一部分,每个人都有自己的命名习惯,然后造成文件、css 类、js 等等都很混乱。


There are no comments on this post.