《Java应用架构设计:模块化模式与OSGi》读书笔记
所属分类 OSGI
浏览量 1090
微服务 模块化 Java9 Jigsaw
模块定义
软件模块是独立可部署的、可管理的、进程内可重用的、无状态的软件单元。
可管理即模块可以安装、卸载和更新。
在Java中,模块就是jar包。
与分布式服务不同的是,这里的模块是进程内重用
模块是比服务更小的单元
动态模块化技术如OSGi 尚未普及
微服务 更流行 , 微服务架构更优
应用 模块 包 类
模块化模式
基本模式
管理关系:设计模块之间的关系
模块重用:强调模块级别的重用
模块内聚:模块的行为应该只服务于一个目的
依赖模式
非循环关系:模块之间的关系非循环依赖
等级化模块:模块关系是等级化的,物理分层旨在为组成应用的分层创建多个模块,更多是与职责相关,而等级与理解系统的结构和关系更为密切,比分层更为细粒度,一个分层可能会有多个等级。
物理分层:模块关系不影响物理分层,如展现、领域、DAO。
容器独立:模块不依赖于具体容器,采用轻量级容器,如Spring
独立部署:模块可独立部署
可用性模式
发布接口:暴露API
外部配置:使用独立的配置文件用于不同的上下文。外部化配置增加了模块的重用行,但降低的易用性。如一个提供连接池的模块,user,password通过配置文件配置而不是硬编码在模块中,这就方便重用,但会使得易用性降低,因为使用之前必须配置对应的上下文
默认实现:为模块接口提供默认实现,并提供扩展机制,默认实现有助于在重用和易用之间取得平衡。如dubbo的扩展点机制
模块门面:为底层细粒度模块创建一个门面,提供高层API协调一组细粒度模块的行为
扩展性模式
抽象化模块:依赖于抽象而不是具体,典型的例子如通过Spring注入具体实现,bean里面依赖的属性是接口
实现工厂:通过实现工厂建立适当的对象引用,如Spring的装配
分离抽象:将抽象类与实现类放在各自的模块中,从而能用新的实现替换已有的实现,帮助创建灵活和可扩展的系统
通用模式
就近异常:异常定义应该接近抛出他们的模块
等级化构建:按照模块的等级构建
测试模块:每个模块应该有一个对应的测试模块
模块化与OSGi
OSGi是Java中的动态模块系统,定义了一个模块化单元,称之为bundle,是一个jar文件。
bundle在同一个JVM中进行部署和交互,在进程内跨bundle交互,并且可动态部署bundle
OSGi只是提供一个运行时环境
模块化与微服务
两者都是可独立部署的,重视逻辑的可复用性,强调一个大的软件系统需要拆分为各个部分,保持高内聚低耦合,实现更好的软件架构。
模块化强调进程内重用
微服务属于分布式服务,通过RPC协议在进程间重用
Java9 模块化项目(Jigsaw )
https://mp.weixin.qq.com/s/SrRAPsC9ZodzktORMV2D4Q
常见的OSGI框架
上一篇
下一篇
Mysql binlog 简介
mysql的一些技术名词
常见的OSGI框架
程序出问题时程序员最喜欢说的20句话
Iterator 与 ListIterator
eclipse安装jetty插件