当前位置: 首页 > news >正文

架构反思案例之“分布式”的架构案例

  不知道这个算不算一个分布式系统,我个人觉得是比较不错的一个设计,思路非常的好。

项目背景

  需要设计一套解决方案,解决目标企业的数据管理,数据不同客户端同步,建设网站的需求。

项目设计

1. 网站的设计

  传统的BS架构,用户可以直接登录网站管理数据资源,可以发布资源到线上。此外,用户可以直接登录客户端,完成同样的功能。客户端的计算能力闲置的时候,在征得用户同意的情况下,可以使用客户端完成一些并发的任务,比如数据整理,采集等等。同时提供线上与客户端同时并存的方式对于用户来说还是非常方便的,特别是对于那些工作在外面的业务员。

  这里很重要的一个部分就是负载均衡的处理,针对公司所在的地理位置不同,需要把公司的访问请求分配到不同的数据服务器上。

2. 网站的数据存储

  使用SQLServer作为网站的数据库,目前运行状况良好。这个作为整个架构的数据中心,存储了所有的数据。随着数据量的越来越大,数据服务器已经扩展到了多台,这个由负载均衡组件的负责处理。

3. 客户端的设计

  由于服务器提供了一个同步数据的接口,客户端可以从服务器同步数据,也可以向服务器提交新数据。这里的客户端形式多样,包括传统的Window Form桌面程序,也包括iOS和Android程序。由于不同的平台,例如传统的桌面,移动端,使用的语言不同,设计也有所差别,但是基本上都会有显示数据和同步数据的功能。

4. 客户端的数据存储

  客户端的数据存储平台也可能不同,但不管选择什么数据库,都是为了与SQLServer的数据兼容,为数据同步做物理准备。

5. 公司数据中心的概念

  对于中大型客户公司,客户端需要时刻在公司内保持同步,即使是在断网的情况下也要如此,这时公司需要设置数据中心,来完成公司内客户端的数据同步。

6. 数据的同步

  这是最重要的一个模块,同步的算法非常的简单,就是对比不同表数据的时间戳,只要时间戳不同,就同步表的数据。此外,使用P2P加速局域网的同步速度,也是非常关键的一步。

项目反思

  该设计覆盖了目标企业大中小不同规模的使用场景,使用非常灵活。但是实现的过程比较复杂,需要很多领域深厚的知识。

相关文章:

  • HttpClient---------demo
  • SQLSERVER存储过程基本语法
  • 安装redis
  • C#实现一个最简单的HTTP服务器
  • 【特别推荐】14个支持响应式设计的流行前端开发框架
  • 2012毕业找工作记录点滴
  • FAQ_Zabbix:解决模板收集到的数据和真实数据有偏差
  • 使用钩子函数[2]
  • 【从零之三(更)】自定义类中调用讯飞语音包错误解决办法
  • spring SpEL
  • view动画库
  • Submit a form with Ajax 发送邮件参考
  • 应该总结自己了
  • Tomcat下载安装及常见问题解决办法
  • 在共享文件夹中解压到linux其他目录中,千万注意软连接的问题
  • Cookie 在前端中的实践
  • Debian下无root权限使用Python访问Oracle
  • jdbc就是这么简单
  • KMP算法及优化
  • leetcode386. Lexicographical Numbers
  • Netty源码解析1-Buffer
  • Python打包系统简单入门
  • Python学习之路13-记分
  • Twitter赢在开放,三年创造奇迹
  • ucore操作系统实验笔记 - 重新理解中断
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 闭包--闭包之tab栏切换(四)
  • 翻译:Hystrix - How To Use
  • 精彩代码 vue.js
  • 警报:线上事故之CountDownLatch的威力
  • 前端设计模式
  • 入门到放弃node系列之Hello Word篇
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我与Jetbrains的这些年
  • 转载:[译] 内容加速黑科技趣谈
  • Prometheus VS InfluxDB
  • 回归生活:清理微信公众号
  • 数据库巡检项
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #FPGA(基础知识)
  • (39)STM32——FLASH闪存
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Git) gitignore基础使用
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (差分)胡桃爱原石
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Remoting学习笔记(三)信道