架构设计
NetFishTail
这个作者很懒,什么都没留下…
展开
-
Web应用缓存
缓存 概述: 缓存可提高性能,减少资源消耗 Web应用存在的5大速度差异及缓存方案 1。读取文件系统 > 读取磁盘 缓存方案:操作系统磁盘缓存,可减少磁盘机械操作 缓存策略:操作系统自动管理,不需人工干预 2。数据库内存>文件系统 缓存方案:数据库缓存 缓存策略 Query Cache Data Buffer 3。应用内存>访问数据库服...原创 2010-09-26 14:48:03 · 131 阅读 · 0 评论 -
分布式服务如何实现服务回调-流程
1.服务提供者提供的服务接口类中 先声明好 哪些参数类型是 回调类型的,从而同普通的方法参数区别开来 @Callback(MyLister.class) public interface DemoService{ void handle(String cond,MyLister callback);} 2.客户端一启动时都提供一个的回调服务集中处理回调请求 ...原创 2011-07-29 11:46:21 · 1073 阅读 · 0 评论 -
分布式服务如何实现服务回调
分布式服务如何实现服务回调 服务回调: 是服务提供者给调用者提供的一个功能,允许在执行服务的过程中,当满足一定条件时,回调用户的接口方法。 Java实现回调步骤主要如下: 1. 服务提供者定义回调接口,并提供包含回调接口参数的服务方法,在方法实现中调用回调接口参数的方法。 2. 客户端实现回调接口 3. 客户端将回调接口实现对象作为参数,调用服务方法. ...原创 2011-07-29 10:49:28 · 763 阅读 · 0 评论 -
分布式服务实现细节-服务端响应流程
服务端响应请求的流程是: 1.在固定的端口,监听远程连接socket,采用长连接方式,准对每个客户端都保留有一个处理对象。socket缓存在处理对象中,对该客户端一直打开着 2. 处理对象 按照请求报文格式解析请求报文,解析完后,将他们封装到新的session对象中,立马换另外一个线程取下一条,而自己则调用session对象继续处理业务逻辑。采用的是领导者跟随者模式,减少...原创 2011-07-28 20:08:44 · 235 阅读 · 0 评论 -
分布式服务实现细节-客户端发送流程
1.客户从服务总线请求获取服务对象。 2.服务总线根据已注册的数据来找到该服务对象信息,如和客户端不在一个服务器类,返回一个远程代理,如在一个服务器类,返回一个包含本地服务对象的本地代理总之都是返回一个代理,对用户来说是透明的 3.客户调代理的方法, 如该代理是本地代理,直接调本地服务对象方法,并返回就结束 4.如是远程代理,远程代理先获取该远程服务器在本地对应...原创 2011-07-28 20:08:04 · 173 阅读 · 0 评论 -
分布式服务实现细节-Hession举例:
要支持分布式,首先要支持远程调用,而远程调用就需要有 向目标服务器发送请求报文,下面以Hession 作为传递的格式来说明: Hession编码性能高,能自动转换成Java对象。采用TCP Socket连接 用Hession来传输报文的时候,发送方和接受方确认好传输的数据 是怎么封装的,包括请求消息和响应消息 首先要确认消息的固定头: [1]消息类型 [1]消息版本 [4]属...原创 2011-07-28 20:06:51 · 149 阅读 · 0 评论 -
分布式服务总线
服务总线就是指将系统中所有的公共服务汇总起来,形成一个服务池,各个独立模块需要服务时,只需要向总线索取就行。 这是服务总线最基本的功能,再加上面上接口的支持,服务总线能够大大的解耦各个模块(或子系统)之间的耦合关系。 服务总线的服务一般是模块或子系统暴露出来给别的模块和子系统调用的。而子系统内和模块内部使用的服务建议不暴露到服务总线中去。一来可以减少服务总线的管理压力。 二来...原创 2011-07-26 15:13:35 · 466 阅读 · 0 评论 -
分布式事件总线-问题域
分布式事件总线首先要解决如下几个问题: 1.如何发送事件对象给远程订阅者服务器.. 2.需要知道向哪些服务器发布事件,而不是所有服务器都发布,因为有些服务器没有订阅这种事件 3.服务器接受到一种事件时,要知道该种事件在本服务器内有哪些监听对象在监听,从而好调用 4.系统运行过程中,新增监听和去除监听一个事件时,如何通知发布者来同步本地的信息 5.监听者在处理事件时时间很长怎么办 6.某...原创 2011-07-22 18:15:56 · 286 阅读 · 0 评论 -
分布式事件总线-概述
事件是在一定条件下发生的动作或者操作,而且需要让事件订阅者知晓该事件已经发生。 事件有2个非常重要的概念:事件发布者,事件订阅者。 事件包含如下要素:事件ID:必须全局唯一,可以通过它的前缀进行过滤,字符串,建议采用Java的点分方式。 事件发生时间:取UTC时间 事件源:发生事件的源,是Object对象 事...原创 2011-07-22 16:05:42 · 812 阅读 · 0 评论 -
异常管理
很多项目对异常没有严格统一的管理而任由程序员随意抛出,从而导致项目里异常混乱,维护起来非常管理,我觉得异常管理不应该由程序员来处理,而应该由平台统一管理。 异常信息应该包含如下内容:异常ID:标示异常,全局唯一.异常描述信息 ...原创 2011-07-22 09:36:44 · 128 阅读 · 0 评论 -
框架感想
很多框架都会用一些开源软件如 Ibatis,quartz等。那么该怎么用呢。 很多业务功能都是直接调用这些框架相关的类来完成功能。 但我认为这么做是很不好的,理由如下: 1.与某一个具体的开源软件严重耦合,不利于替换。 2.与某一个具体的开源软件设计思想耦合,不利于更改。 更好的处理方法是 业务框架提供一个公共的方法接口。由业务框架将...原创 2011-07-19 11:24:23 · 190 阅读 · 0 评论 -
任务管理模块
任务管理是一个非常有用的功能,能够给项目提供集中管理系统中的定时任务: 任务管理应提供如下几个功能: 1. 任务的生命周期管理: 立即执行,暂停,恢复,取消,终止,更新。 2. 任务可以持久化: 文件,数据库。系统重启时,任务管理模块会负责将所有还未完成的任务重新启动 3. 任务监听: 新增时,删除时 4. 链式任务: 任务之间执行的间隔 5. ...原创 2011-07-18 14:37:45 · 1026 阅读 · 0 评论 -
Web框架-面向业务的视角
多年从事J2EE项目中,发现开发人员花Web前台开发的时间要占总功能的70%以上,他们要写各种各样Ajax方法,Js方法,设计页面,调试页面,写配置文件,写control代码,甚至还要设计css, 而后台却只有一个方法。怎样才能减少开发人员上面的工作量呢,答案就是提供一个优秀的前台Web框架.该Web框架应该能给开发人员提供以下支持: 面向业务的视角,Struts和Spring实际上面...原创 2011-07-05 09:41:20 · 169 阅读 · 0 评论 -
优秀的数据库访问组件
优秀的数据库访问组件应该具备如下的功能: 1.执行普通SQL 2.执行存储过程 3.SQL语句配置化,动态参数化 4.支持触发调用 5.异步执行 6.批量提交 7.分页查询 8.多数据源查询 9.在线结果集与离线结果集 10.数据源路由 11.分布式事务配置 12.数据源监控 13.超长SQL监控 14.故障重做 15.主备切换 16.数据库切换 后面我将对几个特...原创 2011-06-09 20:28:23 · 174 阅读 · 0 评论 -
Restful(一)
如何区分市场上各种web服务,不是看他采用的具体技术,而是看他的架构以及蕴含的设计哲学,可以用下面2种问答 一.从方法来讲,客户端是如何将它的意图传给服务器的 传统的企业应用(如采用struts,webwork)都是请求头里包含方法信息,如XXX.action,XXX.do,这个XXX就会被服务器定位到具体哪个方法,而HTTP原生方法就是get,post soap是将方法等重...原创 2011-08-02 11:37:50 · 91 阅读 · 0 评论