SOA迷惘...

 一、我这样项目是SOA吗?

SOA这个词出现以来,就有点迷惑,到底怎么样的架构算是SOA?

我从1998年入行,基本上在银行软件集成这个领域做。我参与的大部分的项目都是以某个中间件为骨架,在上面开发部署服务,这个服务是不是SOA里那个S,不得而知。在银行里很多时候“服务”这个词对应理解为某个“交易”例如存款、取款、查询客户信息等等,而每个交易都有一个代码,常常是无意义的数字的组合,当然可能按号段分成若干类。

逐渐地,有了些经验,有机会设计研发一些平台性质的软件,还是在银行业使用的。我研发的这些软件算银行的外围软件,处理诸如ATM、POS来的交易,很多银行也把这类软件叫做前置或中间业务平台,不过其处理模式还是一样的,就是收到请求后,通过组合一些后台核心系统提供的服务,再加上一些逻辑处理返回应答。因而其架构也基本上是类似的,由通信、组包、流程处理几个模块组成,每个流程对ATM、POS来说也是一个服务。这里有了服务的组合装配,有点像SOA提倡的理念,只是服务没有标准化、系统化而已。
今年,我参与了一个更接近SOA样式的项目(从我的理解上认为) - EAI(企业应用集成)。诚然,很多专家都不喜欢把EAI与SOA放在一起谈论,认为EAI已经过时很多年了。我的理解是EAI是一个描述性的词,它描述企业通过一定的技术把孤岛式的系统整合到一起;而SOA是一个思想性的词,它表达一种架构、部署的思想。我在做EAI的项目,它有这些设计和架构要点:
  •  处于企业IT系统的中心位置,连接几乎所有的IT系统
  •  EAI选用了国外的系列软件建设,这些软件号称支持SOA
  •  所有服务用WebService来做,用WSDL来描述,所有服务使用者都通过EAI来使用服务
  •  相关联的服务提供者并未完全服务化,它们有它们自己的处理方式和客户端界面
  •  EAI中涉及流程组合的地方并未用BPEL,而是用所选软件本身的组合方式
我是这个项目的项目经理、架构师、程序员、测试员... ...还有时间和机会来探讨、实践更多更深入的SOA理念,目前仍有很多迷惘,到底SOA该如何来设计,如何来部署,如何来架构... ...
### SOA(面向服务的架构)概念详解 #### 1. SOA 的定义与核心思想 SOA(Service-Oriented Architecture,面向服务的架构)是一种软件设计模式,其核心思想是将应用程序分解为一组相互独立、松耦合的服务。每个服务代表一个明确的业务功能,并通过标准化接口进行通信和交互[^3]。这种模块化方式使得系统具备更高的灵活性和可维护性。 在 SOA 中,服务是自包含的,拥有自己的数据和逻辑,能够自主处理请求。它们通过标准协议(如 HTTP、SOAP、REST)进行通信,确保了跨平台和跨语言的兼容性[^2]。例如: ```java // 示例:一个简单的服务接口定义 public interface OrderService { Order createOrder(String customerName, List<Product> items); boolean cancelOrder(int orderId); } ``` #### 2. SOA 的关键特征 - **松耦合**:服务之间依赖度低,修改一个服务通常不会影响其他服务。 - **自治性**:每个服务具备独立处理请求的能力,不依赖于其他服务的状态。 - **抽象性**:服务隐藏内部实现细节,仅暴露必要的接口供外部调用。 - **可重用性**:服务可以被多个应用或流程复用,减少冗余代码并提高开发效率。 - **组合性**:服务可以通过编排和合成形成更复杂的业务流程。 - **可发现性**:服务注册到服务目录中,客户端可以动态查找和调用所需服务。 - **无状态性**:服务通常不保存状态信息,以支持高并发和可扩展性。 #### 3. SOA 的优势 - **提升敏捷性**:组织可以快速响应业务需求变化,通过快速部署新服务来满足市场需求。 - **增强可重用性**:相同的服务可以在多个项目中使用,降低重复开发成本。 - **提高集成能力**:不同系统和应用程序更容易集成,简化了异构环境下的通信问题。 - **技术多样性**:允许使用最适合的技术栈开发不同的服务,提高了灵活性。 - **降低成本**:通过服务复用和模块化,减少了开发和维护成本。 - **良好的可扩展性**:可以根据需求灵活地增加或缩减服务规模。 #### 4. SOA 的挑战 尽管 SOA 提供了许多优点,但也存在一些挑战: - **复杂性增加**:管理大量分布式服务会带来额外的运维复杂性。 - **治理难度大**:确保所有服务的一致性和质量控制是一项艰巨任务。 - **安全性要求高**:需要建立完善的身份验证、授权机制以及多层次的安全防护体系。 - **性能瓶颈**:不当的设计可能导致网络延迟和服务响应时间过长的问题。 - **版本管理和监控困难**:随着服务数量的增长,跟踪每个服务的状态及其版本变得越来越难。 #### 5. 常见的 SOA 模式 - **企业服务总线 (ESB)**:作为中间件层,负责协调服务间的通信,支持多种协议如 SOAP、JMS 等[^4]。 - **服务注册中心**:用于存储服务元数据,帮助客户端发现可用服务。 - **服务代理**:提供统一访问入口,隐藏后端服务的具体实现细节。 - **服务聚合器**:将多个细粒度服务组合成一个粗粒度服务,简化客户端调用过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值