之前做过一个大屏展示项目,此项目是该集团公司的关键性展示项目,既做为各分公司了解本公司以及集团公司和其它子公司生产经营数据的平台,也做为集团领导的接待外来参观人员的演示系统。
系统涉及集团总公司以及多家子公司的数据汇聚及生产数据的实时仿真。由于项目涉及集团各子公司多套生产系统以及多个第三方系统,对接的接口超过200个。而各系统的性能不一,网络稳定性较差,部分系统经常关机维护,这给数据的汇聚及实时展示带来了很大的挑战。为此,系统设计之初就把保障系统在发生任何故障情况下都不影响前端演示的稳定性和流畅性做为重中之重。
第三方数据库或网络中断
在对接其它系统数据接口方面,为了保障数据汇聚的实时和准确性,针对非实时数据接口,使用数据同步工具,根据接口更新频率,启动不同的同步任务。各任务之间互不影响,一个任务中断,不会导致其它任务的运行。同时,任务中断后在下个时间间隔自动重启任务,保证网络或服务可用后数据及时同步到本地数据库中。
本地数据库服务中断
大屏项目的前端、后端服务以及大屏项目的本地数据库分别部署在不同的服务器中,后端服务与数据库之间为确保服务的可用性,在任何时刻,不因本项目数据库服务故障影响后端服务无法提供数据。后端服务对非实时数据做了缓存,当有请求到达时先检查缓存中的数据是否存在,如果存在则直接返回该数据。如果不存在,则从数据库获取此数据并放入缓存中,并返回前端。另外,后端服务会定期检查缓存中各项数据的过期时间,如果数据过期,则自动从数据库获取数据并放入缓存中。这样就保障的后端服务在任何时刻都可以返回可用的数据。无论第三方接口是否中断,缓存中始终有数据可供前端使用。
本地后端服务中断
大屏项目最怕的是自己的后端断了,前端点啥功能都没数据,报500错误,这在对外接待演示时是致命的。为解决这个问题,本项目前端所有接口均使用了浏览器缓存。所有接口在后端服务正常时每次调用都在浏览器端缓存返回的数据。在网络或服务不通时,调用接口时直接返回缓存数据。直到服务正常后,再更最新数据存入浏览器缓存。这样就保证了用户无感知后端服务异常。
针对实时接口,在前端同样做了缓存设计,当实时接口中断时,自动读取上次取回的缓存数据,而不致于报错或者出现无数据的情况。
当然,这些设计是为了保障大屏在对外接待演示时的可用性,对具体的使用人员来说,出现任何的故障,都要第一时间了解存在故障,以便做相应的处理。在系统设计中,针对此问题,在前端也做了相应的设计。例如,在屏幕右下角加入一个不起眼的小图标,当发生任何故障或者数据更新超过时限时,图标会出现,虽然外来参观人员注意不到图标存在,或者不了解此图标的意义,但使用人员一定知道出故障了,此时如果击此图标时会显示详细的接口故障说明等。这样既使是在对外接待演示的过程突然发生网络故障,也不会对前端演示造成任何的直接影响。
最后的最后
此项目经过长时间的运行,并经过大量的实践检验,运行完美。例如,在某次省领导莅临参观,集团生产系统网络突然故障的情况下,其它系统均无法正常演示的情况下,完美的演示了本系统。集团领导在接待结束后第一时间电话表示感谢。
上面的内容可能有些地方表述不是太准确,便大致如此。