系统架构设计非功能需求主要有4类:操作性需求、性能需求、安全性需求、文化需求;
性能需求:响应时间、吞吐量、准确性、有效性、资源利用率、系统完成任务效率等。可靠性、可用性等指标也能归此类。
安全性需求:系统向合法用户提供服务并阻止非授权用户使用服务方面的系统需求。
操作性需求:与用户操作使用相关的需求。
文化需求:带有文化背景因素的需求需求。
DFD(Data Flow Diagram)数据流图。
ERD(Entity Relationship Diagram)实体关系图简称ER图。
信息工程方法中的“实体”和面向对象的类(class)的不同:实体为数据建模,类为面向对象建模。实体只有属性,类有属性及操作。
Essential Use Cases和Real Use Cases不同:Essential Use Cases为抽象建模,Real Use Cases为基础建模,区别为:基础用例是用户需求对应关系的用例,是从用户需求中得到的,抽象用例是从基础用例中抽取的公共用例,避免重复工作,优化结构而提出的用例。
分布式数据库缓存技术在内存中管理数据并提供数据的一致性保障,采用数据复制技术实现高可用性,具有较优的扩展性与性能组合。这种数据存储机制,实现了更短的响应时间,同时极大的降低数据库的事务处理负载,极好的解决了大量流情况下数据库服务器和Web服务器之间的瓶颈。
MemCache:支持简单的key/value结构,有持久性,不支持分布式存储,支持多线程,有内存管理,不支持事物。
Redis:支持Key/value,list,set,hash,sorted等类型,无持久性,分布式存储方式有多种如主从、Sentinel、Cluster等,不支持内存,无内存管理,支持事务。
MemCache工具存在的问题:
1. MemCache不支持数据持久化操作,掉电会丢失,复发恢复,可靠性存在问题;
2. 不支持事务操作,操作过程中可能出现数据不一致问题。
Redis与原有关系数据库的数据同步方案:读取时先读取Redis中的数据,如果没有,就从原数据库中读取,并同步更新Redis数据库。写回时先写回原数据库再写到Redis中。
Redis分布式存储的2种常见方案:主从方案、Cluster方案
Redis集群切片的几种常见方式:
1. 客户端分片:在客户端通过key的hash值对应到不同的服务器。
2. 对数据key散列到不同的slot上,不同slot对应不同的服务器。
SOA(面向服务的架构):是一个组建模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立的方式进行定义,他应该独立与实现服务的硬平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务以一种统一和通用的方式进行交互。
ESB(企业服务总线)在SOA的作用和特点:
1. 支持SOA的关键是其消息传递架构-企业服务器总线(ESB)。ESB用于实现企业应用不同消息和信息的准确、高效、安全传递。
2. 面向服务的元数据管理:必须了解被他中介的两端,技术服务的请求以及请求者对服务的要求,以及服务的提供者和他所掌握的服务描述。
3. 通信:服务的发布/订阅、响应/请求、同步/异步消息、路由和寻址等。
4. 服务交互:服务接口定义,服务实现的置换,服务消息模型,服务目录和发现等。
5. 服务安全:认证和授权、不可否认和机密性、安全标准的支持等。
3中可实现信息系统安全保障的措施:
1. 釆用请求/应答的认证机制,防止重放攻击。
2. 釆用加密技术保证信息在网络传输过程的安全。
3. 釆用数字签名技术保证信息传输过程的完整性和不可否认。
MVC为:model、view、controller
视图(View):视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。
控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与Model的接口。一方面它解释来自于视图的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为对模型特定方法的调用;另一方面,它处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。
模型(Model):模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。
与浏览器紧邻的是JSP、Servlet;通过Servlet再与后台交互;Service与DAO交互;DAO在与数据库紧邻。
EJB中的Bean分为三类消息:Session Bean(会话Bean)、Entity Bean(实体Bean)和Message-Driven Bean(消息驱动Bean)。
Session Bean:维持一个短暂的会话;
Entity Bean:维护一行持久稳固的数据;
Message-Driven Bean:异步接受消息。
数据库程序在线访问方式:把SQL语言写到程序中访问数据库。
ORM(Object-Relational Mapping):在关系型数据库和对象之间存在一个映射,不用和复杂的SQL语句打交道,只要操作对象即可。
数据库程序在线访问的优势:
1. 性能比ORM好。
2. 可以处理复杂的查询语句。
数据库程序在线访问缺点:
1. 程序员对SQL语句有要求;
2. 修改与维护困难。
ORM优点:
1. 使用ORM可以降低学习开发成本;
2. 不需要写SQL来对数据库进行操作;
3. 减少了程序代码量;
4. 降低SQL代码质量带来的影响;
ORM缺点:
1. 不容易处理复杂的语句;
2. 性能比直接用SQL差。
抽象工厂:提供一个接口创建一系列相关或相互依赖的对象,无需指定它们具体的类。优点是方便创建一系列对象。
响应式web设计:根据用户的行为和不同设备环境做出相应的响应来调整页面的布局,提供用户可感知、流畅的阅读和体验。
实现方式:
1. 流式布局(flex);
2. 弹性布局加媒体查询(@media screen an (min-width:768px){});
PHP对比Java的不足:
1. PHP是简单的分布式二层或三层架构,Java可以实现多层网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层分开,且java在不同的层,都有成熟的框架支持。
2. PHP面向过程,Java面向对象,PHP只注重业务流程的变化,可修改性,复用性不好。
3. PHP可靠性比J2EE平台差。
4. PHP对于不同的数据库要采用不同的接口,Java通过JDBC通过调用不同的驱动完成对数据库的操作,接口统一。
5. PHP适合小项目;
6. PHP维护性比Java差;
7. PHP扩展性比Java差;
8. PHP安全性比Java差。
应用服务器:通过各种协议把商业逻辑曝光给客户端程序;
如何保证系统在大负荷和长时间运行下的稳定及可扩展性:
1. 负荷大,可以部署多态服务,多台应用服务器分担任务。
2. 通过灵活的增加服务器完成扩展。
3. 当一台服务器出故障时,将当前运行的事务转移到正常的应用服务器上执行,从而提高稳定性和可靠性。