面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)

简介:

在写完面向服务架构~全局配置文件也面向服务了面向服务架构~全局配置文件也面向服务了~续(对性能的优化)之后,觉得程序还是有可以优化的地方,在我上一篇文章中也提到了cache,所以今天这一篇主要把cache加入到项目中来,以便最大程度上提高程序的性能。

 1      /// <summary>
 2         /// 从文件中反序列化到实体
 3         /// </summary>
 4         /// <param name="fileName"></param>
 5         /// <param name="type"></param>
 6         private IConfiger LoadConfigFile(string fileName, Type type)
 7         {
 8             this.configType = type;
 9             fileChangeTime[fileName] = File.GetLastWriteTime(fileName);
10             return ConfigSerialize.DeserializeInfo(fileName, this.configType);
11         }
12         /// <summary>
13         /// 加载配置文
14         /// </summary>
15         /// <param name="fileName">文件名</param>
16         /// <param name="type">ʵ实体类型</param>
17         /// <returns></returns>
18         internal IConfiger LoadConfig(string fileName, Type type)
19         {
20             return LoadConfig(fileName, type, true);
21         }
22 
23         /// <summary>
24         /// 加载配置文件
25         /// </summary>
26         /// <param name="fileName">文件名</param>
27         /// <param name="type">实体类型</param>
28         /// <param name="isCache">是否要从缓存读取</param>
29         /// <returns></returns>
30         internal IConfiger LoadConfig(string fileName, Type type, bool isCache)
31         {
32             if (!isCache)
33                 return LoadConfigFile(fileName, type);
34             lock (lockHelper)
35             {
36                 if (DataCache.GetCache(fileName) == null)
37                     DataCache.SetCache(fileName, LoadConfigFile(fileName, type));
38                 DateTime newfileChangeTime = File.GetLastWriteTime(fileName);
39                 if (!newfileChangeTime.Equals(fileChangeTime[fileName]))
40                 {
41                     DataCache.SetCache(fileName, LoadConfigFile(fileName, type));
42                     return LoadConfigFile(fileName, type);
43                 }
44                 else
45                 {
46                     return DataCache.GetCache(fileName) as IConfiger;
47                 }
48             }
49         }

实事上,使用cache使用的流程是:如果cache里没有文件的缓存,就向从文件缓存到cache,再判断是否文件被修改过,如果没有直接返回cache中的实体配置信息,如果文件已经被修改,就从文件中取回,并同时存入缓存。

以下是.net cache的操作功能类代码:

 1 namespace ConfigCache
 2 {
 3     public class DataCache
 4     {
 5         /// <summary>
 6         /// 得到cache键所对应的值
 7         /// </summary>
 8         /// <param name="CacheKey"></param>
 9         /// <returns></returns>
10         public static object GetCache(string CacheKey)
11         {
12             System.Web.Caching.Cache objCache = HttpRuntime.Cache;
13             return objCache[CacheKey];
14         }
15         /// <summary>
16         /// 将指定值设置到cache键上
17         /// </summary>
18         /// <param name="CacheKey"></param>
19         /// <param name="objObject"></param>
20         public static void SetCache(string CacheKey, object objObject)
21         {
22             System.Web.Caching.Cache objCache = HttpRuntime.Cache;
23             objCache.Insert(CacheKey, objObject);
24         }
25         /// <summary>
26         ///  将指定值设置到cache键上
27         /// </summary>
28         /// <param name="CacheKey"></param>
29         /// <param name="objObject"></param>
30         /// <param name="absoluteExpiration">绝对过期时间</param>
31         /// <param name="slidingExpiration">相对过期时间</param>
32         public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
33         {
34             System.Web.Caching.Cache objCache = HttpRuntime.Cache;
35             objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
36         }
37 
38         /// <summary>
39         /// 移除指定cache键
40         /// </summary>
41         /// <param name="CacheKey"></param>
42         public static void RemoveCache(string CacheKey)
43         {
44             System.Web.Caching.Cache objCache = HttpRuntime.Cache;
45             objCache.Remove(CacheKey);
46 
47         }
48 
49     }
}

这下子,应该有的都有了,业务分别了,性能也上去了,咱们的服务型配置文件的实现也就讲完了,呵呵,各位晚安了!

相关文章:

面向服务架构~全局配置文件也面向服务了

面向服务架构~全局配置文件也面向服务了~续(对性能的优化)

面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)

本文转自博客园张占岭(仓储大叔)的博客,原文链接:面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制),如需转载请自行联系原博主。

目录
相关文章
|
2月前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
73 11
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
3月前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
4月前
|
存储 资源调度 算法
操作系统的心脏:深入理解内核架构与机制####
【10月更文挑战第16天】 本文旨在揭开操作系统最神秘的面纱——内核,通过剖析其架构设计与关键机制,引领读者一窥究竟。在这篇探索之旅中,我们将深入浅出地讨论内核的基本构成、进程管理的智慧、内存分配的策略,以及那至关重要的系统调用接口,揭示它们是如何协同工作,支撑起现代计算机系统的高效运行。这既是一次技术的深潜,也是对“看不见的手”调控数字世界的深刻理解。 ####
95 3
|
4月前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性?
微服务架构中,如何确保服务之间的数据一致性?
|
4月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
108 3
|
4月前
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
5月前
|
存储 Linux KVM
Proxmox VE (PVE) 主要架构和重要服务介绍
Proxmox VE (PVE) 是一款开源的虚拟化平台,它基于 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 技术,支持虚拟机和容器的运行。PVE 还提供高可用集群管理、软件定义存储、备份和恢复以及网络管理等企业级功能。
1738 7
|
5月前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性
微服务架构中,如何确保服务之间的数据一致性
|
5月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
144 0

热门文章

最新文章