MFP 8.0 适配器缓存
Posted
技术标签:
【中文标题】MFP 8.0 适配器缓存【英文标题】:MFP 8.0 adapter cache 【发布时间】:2017-09-15 03:48:51 【问题描述】:我正在使用 MFP 8.0,并且有一些要求我们希望在适配器级别实现缓存。
每当 MFP 服务器启动时,我们都希望转储缓存中的所有数据库,直到服务器再次重新启动。
现在每当用户点击一些调用数据库的事务或适配器过程时,它必须从缓存中读取而不是调用数据库。
【问题讨论】:
【参考方案1】:适配器支持后端系统的只读和事务访问模式。
适配器是 Maven 项目,其中包含用 Java 或 javascript 实现的服务器端代码。适配器用于执行 任何必要的服务器端逻辑,以及传输和检索 从后端系统到客户端应用程序和云的信息 服务。
JSONStore 是一个可选的客户端 API,它提供了一个轻量级的、面向文档的存储系统。 JSONStore 启用持久存储 JSON 文档。应用程序中的文档可在 JSONStore 即使运行应用程序的设备是 离线。这种持久的、始终可用的存储对于 例如,在没有网络的情况下,允许用户访问文档 设备中可用的连接。
【讨论】:
【参考方案2】:根据您的描述,假设您正在谈论一些存储数据的自定义数据库,那么您需要实现缓存数据的逻辑。
适配器有两个类<AdapterName>Application.java
和<AdapterName>Resource.java
。 Application.java 包含生命周期方法 - init()
和 destroy()
。
您应该在init()
方法中将自定义代码从数据库加载到缓存中。并注意在destroy()
中删除它。
现在在事务访问期间(命中 Resource.java),您引用已创建的缓存。
但是,您的要求可能不适合负载较重的系统。您需要考虑:
a) 您的适配器初始化被延迟。任何错误编写的代码也可能破坏适配器初始化。在初始化之前,适配器无法为您的请求提供服务。在集群环境的情况下,所有集群成员中的适配器加载将根据您正在加载的数据量而延迟。在初始化完成之前,针对此适配器的任何客户端请求都将获得运行时异常。
b) 将缓存保存在内存中意味着,堆中的大量空间已用完。如果您的数据库不断增长,这会对适配器初始化和堆使用产生不利影响。
c) 您负责将数据保持在最新级别,并在使用后进行清理。
总而言之,虽然可以,但不推荐。虽然这可能适用于非常小的数据集,但这不能很好地扩展。适配器的设计是为您提供对数据/后端系统的事务访问。您应该按照设计的方式使用适配器。
【讨论】:
以上是关于MFP 8.0 适配器缓存的主要内容,如果未能解决你的问题,请参考以下文章
如何从 MFP 8.0 中的 java 适配器异步调用 javascript 适配器?
来自应用程序的 MobileFirst 8.0 调用适配器正在连接到 localhost:6015/mfp
MobileFirst 8.0 - 从 WLResourceRequest 调用受保护的适配器