架构设计相关概念
架构体系结构风格是描述某一个特定领域中系统组织方式的惯用模式,组织方式描述了系统组成构件的组织方式,惯用模式则反映众多软件系统共有的结构和语义
- 架构风险:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的的隐患
- 风险点:可能引起风险的因素,称为风险点。如果某个做法有隐患,有可能导致一些问题,则称为风险点
- 非风险点:如果某件事情是可行的, 可以接收的,则为非风险点
- 敏感点:敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性
- 权衡点:权衡点是影响多个质量属性的特性,是多个质量属性的敏感点
ESB 的特点
- SOA的实现方式,总线作用,服务连接和整合
- 描述服务的元数据和服务注册管理
- 传递数据、数据转换、同步、异步
- 发现、路由、匹配、选择
架构评估方法
- 基于问卷调查的方式:架构方面的问卷,要求评估人员对架构熟悉
- 基于度量的方式:定量来度量的架构,比如代码行数,要求评估人员对架构熟悉
- 基于场景的方式:主要方式,首先确定应用领域功能与架构的结构映射,然后用4+1视图(场景、物理、进程、逻辑、开发)分析架构对场景的支持度。分为 ATAM、SAAM、CBAM
DSSA 特定领域的软件架构
- 三个活动
- 领域分析:领域模型或领域需求、识别信息源
- 领域设计:DSSA,是领域模型的解决方案,高层次设计
- 领域实现:开发和组织可重用信息
- 四种角色
- 领域专家:用户、软件工程师
- 领域分析人员:系统分析人员
- 领域设计人员:软件设计人员
- 领域实现人员:程序设计人员
- 三层次模型
- 领域开发环境:领域架构师、产出参考架构、参考需求、架构、领域模型、开发工具
- 领域特定的应用开发环境:应用工程师、核心架构实例化
- 应用执行环境:操作员,实例化后的架构
并发控制
丢失更新、不可重复读、读脏数据
三级封锁协议
X 排它锁、S 共享锁
- 一级:一级加X锁,解决丢失更新问题
- 二级:读脏数据前加 S 锁,解决读脏数据问题
- 三级:先加 S 锁、再加 X 锁,直到事务结束,解决丢失更新、读脏数据、不可重复读问题
多个数据库数据同步的方式
定时任务、触发器、数据库插件
数据备份
完整备份、增量数据(仅上一次完整备份后变化的数据)、差异备份(仅上次备份后变化的数据)
反规范化技术
- 定义:牺牲部分规范化提升性能
- 优点:降低连接、降低外码、降低索引目录、降低表的数据、提高效率
- 问题:重复存储、浪费空间、可能存在完整性问题、增加维护复杂性、降低修改速度
- 方法:增加冗余列、增加派生列、水平分割表、垂直分割表
- 四大问题:数据冗余、插入异常、修改异常、删除异常
分布式数据库
定义:由一组数据组成,存放在不同的计算机上,有独立处理数据的能力
-
特点
- 数据独立性:逻辑、物理、分布独立
- 集中与自治共享结合的控制结构
- 适当增加数据冗余度:多副本、提升可靠性、可用性、性能
- 全局唯一性、可串行性、可恢复性
-
优点
- 企业部门分散而需要互相联系
- 对当前机构影响最小的情况下进行扩充
- 对于已存在的数据库直接自上而下地生成分布式数据库
- 满足负载均衡的需要
- 故障率比集中式数据库低,可靠性高
JAVA
- J2EE
- 结构:客户层、Web层、业务层、企业信息系统层
- 表示:HTML、Applet
- 应用:JSP、Servlet
- 服务:EJB(SimpleBean,SessionBean)
- 域:EntityBean
- 持久化:DB
EJB
定义:JavaEE 服务器端组件模型
企业级Bean:会话(SessionBean)、实体(EntityBean)、消息驱动(Message-driven)
DAO:数据库客户端
JavaBean:基于DAO的封装
设计模式二次总结
设计模式是提高代码可复用性、可维护性、可读性、稳健性、以及安全性的解决方案
-
创建型:对象创建,封装复杂创建过程,接口对象的创建与使用代码。
- 单例(Singleton):唯一实例
- 抽象工厂(Abstract Factory):抽象接口
- 原型(Prototype):原型实例,拷贝
- 构造器(Builder):类和构造分离
- 工厂方法(Factory Method):子类决定实例化
-
结构型:负责处理类和对象的关系,用于构建结构更加复杂庞大的系统
- 外观(Facade):对外统一接口
- 桥接(Bridge):抽象和实现分离
- 组合(Composite):整体 - 部分,树形结构
- 享元(Flyweight):细粒度、共享
- 代理(Proxy):代理控制
- 适配器(Adapter):转换、兼容接口
- 装饰(Decorator):附加职责
-
行为型:主要是对类和对象如何交互以及类和对象分配具体职责进行描述
- 职责链(Chain of Responsibility):传递请求、职责、链接
- 命令(Command):日志记录、可撤销
- 解释器(Interpreter):解析器、虚拟机
- 迭代器(Iterator):顺序访问,不暴露内部
- 中介者(Mediator):不直接引用
- 备忘录(Memento):保存、恢复
- 观察者(Observer):通知、自动更新
- 状态(State):状态变成类、服务升级、会员等级
- 策略(Strategy):算法替换
- 模板方法(Template):部分步骤延迟到子类中
- 访问者(Visitor):数据和操作分离
网友评论