随笔分类 - [20]DesignAnalysis设计分析
-
缓存命中和缓存未命中&缓存与缓冲间的差异
摘要:在大多数计算机中,缓存是一个很重要的技术。事实上,计算机中的所有数据访问都可以看成是基本缓存概念的某种变体。不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想。即数据从一个地点拷贝到另一个地点,使之检索起来更快。虽然这是一个简单概念,但却包含着许多奇思妙想。简单地说,为满足某种预期的未来需要所做的准备即缓存。缓存是一种人类的本性,为了保证充分的物品供应量,需要预先进行计划,然后选择一个能够提供最快服务的地方,存放它们,这就是所谓的可靠物资管理。它也是计算机系统的核心概念,即将需要的信息放在可以最 阅读全文
-
CJCMS系列---说说项目中的任务管理模式
摘要:在系统开发过程中,肯定会有许多比较大型的任务需要去做,例如给所有注册的用户发送推广邮件,可是要是注册用户达到几十万级别,那我想这个发送邮件的工作可能真的让你很头疼,几十万的发送量,根本无法保证发送过程不会出错,被应用程序池回收,毕竟占得内存太大了,或者耗时过长。那任务管理不得不提上来讲讲了。 任务管理,最重要的就是保证任务能够完整的完成,不管遇到什么问题,是否线程崩溃或被回收。 就拿你要发邮件做例子,这么多的邮件,我想不可能一次就发完的,那我们就隔几分钟发送1000人也好啊。 下面是代码: 1 /*******************************************... 阅读全文
-
FFLIB 框架Broker 之Master/Slave 模式
摘要:在FFLIB的两篇介绍中,已经介绍了FFLIB是基于Broker模式构建的框架,核心组件关系图如下: http://www.cnblogs.com/zhiranok/archive/2012/07/30/fflib_framework.html http://www.cnblogs.com/zhiranok/archive/2012/08/08/fflib_tutorial.html 这种情况,比较明显的瓶颈是Broker 只有一个。在Client 和 Service 节点不断增多的情况下,单个Broker 将会无法承载。所以本文将探究如何扩展FFLIB 。 其实解决之道也很直接,... 阅读全文
-
性能测试知多少---性能需求分析
摘要:需求分析是个繁杂过程,它并非我们想象的那么简单,而性能测试需求除了要对系统的业务非常了解,还需要有深厚性能测试知识。才能够挖掘分析出真正的性能需求。如何获得有效的需求1、客户方提出 客户方能提出明确的性能需求,说明对方很重视性能测试,这样的企业一般是金融、电信、银行、医疗器械等;他们一般对系统的性能要求非常高,对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目,已经到最后的性能测试极端,因为数据库设计不合理,导致性能出现很大的问题,最终不得不把整合项目作废,对于这样的项目,其实从分析设计阶段就应该考虑系统的性能问题。性能测试也一样,对于某些项目来说越早进行越好。当然,前期的性能测试.. 阅读全文
-
【数据库事务日志碎片原理分析与方案】-分析篇
摘要:前言:对于Log日志文件,相信大家都应该非常的熟悉了,Log日志文件的优化是性能调优和故障排除中的一个老大难。在优化的过程中,常常有人说”把Log日志放在单独的磁盘上面,并且将其自动增长禁止,并且把大小设置的和磁盘大小接近,可以提高性能“,确实,这句话看起来很对,但是最后发现似乎又不太对。通过研究和学习,也看了一些国外社区的文章,发布此文。一般而言,我们都没有必要去关心事务日志中的虚拟日志文件的个数。这里提到的“虚拟日志文件”的概念,我们后面会进行专门的讲述。很多的时候,我们在建立数据库的时候,都采用了它的默认配置,即:将日志的增长方式设定为“自动增长”,这样会直接导致一个后果就是“文件碎片” 阅读全文
-
使用RabbitMQ
摘要:我们在使用RabbitMQ的过程中遇到了一个很麻烦的问题。(RabbitMQ version 2.8.1, Erlang version 5.7.4)我们的使用场景如下:1.cluster模式(假设有3台机器组成的集群);2.一个exchange,后边绑定多个队列;3.多个producer(producer数目无法减少,和上游流程的处理能力相关);4.producer可能向多个队列里发消息,消息的到来不均匀,导致可能存在多个producer同时向一个队列持续发送消息的状况;5.消息大小在100KB上下;6.客户端随机连接一台server;7.为了增加发送消息的速率,一个连接对应10个chann 阅读全文
-
Iveely搜索缓存策略
摘要:在上周发布的Iveely Search Engine 0.1.0版本中,未包含IveelySE的搜索缓存策略,如果没有此缓存,那么每次搜索都将是从数据系统中分析读取结构,将是件很麻烦的事情。今天花了2个小时,写了下缓存策略的Codes。搜索缓存的主要工作是将最近最近搜索比较活跃的内容保存到内存中,以便下次搜索更加快速反应给用户,主要目的也是减少CPU计算和磁盘IO。 IveelySE此时的缓存策略相对简单:将用户搜索的结果,按照时间顺序存入内存中,如果已经在内存中,那么将其提升到最近使用范围内,直到内存中的缓存数量(自定义)达到饱和后,依次淘汰最久未使用的搜索结果。思路相对简单,但是这样的数据 阅读全文
-
说说项目中的插件思想
摘要:目前项目的架构基本趋势都是易扩展,易扩展主要的实现方式就是插件,在项目中所有的扩展模块都看作为是一个插件,那最为主要的就是插件与母体如何结合起来的,接下来就来讨论一下,我对于插件项目的理解和实现。同时由于本人能力有限,问题会很多,请大家批评指正。 我认为插件就是就是一个单独的项目,到最后整合到一个母项目中去。后台的逻辑代码根本就不用分开,用命名空间分开即可,只要在UI上面做做到分开行了,当然有些要求比较高的,就是从UI到逻辑都是分开来写的,但是我这里觉得不用,读者可以根据自己的要求来做。 直入主题,先说一下我写的例子的主体结构,直接把解决方案的截图拿上来,看看如何分层的。 ... 阅读全文
-
网络架构方案
摘要:做软件,免不了碰到网络架构,自己想了一个网络架构,利用DNS的实现负载均衡后,理由路由再一次实现负载均衡。1.当有请求过来时,将不同IP段的dns请求指向不同的路由,实现负载均衡。当数据包到达了指定路由器后,再一次负载均衡(查看哪条链路比较空闲,就使用哪条链路)。2.利用apache,来对请求进行转发。apache很强大哈。。根据ip和端口号来进行双向的转发,这样有效的隔离的内网和外网。3.现在还没有想到如何有效的对数据仓库进行负载均衡。拆分表到多个数据库服务器、或者使用一定的算法将数据拆分到多个数据库中。一个纵向拆分,一个横向拆分。4.请各位评头论足。晒一晒自己的解决方案呢。每个人都应该为他 阅读全文
-
web插件化解决方案 开发分享
摘要:web插件化解决方案 开发分享经过苦逼的大半年开发,我的web插件花方案最终得以实现。系统由WebAPP运行时(Web Framework)和WebAPP开发IDE(APP IDE)两部分组成。由APP IDE开发出来的WebAPP运行在Web Framework上。接下来我将从WebAPP的开发、发布、WebSite中运行WebAPP这三点来展开本文。开发步骤一。在IDE中创建了一个项目,然后打开项目。编辑”appConfig“ 文件。”appConfig“文件里可以定义APP的名称、开发者、描述等信息。图1:use_global_classes:false节点是设置是否在APP中使用自己的 阅读全文
-
如何选择ESB
摘要:什么是ESB企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service Oriented Architecture, SOA)发展而来的。SOA描述了一种IT基础设施的应用集成模型;其中的软构件集是以一种定义清晰的层次化结构相互耦合。一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。在企业计算领域,企业服务总线是指由中间件基础设施产品技术实现的、 通过事件驱动和基于XML消息引擎,为更复杂的面向服务的架构提供的软件架构的构造物。企业服务总线通常在企业消息系统上提供一个抽象层,使得集成架构师能够不用编码而是利 阅读全文
-
基于接口和队列的线程操作UI方式
摘要:在实际开发应用中,非UI线程操作UI是普遍存在的,在.net下一般是通过Control.Invoke的方法来进行操作,但到处都是Control.Invoke代码维护可是一件麻烦的事情。以下通过接口和队列来规范非UI线程操UI的实现。 既然要规范处理那接口是个不错的选择,以下定义一个简单的执行接口?1234publicinterfaceIInvokeItem{voidExecute();} 以下是扩展一个简单的操作类封装?12345678910111213141516classControlInvoke<CONTROL,DATA> : IInvokeItem{publicContro 阅读全文
-
监控及日志
摘要:3. 配置日志在配置文件的起始部分增加 Common Logging 的配置支持。现在的配置节定义成为了下面的样子。 <configSections> <!-- Spring 的配置 --> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/> <!-- 支持在 web.config 中定义对象 --> 阅读全文
-
OceanBase,淘宝开源的千亿级别分布式数据库系统。支持读写事务的线上服务
摘要:http://code.taobao.org/p/OceanBase/src/楚材 / OceanBase - /OceanBase,淘宝开源的千亿级别分布式数据库系统。支持读写事务的线上服务 下载代码:svn co http://code.taobao.org/svn/OceanBase/trunk OceanBase 阅读全文
-
.NET面向上下文架构模式(概述)
摘要:1.上下文概述上下文:其实就是一个逻辑上的业务、功能区域。在这个逻辑区域里可以有效的进行管理,算是一种制度的约束,也可以理解为某种范围类的数据共享。其实在很多应用框架中到处可以看见上下文的概念,包括.NET本身的设计就建立在这种思想上的。实例化的对象默认存在于系统中的默认上下文中,我们可以构建自己的上下文将对象在运行时进行合理的管理。在ASP.NET框架中比较经典的就是HttpContext上下文对象。所有的运行时对象都会逻辑归属到HttpContext上下文中来,如:我们可以使用Request、Response等对象访问HTTP处理的生命周期数据。在Remoting中跨AppDomin访问也 阅读全文
-
远程服务器监控程序浅谈
摘要:参考文献:用C#开发较完整的Windows任务管理器http://www.cnblogs.com/lemony/archive/2007/04/11/708309.htmlWin32_ClassName列表名单:http://www.codeproject.com/KB/system/GetHardwareInformation.aspx软件名称:远程服务器监控程序。软件功能:监视CPU、内存、硬盘、进程的使用情况开发方法:C# 查询WMI信息调用接口:本地查看视图或远程访问XML文件运行平台:WindowsXP/Windows Server2003/Windows Server2008(已测 阅读全文
-
好的设计能减少大量的工作
摘要:目前对一个大型的web业务系统进行修修补补,增加功能,完成工作之余,不得不对大量冗余的工作量表示抱怨。一个好的系统应该 对修改关闭,对扩展开放。下面开始意识流。。。。统一的命名规范与接口 命名规范没什么好说的,一个团队不一定要找最好的规范,但是必须统一。 接口与敏捷开发有些许的冲突,互联网的日新月异,敏捷的快速迭代,貌似不能再开发初期就把整个系统设计好。不过还是有很多的规范或者习惯在项目或者说全部开发初期约定好,比如方法名称的命名方式,重载的命名方式,参数顺序等等等等。 几个简单的例子。GetList的时候 返回值尽量用 IEnumable 而不是 List或者IList。重载的时... 阅读全文
-
工作流设计简介
摘要:工作流设计简介适读人群:参与过工作流功能开发的程序员。(有可能你并不知道,你现在做的功能就是一个工作流功能)一、什么是工作流举个很土的例子。程序员出差,回来后要报销票据。公司规定票据需要由员工所属经理审批,然后交由财务审批,财务审批通过程序员才可以拿到钱。在这个过程中,经理可以驳回申请,财务也可以驳回申请,驳回后单据回到程序员编辑草稿的状态。见下图。这就是一个工作流,一个单据由多个角色的用户审批,不同角色看到的界面是不同的,每一个状态都对应一个界面,例如程序员能够看到“开始”和“草稿”的页面,能够编辑报销单据的名称和金额等信息,可以点击“保存草稿”和“提交经理审批”按钮;经理能够编辑“经理审批 阅读全文
-
EhCache 分布式缓存/缓存集群
摘要:EhCache 分布式缓存/缓存集群开发环境:System:WindowsJavaEE Server:tomcat5.0.2.8、tomcat6JavaSDK: jdk6+IDE:eclipse、MyEclipse 6.6开发依赖库:JDK6、 JavaEE5、ehcache-core-2.5.2.jarEmail:hoojo_@126.comBlog:http://blog.csdn.net/IBM_hoojohttp://hoojo.cnblogs.com/http://hoojo.blogjava.net前面2篇文章介绍到Ehcache 整合Spring 使用页面、对象缓存http:// 阅读全文
-
公司项目使用的架构分析
摘要:在一个好的架构下编程,不仅对于开发人员是一件赏心悦目的事情,更重要的是软件能够表现出一个健康的姿态;而架构设计的不合理,不仅对于开发人员是一件受苦受难的事情,软件本身的质量更是受到严重威胁。下面的架构设计是公司项目中实际使用的,希望大家不吝指教,沟通改进。架构设计图架构说明一个标准的三层架构包含如下三个部分:展示层,负责系统与客户的交互业务逻辑层,负责处理系统的业务数据访问层,负责处理数据,与不同的数据库打交道我们在此三层架构的基础上进行一些小的扩展,增加了一个服务层,使其方便与其他系统进行数据交互和业务集成。公共组件则是抽象了系统中可以共用和重用的部分。组件设计图组件说明App——页面展示采 阅读全文