不知道这个算不算一个分布式系统,我我的以为是比较不错的一个设计,思路很是的好。算法
项目背景数据库
须要设计一套解决方案,解决目标企业的数据管理,数据不一样客户端同步,建设网站的需求。服务器
项目设计架构
1. 网站的设计并发
传统的BS架构,用户能够直接登陆网站管理数据资源,能够发布资源到线上。此外,用户能够直接登陆客户端,完成一样的功能。客户端的计算能力闲置的时候,在征得用户赞成的状况下,可使用客户端完成一些并发的任务,好比数据整理,采集等等。同时提供线上与客户端同时并存的方式对于用户来讲仍是很是方便的,特别是对于那些工做在外面的业务员。负载均衡
这里很重要的一个部分就是负载均衡的处理,针对公司所在的地理位置不一样,须要把公司的访问请求分配到不一样的数据服务器上。分布式
2. 网站的数据存储网站
使用SQLServer做为网站的数据库,目前运行情况良好。这个做为整个架构的数据中心,存储了全部的数据。随着数据量的愈来愈大,数据服务器已经扩展到了多台,这个由负载均衡组件的负责处理。设计
3. 客户端的设计orm
因为服务器提供了一个同步数据的接口,客户端能够从服务器同步数据,也能够向服务器提交新数据。这里的客户端形式多样,包括传统的Window Form桌面程序,也包括iOS和Android程序。因为不一样的平台,例如传统的桌面,移动端,使用的语言不一样,设计也有所差异,可是基本上都会有显示数据和同步数据的功能。
4. 客户端的数据存储
客户端的数据存储平台也可能不一样,但无论选择什么数据库,都是为了与SQLServer的数据兼容,为数据同步作物理准备。
5. 公司数据中心的概念
对于中大型客户公司,客户端须要时刻在公司内保持同步,即便是在断网的状况下也要如此,这时公司须要设置数据中心,来完成公司内客户端的数据同步。
6. 数据的同步
这是最重要的一个模块,同步的算法很是的简单,就是对比不一样表数据的时间戳,只要时间戳不一样,就同步表的数据。此外,使用P2P加速局域网的同步速度,也是很是关键的一步。
项目反思
该设计覆盖了目标企业大中小不一样规模的使用场景,使用很是灵活。可是实现的过程比较复杂,须要不少领域深厚的知识。