好久没有写过博客了,最近osmp项目开源后,接到不少朋友的咨询,现以osmp项目为基础一步一步介绍和带领你们步入osgi的世界。php
适合入门的OSGI实战项目:前端
http://git.oschina.net/wyuxiao729/osmpjava
osmp的起源:git
在上上家公司的时候和同事一块儿完成某运营商的智能网管入围测试项目,在他的带领下一步一步的接触osgi,同时被osgi灵活方便的部署和热加载深深的吸引,在完成此项目后,离开了公司,进入到一家游戏,娱乐,运营的公司,因为公司的不少项目是经过php开发的,在我进入公司后,公司决定使用java开发将原来不少项目重写一次,因为被osgi深深打动,因而决定使用osgi来搭建基础架构,并提供服务给前端。和上上家一块儿过来的同事一块儿基于osgi开发,并慢慢演进成现有框架。虽然说已经离开了上家公司,步入到现今这家互联网公司,也从之前的osgi和传统开发转变为如今的基础设施组,搞devops方面的开,容器云方面的开发,一直仍是放不下osgi,故将原来代码框架中的业务剥离出来开源出来。以供你们一块儿入门和交流!!!!web
OSMP组件介绍:redis
osgi环境下的组件(servicemix部署)算法
osmp-http:经过cxf对外发布统一请求入口,提供restful和soap两种协议的通信,将接收到的请求解析后路由到业务bundle去执行并返回给调用方sql
osmp-intf-define:抽像出来的核心框架的接口定义,基中最主要是两个接口 BaseDataService.java(定义的基本服务接口)、ServiceInterceptor.java(定义的基本拦截服务接口)缓存
osmp-service:服务组件,实现osgi的BundleListener和ServiceListener监听器,当有bundle被安装、升级时,将服务注册到zookeeper上,同时提供给osmp-http来查询服务将调用服务tomcat
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了,可是可能要稍微的注释掉一些代码才行!
基础组件就介绍到这儿。若是有不太清楚的欢迎加qq:335898216 交流!
下一篇将介绍osmp-http 在osgi环境下经过 cxf发布restful服务和webservice服务,将请求解析后调用业务组件提供的服务!