系统架构相关知识点2

一、C/S 架构
优点:C/S 体系结构的优点主要在于系统的客户应用程序和服务器构件分别运行在不同的 计算机上,
系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示 出极大的适应性和灵活性,而 且易于对系统进行扩充和缩小。在 C/S 体系结构中,系统 中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务 器的开发则集中于数据的管理,不必在每一个新的应用程序中都要 对一个 DBMS 进行编 码。将大应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
缺点:
①开发成本较高。 C / S 体系结构对客户端软硬件配置要求较高,尤其是软件的不断升级,对硬件要求不断提高,增加了整个系统的成本,且客户端变得越来越臃肿。
②客户端程序设计复杂。釆用 C/S 体系结构进行软件开发,大部分工作量放在客户端的程序设计上,客户端显得十分庞大。
③信息内容和形式单一,因为传统应用一般为事务处理,界面基本遒循数据库字段解释,开发之初就已确定, 而且不能随时截取办公信息和档案等外部信息,用户获得的只是单纯的字符和数字,既枯燥又死板。
④用户界面风格不一,使用繁杂,不利于推广使用。
⑤软件移植困难。采用不同开发工具或平台开发的软件一般互不兼容,不能或很 难移植到其他平台上运行。
⑥软件维护和升级困难。采用 C/S 体系结构的软件要升级,开发人员必须到现场 为客户机升级,每个客户机上的软件都需维护。对软件的一个小小改动(例如只改动一 个变量),每一个客户端都必须更新。
二、三层 C/S 架构
这种客户机称为瘦客户机(
thin client)。三层 C/S 架构将应用系统分成表示层、功能层和数据层三个部分。
①表示层。表示层是系统的用户接口部分,担负着用户与系统之间的对话功能。它用于检查用户从键盘等输入的数据,显示输出的数据。
②功能层。功能层也称为业务逻辑层,是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额、按照预定的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。
③数据层。数据层相当于二层 C/S 架构中的服务器,负责对 DBMS 的管理和控制。
三、B/S 架构
基于 B/S 体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块。真正达到了“零客户端”的功能,很容易在运行时自动升级。B/S 体系结构还提供了异种机、异种网、异种应用服务的联机、联网等。
与 C/S 体系结构相比,B/S 体系结构也有许多不足之处,例如:
①B/S 体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
②B/S 体系结构的系统扩展能力差,安全性较难以控制。
③采用 B/S 体系结构的应用系统,在数据査询等响应速度上,要远远地低于 C/S 体系结构。
④B/S 体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理 OLTP 应用。
多层架构的优点:
开发人员可以只关注整个结构中的其中某一层;
可以很容易的用新的实现来替换原有层次的实现;
可以降低层与层之间的依赖;
有利于标准化;
利于各层逻辑的复用;
扩展性强。不同层负责不同的层面;
安全性高。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。
项目结构更清楚,分工更明确,有利于后期的维护和升级。
多层架构的缺点:
严格的分层可能导致性能问题,具体取决于层数。
建立清晰的分层架构并不总是很容易。
四、面向服务的架构 SOA
SOA 架构中所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务
通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。
SOA 架构将应用程序的不同功能单元按照服务模块拆分成多个子系统,这样做的优势:
(1)把系统按服务模块拆分,各个模块独立开发,独立部署,互不影响,大幅降低了模块之间的耦合度,各个服务模块后面可以使用不同的技术;
(2)把项目拆分成若干个子项目,不同的团队负责不同的子项目,大幅度提高团队的开发和生产效率;
(3)增加业务子系统时只需要增加一个子应用项目,调用服务就可以快速组装子应用,提高了程序的复用性,可以更快速的进行业务创新;
(4)可以灵活的进行分布式部署,更好的支持在线业务。
在 SOA 架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散耦合和复用能力的设计原则,对 SOA 架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:
(1)明确定义的接口。服务请求者依赖于服务规约来调用服务,因此,服务定义必须长时间稳定,一旦公布,不能随意更改;服务的定义应尽可能明确,减少请求者的不适当使用;不要让请求者看到服务内部的私有数据。
(2)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和构件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
SOA 架构中的关键技术:
(1)SOAP:简单对象访问协议,Simple Object Access Protocol
(2)WSDL:Web 服务描述语言,Web Services Description Language
(3)UDDI:统一描述、发现和集成,Universal Description Discovery and Integration
WSDL 用来描述服务,UDDI 用来注册和查找服务,而 SOAP 作为传输层,用来在消费这和服务者之间传送消息,一个消费者可以在 UDDI 注册表查找服务,取得服务的 WSDL 描述,然后通过 SOAP 来调用该服务。
(4)REST
REST 提出了如下一些设计概念和准则:
①网络上的所有事物都被抽象为资源。
②每个资源对应一个唯一的资源标识。
③通过通用的连接件接口对资源进行操作。
④对资源的各种操作不会改变资源标识。
⑤所有的操作都是无状态的。
目前,实现 SOA 的方法也比较多,其中主流方式有 Web Service、企业服务总线和服务注册表。
(1)Web Service
在 Web Service(Web 服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了 SOA 的一种实现架构。
(2)服务注册表
服务注册表(service registry)虽然也具有运行时的功能,但主要在 SOA 设计时使用。它提供个
策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在 SOA 中注册,从而可以被发现 和使用。服务注册表可以包括有关服务和相关构件的配置、依从性和约束文件。从理论上来说,任何帮助 服务注册、发现和查找服务合约、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个 注册表。大多数商用服务注册产品支持服务注册、服务位置和服务绑定功能。
(3)企业服务总线 ESB
是 SOA 的一种实现方式, ESB 在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合,主要作 用:
描述服务的元数据和服务注册管理;
在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一 些模式如同步模式、异步模式等;
发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一 些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
五、微服务架构
微服务优点:
(1)每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
(2)微服务能够被小团队单独开发,这个小团队是 2 到 5 人的开发人员组成。
(3)微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
(4)微服务能使用不同的语言开发。
(5)去中心化。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。
微服务缺点:
(1)很难在不采用分布式事务的情况下跨服务实现功能
(2)测试工作更加困难
(3)跨服务实现要求功能要求团队之间的紧密协作
(4)部署复杂
在微服务中,应用网关 API 的作用:
(1)提供统一入口
(2)可以进行权限身份认证等安全管理
(3)可以根据流量进行限流
(4)数据缓存
(5)性能监控等
(6)异常重试
(7)服务降级
六、轻量级架构
(1)SSH:指的是 Struts2(做前端控制器),Spring(管理各层的组件),Hibernate(负责持久化层)
(2)SSM:指的是 SpringMVC(做前端控制器),Spring(管理各层的组件),Mybatis(负责持久化层)
Hibernate Mybatis 区别:
①开发方面:在项目开发过程当中,就速度而言, hibernate 开发中, sql 语句已经被封装,直接可以使用,加快系统开发;Mybatis 属于半自动化, sql 需要手工完成,稍微繁琐。
sql 优化方面: Hibernate 自动生成 sql, 有些语句较为繁琐,会多消耗一些性能; Mybatis 手动编写 sql ,可以避免不需要的查询,提高系统性能;
③对象管理方面: Hibernate 是完整的对象 - 关系映射的框架,开发工程中,无需过多关注底层实现,只要去管理对象即可;Mybatis 需要自行管理映射关系;
④ 缓存方面: Hibernate 在使用二级缓存时如果出现脏数据,系统会报出错误并提示。 Mybatis 脏读不报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

variation8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值