1 传统的单体架构
1.1 什么是单体架构
一个归档包(例如 war 格式或者 Jar 格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。也称之为单体应用架构,这是一种比较传统的架构风格。
1.2 单体架构优点
便于开发:只需借助 IDE 的开发,调试功能即可完成
易于测试:只需要通过单元测试或浏览器即可完成测试
易于部署:打包成单一可执行 jar 或者 war 包,完成 jar 或者 war 部署即可
1.3 单体架构缺点
1.复杂性高:整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂,修改一个 BUG 都会造成隐含的缺陷。
2.部署速度逐渐变慢:随着代码的增加,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。
3.扩展能力受限:单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。
4.阻碍技术创新: 单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。
2 SOA 架构
2.1 什么是 SOA 架构
SOA 是 Service-Oriented Architecture 的英文缩写,就是面向服务的架构。这里的服务可以理 解为 service 层业务服务。将系统拆分为不同的服务单元,通过网络协议服务单元之间进行 通信。服务单元完成一个特定功能 ( 如:验证、支付、登录等等 ) ,通过服务单元之间的集成 组成完整的应用程序。SOA 架构中由两个重要的角色: 服务提供者(Provider)和服务使用者(Consumer)
2.2SOA 架构的优点
1.更易维护:业务服务提供者和业务服务使用者的松散耦合关系。当需求发生变化的时候,不需要修改提供业务服务的接口,只需要调整业务服务流程或者修改操作即可,整个应用系统也更
容易被维护。
2.更高的可用性 : 该特点是在于服务提供者和服务使用者的松散耦合关系上得以发挥与体现。 使用者无须了解提供者的具休实现细节。
3.更好的伸缩性:依靠业务服务设计、开发和部署等所采用的架构模型实现伸缩性。使得服务提供者可以互相彼此独立地进行调整,以满足新的服务需求。
2.3 SOA 架构的缺点
减低了系统的性能
系统之间交互需要使用远程通信,接口开发增加工作量
3 什么是 RPC 调用
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。请求程序就是一个客户机,而服务提供程序就是一个服务器
4 RPC 的应用场景
支付宝、微信、银联等第三方支付接入公司内部的不同业务系统,不同技术平台的整合
5 RPC 的实现方式
RMI:Java 提供的基于 java 平台 RPC 远程调用技术,服务消费者和服务提供者是 java 平台
WEBSERVICE: 通过 Http 协议 , 请求发送 xml 和响应 xml 的 RPC 远程调用技术 , 最大的特征使用xml 进行数据交互,可以实现跨平台调用。
HttpClient:Http 客户端工具,Java 程序通过 HttpClient 发送 Http 协议的请求,直接获得远程资源。