发表于: 2017-06-13 23:18:46
2 1151
今天完成的事情:
做完了tiles框架的实例
学习了一下SCA和分布式
SCA软件架构
SCA(Service Component Architecture)软件架构的概述 SCA是一个开发SOA(Service-Oriented Architecture)面向服务应用的简单模型规范,它描述用于使用SOA构建应用程序和系统的模型。它可简化使用SOA进行的应用程序开发和实现工作。SCA仅仅是个规范,各个涉及SOA技术的公司的实现也各不相同。
SCA是由Open Service Oriented Architecture collaboration 提出的一种组件化的面向服务编程模型,并于2007年正式捐献给OASIS组织。
SCA提供了服务组件模型、装配模型和策略框架来支持各种异构应用的封装和集成。同SCA并列提出的SDO规范,定义了SOA应用程序中访问各种异构数据源的方法。组件可以以各种不同的协议发布服务,包括SOAP、RMI、REST、JMS,甚至可以是虚拟机内的对象直接调用。组件可以使用多种技术实现, 包括EJBs, Java POJOs ,Spring Beans,BPEL process , COBOL ,C++, PHP SCA中,最重要的一个概念是Service----服务,它的内涵是独立于具体的技术。因此,SCA不会称之为 Java组件架构,或Web Service 组件架构。所谓的具体技术,主要有两层含义:一是程序语言,而是传输协议。
现有的组件是和传输协议紧密耦合的。比如EJB组件采用的是RMI传输协议,Web Service组件采用的是SOAP传输协议。SCA组件则能自由地绑定各种传输协议。
SCA是对目前组件编程的进一步升华,其目标是让服务组件能自由绑定各种传输协议,集成其他的组件与服务。SCA与传统的业务组件最大区别在于SCA实现了两个功能:一是组件和传输协议的分离,二是接口和实现语言的分离。
分布式
1.分布式系统一定是由多个节点组成的系统。
其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。
2.这些连通的节点上部署了我们的节点,并且相互的操作会有协同。
分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。
例如淘宝,平时大家都会使用,它本身就是一个分布式系统,我们通过浏览器访问淘宝网站时,这个请求的背后就是一个庞大的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终他们相互协调把最后的结果返回并呈现给用户。
分布式之数据库访问
随着网站的访问量越来越大,数据量也越来越多,系统对数据库的各种操作越来越频繁,导致单机的数据库服务器越来越慢,数据库压力越来越大,那么这个时候就需要对数据库层进行优化,目前可以从几个方面进行下手:
1.优化应用,看看是否有不必要的压力给了数据库(应用的优化)。这个减压作用相对小。
2.看看有没有通过引入缓存、搜索引擎等地中间件来对数据库进行检验。这个对局部数据减压作用大,但是对整体上作用不是很大。
3.最后一种思路就是,把数据库的数据和访问转移到多台数据库上,分开支持,这也是最优的减压方式,下面主要介绍这种方式:
1.数据的拆分的2种方式及带来的影响
a.垂直拆分
垂直拆分就是把一个数据库中不同业务单元的数据分到不同的数据库里面。比如用户相关信息放到一个库中,订单先关数据放到另一个库中,费用相关信息放到另外一个数据库中等等,这种通过划分不同的库的方式就是数据的垂直划分方式。
带来的影响:
(1) 单机的事务ACID特性的保证被打破了。数据到了多机后,原来在单机通过事务进行的处理逻辑会收到很大的影响。我们面临的选择是,要么放弃原来的单机事务,修改实现。要么引入分布式事务机制。
(2) 一些联表操作会变得比较困难,因为数据可能在不同的数据库中了,所以不能很方便的利用数据库自身的join,需要应用或者其他方式来解决。
(3) 靠外键去进行约束的场景会收到影响。
b.水平拆分
水平拆分是根据一定的规则把同一业务单元的数据拆分到多个数据库中。
即,比如将订单相关的库,部署到多台服务器中,每台服务器中的订单库的表结构完全一样,但是不同的服务器中的订单库中的数据分别存放了不同的订单相关数据。
带来的影响:
1.同样具有与垂直划分带来的三种影响。
2. 依赖单库的自增序列生成唯一id会受影响。
3.针对单个逻辑意义上的表的查询要跨库查询了。
总之,这2种方式都是将原来一个数据库中的数据拆分到了不同的数据库中,所以原来单机数据库可以支持的特性现在未必支持了。而且数据库的拆分给应用带来的影响还是比较明显,这里只是列出其中的几部分,比如存储过程,触发器等也需要改写才能完成相应的工作。
明天计划的事情:
看基础知识书籍然后继续看<<操作系统原理>>
遇到的问题:
配置文件..扫包...
<context:component-scan base-package="com.jnshu"/>
收获:
基础更为扎实
评论