Framework和Architecture的区别

JerryXia 发表于 , 阅读 (3,743)
其实,Architecture这个字是建筑之意,也就是由没有建筑物到完成的过程,以及如何将建筑生产出来的方法(即建筑学),它是一种Guideline,又称蓝图(blueprint),它指导了建筑物应该要怎麽盖,墙要几公分高,梁柱的位置,地基的面积,基础要打在哪,高度要多高,房间要多大等等都有。但它却没有叫你要用什麽方式(工法)盖。软件也是一样,所谓的软件架构(Software Architecture)是一种软件的蓝图,它告诉你这个软件的结构,功能,介面,用法,与其他系统的构连以及数据交换... 阅读全文

分布式日志系统

JerryXia 发表于 , 阅读 (2,135)
我们采用了一个经典的组合 logstash + elasticsearch + kibana。说明:多个独立的agent(Shipper)负责收集各应用不同来源的数据,中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心LogStash后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。Shipper表示日志发送者,在应用中使用NLog组件来发送日志数据;Broker作为远程agent... 阅读全文

如何保证Redis的高可用性

JerryXia 发表于 , 阅读 (3,975)
如何保证Redis的高可用性?我脑海里第一个想到的一个词是集群部署了,至于如何集群部署Redis服务,则有如下几种细节上不同的方案。Redis HA方案HA的关键在于避免单点故障及故障恢复,在Redis Cluster未发布之前,Redis一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写,有不少应用是读写分离的,读写操作需要取不同的Redis实例,该方案也可用于此种应用,原理都是相通的,区别在于数据操作层如何封装),该方式要实现HA主要有如下几种方案:keepaliv... 阅读全文

CMS系统评论模块Cache优化

JerryXia 发表于 , 阅读 (1,938)
如上图中所示,缓存模块设计得比较巧妙,以显示页面为单位缓存数据,因为评论页面依照提交时间降序排列,每新增一条评论,所有帖子都需要向下移动一位,所以缓存格式设计为每两页数据一个文件,前后相邻的两个文件有一页数据重复,最新的缓存文件通常情况下不满两页数据。假设评论总数95条,每页显示20条时的页面缓存结构,此时用户看到的第一页数据读取自“缓存页4”的95~76,第二页数据读取自“缓存页3”的75~56,以此类推。这样发帖动作对应的缓存更新可简化为一次文件追加写操作,效率最高。而且可保证任意评论... 阅读全文