企业级分布式开发框架 JEA

Apache
Java
跨平台
2014-12-12
yiyongfei

JEA定位为面向服务的企业级分布式开发集成框架,要完全发挥JEA的各项特性,需要准备多台服务器分别部署应用和支撑系统,如果要商用,相对来说大中型企业可能会更适合些。主要特点如下:
1、分布式远程过程调用:随着SOA越来越深入人心,软件的整体设计可能也会像传统工业社会一样,慢慢向流水线方向发展。曾经接触过很多类似这样的产品:它们独力完成了所有的业务工作,不需要和其它业务系统进行协同工作,随着时间的推移,它们越来越庞大,越来越难维护,而且还会发现一个很神奇的现象,产品里的很多业务功能总是能在同家公司的其它产品里发现。解决这个问题的有效办法是对业务系统进行拆解,根据不同的业务节点拆解成多个子系统,一笔交易通过远程调用的方式由各个子系统协同完成,这样可以很好的控制各子系统的复杂度,同时也能提升业务重用。JEA的分布式远程过程调用是通过Storm的DRPC来实现的,由Spring做IOC容器管理,很容易做横向扩展,开发方面符合Spring通用开发模式,通过Maven生成发布包发布到Storm上,之后即可通过dispatch(String callback, String facadeId, Object... objs)调用,JEA在处理时会首先通过Kryo将对象序列化,然后发送到DRPC服务器,转交给Topology后由Bolt进行反序列化并调用Facade来完成交易。而对于实效性要求不高的异步交易,JEA同样通过ActiveMQ队列方式提供了支持,JEA将对象序列化后发送到相应的队列后结束本次交易,而Storm服务器的MQTopology会定时从队列里轮询,发现有新消息后调用Facade来完成交易。
2、二级缓存和双重缓存(很容易扩展成多级缓存和多重缓存):鉴于分布式多服务器部署的考虑,JEA的缓存服务器只支持Memcached和Redis这二种,同时通过配置可使其支持二级缓存和双重缓存。双重缓存,在往L1缓存数据时会同时往L2缓存一份数据,此时L2将作为L1的备份缓存,如果L1缓存失效,会自动从L2缓存里去获取数据,避免缓存雪崩的发生。二级缓存,Memcached和Redis都是性能优越的缓存服务器,但它们都有各自的特色,相互之间并不能完全替代,有条件的情况下,建议打开JEA的L1缓存和L2缓存,然后往缓存服务器新增或更新缓存数据时,根据实际的业务情况制定缓存策略,决定是将业务数据缓存在L1缓存还是缓存在L2缓存,通过调用CacheContext.set(String cacheLevel, String key, Object value, int seconds)将数据缓存在指定级别的缓存器上。
3、面向服务体系结构:每一个基于JEA进行构建的系统,它即是一个服务提供者,同时它也可以作为服务消费者。向外部系统提供服务时,除了通过Storm和ActiveMQ队列这二种不同时效要求的方式外,JEA还支持更通用的基于WebService的REST服务或者SOAP服务,鉴于性能、稳定性和横向扩展等需要,在企业内部构建SOA服务体系,建议基于Storm+MQ来构建整套服务体系,如果需要提供服务供外部机构调用,再在其基础上额外提供更通用的REST服务或SOAP服务。而向外部系统消费服务时,主要基于外部系统所提供的服务接口方式调用不同的消费方式来获得服务的请求结果,目前允许的消费方式有:ActiveMQ、Storm、REST、SOAP这四种,如果服务提供方提供的是REST服务,此时数据默认将按JSON的方式组织发送。
4、JEA整体是基于Spring进行容器管理,通过Maven进行构建,同时又集成了Hibernate和Mybatis这二大开源ORM框架,所以通过JEA很容易构建出一套SpringMVC系统,系统分层结构:Web->Bridge->Facade->Service->Dao(Integration,对外消费服务),其中Web可以单独部署成Web服务器,Bridge及之后各分层组成StormTopology服务发布到DRPC服务器上,另外在Dao层通过AbstractBaseDAO所提供的各个方法,很容易完成DB层面的CRUD操作,只是需要注意,JEA要求所有的DB事务管理统一交由Hibernate进行管理,所以所有涉及会引发DB数据变化的操作都由Hibernate来完成,而查询操作则交由Mybatis来完成(后续将引入自定义的缓存机制,使Hibernate和Mybatis能够共享缓存内容)。

子项目的说明:
1、web,用于Web层,封装了调用AppServer的序列化逻辑和调用逻辑
2、integration,用于Integration层,封装了调用外部系统的(需优化)
3、ws,提供MQ、REST、SOAP、STORM服务的一些封装
4、orm,对于Hibernate和Mybatis的一些封装
5、cache,对于Memcached和Redis的一些封装
6、core,核心组件
7、achieve,一些默认实现

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Informatica命令调用 cmd

http://wenku.baidu.com/link?url=p3E_Hkyc1Ptw1o4ET2kDKivWyC78Ao5ywvbeiNT0Jsxa0FMYMDZFK_AfzOYTujt7mlcVxkxhImxc-fXpPdQJy3rWFucifxvaPo0Jea3_R9e...

2016/12/01 20:41
23
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部