SOA与云、大数据的融合之道
1. SOA与云
1.1 云环境中节点的动态性
在实际项目里,曾将服务部署于Windows Azure的两个不同环境:预发布环境和生产环境。利用Windows Azure的虚拟IP切换功能,把预发布服务器迁移到生产环境,看似顺利,然而新的生产服务(原预发布服务)仍指向预发布数据存储和证书存储。后来通过另一个服务来协调切换,并发送事件同步整个迁移过程,才解决了该问题。这让我们明白,在云环境中节点并非固定不变,不能做任何假设。
1.2 SOA适配云的特性
SOA是实现向云计算过渡的理想架构风格,尤其适用于混合云和公共云场景。以下是SOA适配云的特性:
| SOA特性 | 对云的优势 |
| — | — |
| 将企业/系统划分为业务组件 | 服务是迁移到云的合适单元,呈现完整业务功能,其边界已考虑分布式计算的问题并内化消息处理 |
| 使用基于标准的消息和契约通信 | 封装内部表示而非依赖共享数据,使迁移到云的服务能独立运行,仅通过契约定义的消息通信 |
| 将服务边界视为信任边界 | 当将功能迁移到公共云时,若软件已假设外部是敌对的并需进行身份验证和验证等,将大有帮助 |
| 保持服务自治 | 自治使服务能独立生存,在其他服务故障时仍可继续运行 |
1.3 适用于云部署的模式
许多模式与云部署相关,特别是向云过渡时:
-
服务总线
:提供位置透明性和服务注册,新服务可能在新节点以新IP地址生成或根据负载合并到单个节点,位置透明性在云环境中非常有益。
-
身份提供者
:当服务分布在企业和云之间,用户期望单点登录体验时,身份提供者是关键组件。若结合REST,还需交错使用WS - Trust和OAuth服务,其重要性更加凸显。
-
请求/反应和通信反转
:异步通信比普通RPC更具弹性,在混合云设置中是一大优势。
-
服务监控器和服务看门狗
:这些模式始终相关,在无法控制硬件时更为重要。
-
服务实例
:有助于实现弹性和横向扩展。
-
虚拟端点
:在云环境中运行时,服务交付的端点很可能是虚拟端点。
总体而言,SOA原则和模式与云非常匹配,将业务能力划分为自治组件适合逐步向公共云过渡和混合云设置。
2. SOA与大数据
2.1 大数据的现状与挑战
如今,企业每年处理和积累的数据量持续增长。大多数研究机构认为大数据围绕不同的“V”发展,如速度、体积、多样性和可变性。个人认为主要驱动因素是前两个“V”,即数据摄入速度、数据可用前的延迟以及需要存储和处理的总数据量。
传统工具(如RDBMS或OLAP立方体)在解决大数据问题时显得力不从心,虽然这些工具不会消失,但需要额外的工具来应对规模挑战。市场上出现了许多大数据存储解决方案,涵盖多个类别,如关系型类别(包括NewSQL解决方案和大规模并行解决方案)、键值存储(分为内存和列导向解决方案)等。
2.2 大数据技术选型标准
面对众多的大数据工具选项,可参考以下标准选择最佳解决方案:
-
组织类型
:企业可能倾向于更成熟的供应商,以获得支持和满足法规遵从性等要求;初创公司可能更倾向于廉价的开源选项。
-
数据访问模式
:主要是读操作还是写操作,是基于主键访问还是有大量临时查询。若需要来回遍历关系(如社交图),图数据库是不错的选择。
-
存储的数据类型
:结构化数据适合关系模型,半结构化数据(XML/JSON)适合文档和列存储,非结构化数据适合基于文件的选项(如Hadoop)。
-
数据模式变更频率
:模式是固定的还是经常变化。关系型选项更适合固定模式,文档和名值解决方案更适合开放模式。
-
所需延迟
:对数据速度要求越高,越需要内存解决方案。
2.3 大数据领域的明星——Apache Hadoop
Apache Hadoop是大数据领域备受瞩目的技术,它是Google文件系统和Map/Reduce范式的开源实现。Hadoop之所以重要,并非因为它一定是大数据的最佳解决方案,而是因为它得到了众多主要IT供应商的大力支持,如Oracle、IBM、EMC、Microsoft和Amazon都提供Hadoop分发或服务。
2.4 SOA与大数据的结合方式
2.4.1 服务内使用大数据技术
SOA中处理大数据的一种方式是服务在内部使用与大数据相关的技术。例如,需要处理半结构化数据的服务可使用文档数据库存储,需要近乎实时处理事件数据的服务可使用数据网格或事件流处理解决方案。SOA的优势在于服务之间的分离和隔离,允许企业逐步采用,只有需要这些技术的服务采用,其他服务可保持现有技术。
2.4.2 大数据分析的处理方式
处理大数据分析时,需区分在服务边界内进行的分析和需要多个服务数据的分析:
-
跨服务分析
:对于需要跨服务视图的大数据分析,聚合报告模式的思想仍然适用。只要使数据不可变并明确所有权,就可以从所有服务获取数据而不违反SOA原则。执行实际分析的过程有时可视为服务本身,如电子商务解决方案中的推荐服务。
-
服务内分析
:当分析可在特定服务边界内处理时,实现方式是将大数据相关技术作为服务的一部分。
2.5 实际案例说明
在一个系统中,需要对多渠道交互(语音、电子邮件、聊天等)进行分类。分类服务订阅传入交互,数据以批量和实时方式到达。实时分类和批量处理使用相同的业务逻辑,实时分类有Web服务和消息传递端点,批量处理在Hadoop上使用Map/Reduce。该服务体现了本书中一些模式的应用,如服务主机模式、边缘组件模式、服务看门狗模式和服务实例模式。
综上所述,服务可与大数据结合使用,大数据强调服务应粗粒度化。为使SOA作为架构风格保持相关性,它应且能够适应和利用解决大数据问题的新技术。
以下是一个简单的mermaid流程图,展示SOA与大数据结合时服务处理的流程:
graph LR
A[接收数据] --> B{数据类型}
B -->|半结构化数据| C(使用文档数据库存储)
B -->|事件数据| D(使用数据网格或事件流处理)
C --> E{分析类型}
D --> E
E -->|服务内分析| F(服务内利用大数据技术分析)
E -->|跨服务分析| G(遵循聚合报告模式获取数据并分析)
此外,SOA还可与其他架构风格和技术相关,如REST可与SOA融合,云与SOA共享原则,大数据要求SOA进行适应。掌握这些知识有助于应对分布式系统的挑战,构建稳固的系统。
3. 其他相关架构风格及总结
3.1 其他相关架构风格
除了前面提到的REST、云、大数据与SOA的关系外,还有一些其他架构风格也与SOA相关。例如事件驱动架构(EDA),在通信模式方面与SOA有一定关联。另外,领域驱动设计虽不如本章讨论的三种趋势流行,但可作为设计单个服务的方法,对SOA起到补充作用。
3.2 总结
本章主要探讨了三种与SOA相关的架构风格:
-
REST
:一种可与SOA融合的替代架构风格。构建RESTful SOA可同时受益于两者,为服务使用SOA风格或REST风格的API(或两者皆用)。
-
云
:与SOA原则互补的IT趋势,SOA非常适合云环境。
-
大数据
:企业中日益普遍的现实,SOA必须适应大数据的发展。
以下表格总结了这三种架构风格与SOA的关系:
| 架构风格 | 与SOA的关系 |
| — | — |
| REST | 可与SOA融合,提供不同风格的API |
| 云 | 原则互补,SOA适合云环境 |
| 大数据 | SOA需适应大数据发展,可利用相关技术 |
3.3 各架构风格关键要点回顾
3.3.1 REST与SOA融合要点
- API选择灵活 :能根据需求为服务选择SOA风格或REST风格的API,满足不同场景的使用需求。
- 优势互补 :结合REST和SOA的优势,提升系统的灵活性和可扩展性。
3.3.2 云与SOA结合要点
- 节点动态性处理 :在云环境中,节点不固定,需通过合理的模式(如服务总线、身份提供者等)来应对节点变化带来的挑战。
- 服务特性适配 :SOA的划分业务组件、使用标准通信、将服务边界视为信任边界和保持服务自治等特性,与云环境高度适配。
3.3.3 大数据与SOA结合要点
- 技术选型 :根据组织类型、数据访问模式、数据类型、数据模式变更频率和所需延迟等标准选择合适的大数据技术。
- 分析处理方式 :区分服务内分析和跨服务分析,采用不同的处理策略,如服务内利用大数据技术分析、跨服务遵循聚合报告模式获取数据并分析。
3.4 展望
随着技术的不断发展,SOA将继续在分布式系统中发挥重要作用。它需要不断适应新的架构风格和技术趋势,如REST、云、大数据等。未来,SOA可能会与更多新兴技术融合,为构建更加高效、灵活和可扩展的分布式系统提供支持。
以下是一个mermaid流程图,展示SOA在不同架构风格影响下的发展路径:
graph LR
A[SOA] --> B{技术趋势}
B -->|REST| C(融合REST构建RESTful SOA)
B -->|云| D(适配云环境利用SOA优势)
B -->|大数据| E(适应大数据采用相关技术)
C --> F[发展灵活高效的分布式系统]
D --> F
E --> F
总之,理解SOA与其他架构风格和技术的关系,掌握相关的技术要点和处理方式,对于构建分布式系统至关重要。通过合理运用SOA的原则和模式,结合不同架构风格的优势,能够有效应对各种挑战,构建出更加稳固和强大的系统。
超级会员免费看
25

被折叠的 条评论
为什么被折叠?



