每当太阳西沉,我坐在河边破旧的码头上,遥望新泽西上方辽阔的天空,我感到彷佛有未经开垦的土地,全部的道路,全部的人都在难以想象地走向西部海岸。直到如今我才知道,在衣阿华,小伙子们老是不停地骚动喧闹,由于是那片土地使他们如此没法平静。——《在路上》前端
在传统的B/S 架构的系统里,技术架构每每是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块,可是有些网站,如电商系统或全国性服务平台,用户群庞大,网站并发量高,且需求变化大,以及网站处于对安全的考虑,以上的逻辑分层在技术架构上的实现也会复杂的多。java
那么考虑采用分布式架构,将系统拆分红多个子系统。mysql
分布式系统定义:
组件分布在网络计算机上
组件之间仅仅经过消息传递来通讯并协调行动android
咱们这个项目叫staro2,主要分为如下5个模块:
(1)staro2-manager——后台管理系统
(2)staro2-portal——前台门户系统
(3)staro2-rest——应用服务层
(4)移动端——Android、iOS、微信平台
(5)MySQL——数据库web
下面介绍各个模块的功能与设计结构。sql
传统的工程结构:
传统项目是一个项目,三层架构控制层、业务逻辑层和数据访问层。数据库
考虑后期的可拓展性与并行开发,本文采用分散式的开发方式,采用maven管理项目。编程
后台管理系统的项目结构设计以下:json
staro2-portal前台门户系统主要包括控制层和视图层staro2-portal-controller和逻辑层staro2-portal-service。逻辑层调用应用服务层(staro2-rest)请求数据。安全
star-rest应用服务层对外提供rest形式的服务,供其余系统如web前端、android、iOS和微信公众号调用。使用http协议传递json数据。主要分为三层:数据访问层、业务逻辑层和控制层。
目前是单库多表设计,随着业务的增大,考虑分库分表以下。