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