很久没有写过博客了,最近osmp项目开源后,接到很多朋友的咨询,现以osmp项目为基础一步一步介绍和带领大家步入osgi的世界。
适合入门的OSGI实战项目:
http://git.oschina.net/wyuxiao729/osmp
osmp的起源:
在上上家公司的时候和同事一起完成某运营商的智能网管入围测试项目,在他的带领下一步一步的接触osgi,同时被osgi灵活方便的部署和热加载深深的吸引,在完成此项目后,离开了公司,进入到一家游戏,娱乐,运营的公司,由于公司的很多项目是通过php开发的,在我进入公司后,公司决定使用java开发将原来很多项目重写一次,由于被osgi深深打动,于是决定使用osgi来搭建基础架构,并提供服务给前端。和上上家一起过来的同事一起基于osgi开发,并慢慢演进成现有框架。虽说已经离开了上家公司,步入到现今这家互联网公司,也从以前的osgi和传统开发转变为现在的基础设施组,搞devops方面的开,容器云方面的开发,一直还是放不下osgi,故将原来代码框架中的业务剥离出来开源出来。以供大家一起入门和交流!!!!
OSMP组件介绍:
osgi环境下的组件(servicemix部署)
osmp-http:通过cxf对外发布统一请求入口,提供restful和soap两种协议的通讯,将接收到的请求解析后路由到业务bundle去执行并返回给调用方
osmp-intf-define:抽像出来的核心框架的接口定义,基中最主要是两个接口 BaseDataService.java(定义的基本服务接口)、ServiceInterceptor.java(定义的基本拦截服务接口)
osmp-service:服务组件,实现osgi的BundleListener和ServiceListener监听器,当有bundle被安装、升级时,将服务注册到zookeeper上,同时提供给osmp-http来查询服务将调用服务
osmp-jdbc:数据持久层组件,提供基于druid数据源的动态创建和消毁,同时提供了一套基于jdbc-template并模仿mybatis的数据持久层接口,sql的动态管理功能等。
osmp-resource:提供全局的资源配置管理
osmp-log:全局的日志监控和管理
osmp-cache-define:osgi环境下全局组件业务cache定义
osmp-osgi-cache:osgi环境下基于ehcache的业务缓存,可以通过osmp-web实时动态的修改缓存策略,比如开启基于方法的缓存,动态调整失效、存活时间,也能方便的扩展为通过redis的分布式缓存。
osmp-config:全局配置管理,配置osmp-web(管理后台)下发配置和参数
osmp-monitor:使用camel写的一个简单的性能监控组件,主要用到了camel-http,camel-quartz,定时将服务器cpu、memory信息推送到osmp-web(管理后台)
osmp-util:工具组件
osmp-tools:工具组件
osmp-zookeeper:zookeeper工具组件
osmp-demo:简单的基于osmp下业务开发的demo
管理后台
osmp-web:osmp的管理后台,这个不多说,直接跑在tomcat,jetty里。
osmp-cache:web工程下的cache组件,可以通过页面动态修改缓存策略,开启,关闭基于方法级别的业务缓存。
提供给业务方的sdk
osmp-client:提供给业务方的sdk client,通过此组件监听zk上注册的服务,服务器的状态,及osmp-web发布的策略,进行服务发布、服务路由、负载均衡算法,基于参数级别的灰度等。
各基础业务组件有相互依赖关系,最小部署单元如下:
osmp-http、osmp-intf-define,osmp-service、osmp-utils、osmp-tools
由于提交的代码当中要跑起来,其他组件达到ppt当中的效果,所以其它组件也必须要部署,如果只想单机跑的话。以上组件就ok了,但是可能要稍微的注释掉一些代码才行!
基础组件就介绍到这儿。如果有不太清楚的欢迎加群:335898216 交流!
下一篇将介绍osmp-http 在osgi环境下通过 cxf发布restful服务和webservice服务,将请求解析后调用业务组件提供的服务!