BS应用怎么样在一定程度上兼顾断网问题

谢题主 @易江 之邀!这是一个很有意思的架构设计问题。方案 3保持 B/S 架构不变,但增加一个 Local Server。这样前端(js 等)不用做任何修改,从用户角度看,断网时的区别只在于访问网址的不同,不再用 Remote Server 而是访问 Local Server。Local Server 同样是一个 Web Application,可以看作是 Remote Server(网络版)代码的一个精简版,只提供断网情况下维持酒店运营必要的一些基本功能,相当于单机版。当然,需要在每个酒店本地安装一套 Web Server 和数据库,以安装运行本地应用的 Local Server。网络修复后,还多出一个步骤:进行 Local Server 与 Remote Server 之间的数据同步,这是设计开发的一个难点。这个方案的架构与方案 2 类似,最大的区别在于无需切换到旧的 C/S 模式,省去了大量重复功能代码的开发。方案 11.在部分区域搭建专线保障网络稳定,并在对应区域部署服务器;(涉及高成本问题)是否可以考虑移动数据方案(3G、4G)?性价比可能传统数据专线更好。不过,只要是通过 WAN 连接远程服务器,理论上都不能 100% 排除移动、宽带、专线等通道故障失效的可能性,所以方案 3 的 LAN B/S 备份可能是最佳方案,尽管有一定的开发难度。
■网友
不可能。BS 架构本身就要求 online 的
■网友
我在 @张恂的回答下追加了一个评论,然后想到了一个也许更好的补充方案,所以单独提出来回答一下。其实,可以换个思路,虽然是bs结构,但仍然可以将server端放到本地,也就是说,本地不再是一个网络不通的时候的back up,而是直接作为服务接口,然后所有业务操作都直接访问本地服务器就可以了。本地服务器保存所有的业务数据,并尽可能实时的将数据跟中心同步,在这种情况下,数据同步是系统的架构的自然要求,比起专门来设计灾难恢复后的同步应该要更容易一些。进一步的,某些业务操作可能需要中心服务器的数据支持,这个可以简单的通过rest api的方式来解决,对于网络故障的情况也就变得简单了,需要用到rest api的部分不可用或者提供某种业务上的挂起逻辑。这种设计,不必刻意去考虑在网络不通的时候本地需要提供哪些「轻量级」的功能,需要远端同步的功能被自然的分离出来了。另外,BS的优点主要是版本升级方便,在保持本地服务器的情况下,如果进行平滑透明的版本升级是需要考虑的问题,也许,一个专门的upgrade watch dog会是一个可行的方案。
■网友
首先要确定的事情是"酒店方的需求是否是在没有网络环境的情况下 不允许进行办公"比如说 "开房、退房的行为必须经过总服务端的实时记录才行"、"订房信息必须从主站服务实时获取并验证"如果是这样的话 对不起 没办法兼顾 断网就是搞不定 因为这是厂方的需求
■网友
真心觉得,这种东西就搞cs比较合适,加上自动更新就好,bs的话需要部署服务器,浏览器本地存储不靠谱,如果只是简单的数据,丢失后没有影响可以存储,这种就应该是每个地方都部署服务器,做数据存储用
■网友
本地localstorage存储,网络恢复后上传到服务器端数据,同时增加版本号控制。
■网友
本地搞个server搞点缓存
■网友
不可接受为什么还要换成B/S结构,C/S结构本来就没什么问题,瞎折腾本地开个服务器?那为啥不直接用C/S?多此一举


    推荐阅读