`
文章列表
1.客户从服务总线请求获取服务对象。      2.服务总线根据已注册的数据来找到该服务对象信息,如和客户端不在一个服务器类,返回一个远程代理,如在一个服务器类,返回一个包含本地服务对象的本地代理总之都是返回一个代理,对用户来说是透明的      3.客户调代理的方法, 如该代理是本地代理,直接调本地服务对象方法,并返回就结束      4.如是远程代理,远程代理先获取该远程服务器在本地对应的远程处理对象,如没有则创建一个,并缓存它      5.远程处理对象根据这次请求生成一个唯一的sessionid,封装到session对象中,      6.如第一次连接远程机器,则创建连接soc ...
  要支持分布式,首先要支持远程调用,而远程调用就需要有 向目标服务器发送请求报文,下面以Hession 作为传递的格式来说明:   Hession编码性能高,能自动转换成Java对象。采用TCP Socket连接   用Hession来传输报文的时候,发送方和接受方确认好传输的数据 是怎么封装的,包括请求消息和响应消息   首先要确认消息的固定头: [1]消息类型 [1]消息版本 [4]属性头长度 [4]消息体长度 [8]客户端会话ID<br> 一共18位   请求消息的消息体 包含 类方法id 和 参数, 属性体也可以包含服务名及客户自定义属性等信息   响应消息的消息 ...
服务总线就是指将系统中所有的公共服务汇总起来,形成一个服务池,各个独立模块需要服务时,只需要向总线索取就行。   这是服务总线最基本的功能,再加上面上接口的支持,服务总线能够大大的解耦各个模块(或子系统)之间的耦合关系。     服务总线的服务一般是模块或子系统暴露出来给别的模块和子系统调用的。而子系统内和模块内部使用的服务建议不暴露到服务总线中去。一来可以减少服务总线的管理压力。 二来这也是良好设计的考虑: 就是不要暴露外部不需要的接口。   服务总线除了集中管理服务和解耦之外,还可以提供一些额外特性来支持应用:     1. 可向用户屏蔽远程与本地服务, 当客户端向服务总线 ...

心跳检测

    在集群环境中,一台主Master机器会管理好几台slave机器,Master机器的一个重要功能是如何在运行过程中监视slave机器的运行异常状态,如网络断链,系统崩溃,从而对这些异常状态进行处理。采取的方式是心跳检测。     心跳检测有2种: 主动和被动     主动是指Master节点定时向所有节点发送心跳检测请求,所有节点响应后返回一个状态码,如某些节点返回异常或失败的状态码,则master认为此台机器处于异常状态,将会自动停止该台服务响应应用请求,并向管理员发告警邮件     被动是指slave节点定时向master节点汇报自己的状态,如在指定的时间间隔内,master没有 ...
分布式事件总线首先要解决如下几个问题: 1.如何发送事件对象给远程订阅者服务器.. 2.需要知道向哪些服务器发布事件,而不是所有服务器都发布,因为有些服务器没有订阅这种事件 3.服务器接受到一种事件时,要知道该种事件在本服务器内有哪些监听对象在监听,从而好调用 4.系统运行过程中,新增监听和去除监听一个事件时,如何通知发布者来同步本地的信息 5.监听者在处理事件时时间很长怎么办 6.某台订阅服务器不可用怎么办 7.如何监控事件总线的效率? 答: 1.每台服务器 都起一个事件接受服务,以接受发送者 发过来的事件。事件发送者在发送事件时,调用该远程服务来发送事件。 2.每台服务器 ...
事件是在一定条件下发生的动作或者操作,而且需要让事件订阅者知晓该事件已经发生。 事件有2个非常重要的概念:事件发布者,事件订阅者。 事件包含如下要素:事件ID:必须全局唯一,可以通过它的前缀进行过滤,字符串,建议采用Java的点分方式。                     事件发生时间:取UTC时间                     事件源:发生事件的源,是Object对象 事件总线的用例:发布事件,订阅/去订阅事件,满足分发性能规格,支持容错处理. 事件总线的好处是很多的: 如异步,模块解耦等 一般大型系统才会用事件总线,甚至一个公司所有的项目公用一个事件总线。 大型 ...

异常管理

很多项目对异常没有严格统一的管理而任由程序员随意抛出,从而导致项目里异常混乱,维护起来非常管理,我觉得异常管理不应该由程序员来处理,而应该由平台统一管理。  异常信息应该包含如下内容:异常ID:标示异常,全局唯一.异常描述信息

Ruby-第三天

    博客分类:
  • Ruby
   今天学习了Ruby的2章内容----标准类型 与 方法     标准类型: 数字,字符串,范围,正则表达式     其中正则表达式比较复杂,需要另起一章来描述了。其他都比较简单      Ruby的方法还是很灵活的:      1. 可定义参数默认值    2. 参数的个数可以动态改变    3. 可外接代码块    4. 数组自动转化为多参数    5. 可返回多个值    6. 支持显示的hash参数     一个写的好的ruby代码的特征: 包含很多小方法  

框架感想

  很多框架都会用一些开源软件如 Ibatis,quartz等。那么该怎么用呢。   很多业务功能都是直接调用这些框架相关的类来完成功能。    但我认为这么做是很不好的,理由如下:      1.与某一个具体的开源软件严重耦合,不利于替换。      2.与某一个具体的开源软件设计思想耦合,不利于更改。       更好的处理方法是 业务框架提供一个公共的方法接口。由业务框架将这些普通的,共性的功能来适配成符合成具体软件需要的接口。业务功能不需要关注用的到底是哪个开源框架。这样对之后业务功能的维护都是有很大好处的。    

Ruby-第二天

    博客分类:
  • Ruby
看到现在,感觉Ruby的语法还是比较简单的,基本上和Java差不多,比Java还简单点, 但Ruby是一个动态语言,向方法传代码块 的特性 让Ruby灵活的非常恐怖。 Ruby这种灵活,可以让开发人员只关注于应用,其他方面都不需要关注。真是恐怖啊。 想想Java代码, 有很多代码其实是与业务无关的。 要实现一个业务,你需要做很多其他的与语言相关的事情。 而Ruby就不需要。看来Ruby要领先于Java啊
  任务管理是一个非常有用的功能,能够给项目提供集中管理系统中的定时任务:     任务管理应提供如下几个功能:   1. 任务的生命周期管理: 立即执行,暂停,恢复,取消,终止,更新。   2. 任务可以持久化: 文件,数据库。系统重启时,任务管理模块会负责将所有还未完成的任务重新启动   3. 任务监听:  新增时,删除时   4. 链式任务: 任务之间执行的间隔    5. 分组管理  

Ruby-第一天

    博客分类:
  • Ruby
 Ruby是一门动态语言,内置了很多魔法实现,语法非常灵活。  许多在Java,C语言需要很多基础代码实现的功能,Ruby可以很短的代码实现。  很短的代码就意味着 开发效率高,维护好,代码质量高。 这是Ruby的一大好处    Ruby是一门纯面向对象的语言,所有的东西都是对象,这能让开发人员以统一的对象的思维来思考问题。  Java,C++虽然也是面向对象,但不是纯面向对象的,在做Java程序的时候,总会被一些非面向对象的思维打乱。  而Ruby就不会有这种情况了.这是Ruby的另一大好处。    

Hello Ruby

    博客分类:
  • Ruby
开始学习Ruby了,为啥要学呢,因为想互联网创业,听说Ruby很适合,所以就开始学了。 Ruby,我来了

加密算法

 为了安全缘故,需要对用户登录的密码进行加密,而不能将密码明文保存在数据库中,由于密码可能相同,所以加密的时候是将用户名和密码一起来加密的。用户在注册时候需要将输入的密码加密保存在数据库中,用户登录时将密码加密然后和数据库的密码对比。如相同且通过。下面是简单的算法:   import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64;      public void testHmacSHA256() throws Invali ...
 她任劳任怨。 全天24小时无条件接受你的工作安排,  她本领大,精通十八般武艺,编译代码,检查代码,执行单元测试,统计代码等等,而且她的本领还在持续增长中。  她公正无私,对谁都敢报问题  她明察秋毫,再小的问题也逃不过她的法眼。  她是谁?  她就是传说中的持续集成工具,IT项目的得力助手,有了她,你的项目会平稳前进,提高你的工作效率,及时发现项目中的问题。这么好的助手,你怎么会不心动呢。。。  
Global site tag (gtag.js) - Google Analytics