公司对基础软件平台的扩展性研究团队开始设立,我初定了如下的研究方向,欢迎大家补充。同时也希望能够给java开发者对于构建高扩展性java架构提供一些参考。
主要是分为:应用扩展性、数据扩展性、可复用扩展性、技术换代扩展性四个维度,另外增加了SAAS、PAAS架构研究方向。
主题一应用扩展性研究
1.应用包+服务器托管模式的多应用架构研究
该研究主要研究应用包+服务器托管多应用架构模式,旨在解决现在应用与runtime绑定的缺陷。特别是项目配置与应用配置相互交叉,造成管理上的混乱。
2.基于OSGI的插件式服务集成机制研究
OSGI是java界面目前非常热门的插件式模块管理技术,可对功能模块进行热插拔。OSGI思想与平台思想比较类似,是与平台服务集成技术最相近的一种技术,但是是一种开发的技术标准,功能更强大,并且有开源的项目支撑。平台未来的服务集成可以考虑此种技术。
3.Java SOA与平台整合研究
Java SOA与平台整合研究集中在两个方面:平台与PDA等其它异构平台的连接需要的webService(Axis、XFire等)技术研究;二是SOA体系结构本身的服务集成思想带给平台的启示。
4.EAI与ESB技术预研与平台应用可能性研究
EAI(Enterprise Application Integration)企业应用集成,ESB(Enterprise Service Bus)可以用于对企业应用进行整合,但是目前的应用状况是概念多于实践。对这一类技术可以简单研究一下,探讨一下在平台中应用的可能性。
主题二 数据扩展性研究
1.数据库水平切割技术研究
当数据量增长到一定程度,首先遇到的问题便是单表数据太大,效率大大降低,并且有的数据可能属于历史数据,访问不是很频繁。最有效的方式就是按照一定的规则进行切割,以提高单表访问效率;同时要提供一定的算法来命中需要访问的单表。
比如企业排污数据,可能每年都会有新的一批数据,每次访问时,当年的数据访问最频繁,但是当年以前的数据则只有在查询历史数据时才会访问到,这时候最好的办法就是进行按年切割。
再比如,假如用数据库记录结构化的日志信息,用户往往访问的也是最近的日志,以前的日志不经常访问,那么日志表也应该按照一定的时间进行分割。
再比如,不同地区的用户,经常访问的信息也是各自的地区范围内的信息,那么则可以按照地区进行数据切割。
所以数据水平切割是应对数据增长最直接的一种技术。
2.服务器集群与负载均衡技术研究
随着平台数据规模的扩大,如何在不调整大的架构前提下,通过使用增加服务器个数(比如信息服务器),来实现对海量数据的支持。简单的想法是,当数据量增大并且超出一个信息服务器的负荷时,应用服务器可以分发请求至两台信息服务器,而两个信息服务器之间可以进行负载均衡。这样以后数据量扩大时,只需要增加信息服务器个数,不用进行大规模架构调整。
主题三 可复用扩展性研究
1.业务基础平台体系结构研究
研究业务基础平台的体系结构,包括核心服务抽象、业务构建系统设计、二次开发框架搭建等问题,病重点参考成熟的大型业务基础平台。
主题四 技术换代扩展性
1.模型驱动架构(MDA)思想与技术研究
模型驱动架构(MDA)的思想是通过设计平台无关模型(PIM)来实现软件业务与具体开发技术的分离,这种思想也是实现技术换代扩展性的有效方式。
应用到平台这边来,最直接的体现是:平台可以实现UML模型与信息服务器信息模型的相互转换;平台架构和技术升级,只要UML模型不变,那么实现的业务就不变。MDA思想虽然还不成熟,但是它的这种模型与技术无关的思想,非常有利于平台升级后减少业务的重新开发,值得借鉴。
2.云计算应用模式研究
研究云计算有三个目标:
云计算有可能成为未来一种颠覆性的软件技术,平台以后切换到云计算平台,或者建立自己的私有云,并不是没有可能,因此提前研究可以降低以后的技术更换成本;
二是基于云计算的软件架构本身就有很强的扩展性,云存储和云计算都提供了很好的数据扩展性和应用扩展性;
三十云计算和物联网有着千丝万缕的联系,特别是当物联网发展到一定程度,数据量不是现在可以估计的,到时候只有云计算能够提供匹配的计算能力,如果公司要发展物联网技术,不可不研究云计算。
主题五 SAAS、PAAS架构研究
1.SAAS、PAAS多应用架构研究
研究基于现有平台如何支持SAAS、PAAS多应用,包括多应用的数据管理技术(包括数据记录标记、数据表切割、数据库隔离、服务器分离),Muti tenants多租户管理体系如何建构,如何完成业务模式定制等研究。