您现在的位置是:首页 > cms教程 > discuz教程discuz教程
Discuz的NT的LLServer架构设计介绍
钟召云2025-06-24 22:37:04discuz教程已有3人查阅
导读在开发LLServer的同时,我一直在跟进测试企业版的相应LLServer客户端,目前这部分代码已测试完毕并提交的DiscuzNT产品中,会跟随较新的源码包一并发布。
在开发LLServer的同时,我一直在跟进测试企业版的相应LLServer客户端,目前这部分代码已测试完毕并提交的DiscuzNT产品中,会跟随较新的源码包一并发布。本文主要是介绍一下产品中引入LLServer的架构思路。
在DiscuzNT的企业版产品中,使用了Memcached,Redis这两个软件来提供分布式缓存服务(两者任选其一)。现有又有了LLServer,它不仅提供了KEY/VALUE缓存,还包括持久化存储部分。这样,用户可以有更多大的选择余地。
下面是DiscuzNT的企业版分布式缓存中一个架构图(DNTCache用于包含调用cacheStrategy):
我们通过配置相应的config文件来决定使用那种类型的缓存服务。当然其也有一个优先顺序,即:memcached, redis, llserver。这可以参照较新版的DNTCache.cs文件(位于Discuz.Cache项目下),部分代码参见如下: 当memcached.config及redis.config文件的Apply..选项为false时,这时如启用llserver.config文件的如下节点,即可启动llserver。 注:有关llserver的安装使用信息请参见如下链接:
下面介绍一下我们企业版中LLSERVER的客户端的设计思路。熟悉我们产品的朋友知道我们的缓存设计基于stratety模式,之前的memcached,redis都有相应的策略实现,详情参见下面两个链接:
DiscuzNT中的Redis架构设计
DiscuzNT中进行缓存分层(本地缓存+memcached)
这里对LLServer也不例外,同样引入了相应的策略实现,如下: 顾名思义,LLStrategy.cs即是策略实现,LLManager.cs只是一个访问LLServer服务端的一个客户端封装。下面分别看一下源代码,首先是LLStrategy.cs: 代码比较简单,大家看一下注释就可以了。下面是LLManager.cs文件的代码: LLManager.cs类主要是以封装了以http协议方式访问llserver的操作(因为llserver可支持http协议和memcached socket协议)。该类有两个地方需要注意:
1.使用base64对value部分进行编码,以解决object对象二进制序列化后llserver无法存储的问题(llserver这个问题将会在后续版本中解决)
2.在set/get操作时,对value结尾添加“$$END$$”标识来告之数据在该标识位结束。
了解了这些内容之后,之后再说一个企业版中使用memcached socket协议连接llserver的情况。因为之前企业版中已使用了memcached,这里如果要使用llserver,只须关闭当前llserver.config文件中的 并开启memcached.config文件中的 选项即可,但同时也要设置该文件的“<ApplyBase64>true</ApplyBase64>”节点,这样就可以用该memcached client来链接使用llserver了。
好了,到这里今天的内容就先告一段落了。
在DiscuzNT的企业版产品中,使用了Memcached,Redis这两个软件来提供分布式缓存服务(两者任选其一)。现有又有了LLServer,它不仅提供了KEY/VALUE缓存,还包括持久化存储部分。这样,用户可以有更多大的选择余地。
下面是DiscuzNT的企业版分布式缓存中一个架构图(DNTCache用于包含调用cacheStrategy):
我们通过配置相应的config文件来决定使用那种类型的缓存服务。当然其也有一个优先顺序,即:memcached, redis, llserver。这可以参照较新版的DNTCache.cs文件(位于Discuz.Cache项目下),部分代码参见如下: 当memcached.config及redis.config文件的Apply..选项为false时,这时如启用llserver.config文件的如下节点,即可启动llserver。 注:有关llserver的安装使用信息请参见如下链接:
下面介绍一下我们企业版中LLSERVER的客户端的设计思路。熟悉我们产品的朋友知道我们的缓存设计基于stratety模式,之前的memcached,redis都有相应的策略实现,详情参见下面两个链接:
DiscuzNT中的Redis架构设计
DiscuzNT中进行缓存分层(本地缓存+memcached)
这里对LLServer也不例外,同样引入了相应的策略实现,如下: 顾名思义,LLStrategy.cs即是策略实现,LLManager.cs只是一个访问LLServer服务端的一个客户端封装。下面分别看一下源代码,首先是LLStrategy.cs: 代码比较简单,大家看一下注释就可以了。下面是LLManager.cs文件的代码: LLManager.cs类主要是以封装了以http协议方式访问llserver的操作(因为llserver可支持http协议和memcached socket协议)。该类有两个地方需要注意:
1.使用base64对value部分进行编码,以解决object对象二进制序列化后llserver无法存储的问题(llserver这个问题将会在后续版本中解决)
2.在set/get操作时,对value结尾添加“$$END$$”标识来告之数据在该标识位结束。
了解了这些内容之后,之后再说一个企业版中使用memcached socket协议连接llserver的情况。因为之前企业版中已使用了memcached,这里如果要使用llserver,只须关闭当前llserver.config文件中的 并开启memcached.config文件中的 选项即可,但同时也要设置该文件的“<ApplyBase64>true</ApplyBase64>”节点,这样就可以用该memcached client来链接使用llserver了。
好了,到这里今天的内容就先告一段落了。
本文标签:
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
discuz去掉forum.php的方法
discuz是一款流行的开源论坛软件,广泛应用于各种网站中。在使用discuz建立论坛网站时,许多站长都想去掉论坛地址中的"forum.php",以达到美化网站的目的。DiscuzX插件开发手册
文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。Discuz的NT非官方升级介绍
接触Discuz的NT有很长的一段时间,从最初的神秘到现在的跃跃欲试,在这个九月之后一天,十一的前一天下午,终于完成了一次非官方升级!discuz帖子模块用到的表及自动发帖函数介绍
最近在做一个discuz的插件,由于需要程序自动生成并调用discuz已经存在插件的帖子。然而这就相当于自动发帖的功能了。网上找了一下,大部分都是通过curl模拟登陆,模拟发帖的
留言与评论 (共有 0 条评论) |