- 浏览: 94563 次
- 性别:
- 来自: 深圳
文章分类
最新评论
一、为什么需要 SOA
当应用获得用户的认可后,会不断发展。以豆瓣网为例,早期豆瓣网只有书评的功能,随着用户的增加,发展出今天的豆瓣社区,豆瓣读书,豆瓣电影和豆瓣音乐等功能。这些功能有各自的特色,但又有很多可公用的业务逻辑。例如用户信息、评价等,如果各个系统都维护自己的用户信息和评价,会造成的问题一方面是当修改评价逻辑或用户信息的读取方式时,所有系统都要修改,相当复杂;另一方面是每个系统上都有多种业务逻辑,就像在一个小超市中,,一个人负责收银、清洁、摆货、咨询等各种各样的事情,当顾客多到一定程度时,这个人就无法负责这么多事情了,系统也同样如此。
第一个现象是系统多元化带来的问题,可采用共用业务逻辑的部分进行抽象的方法,形成多个按领域划分的共用业务逻辑系统;第二个现象是系统访问量、数据量上涨后带来的典型问题,同样可采取拆分系统的方式来解决。
在构建了共用业务逻辑系统和拆分系统后,最明显的问题就是系统之间如何交互。如果不控制,会出现多个系统之间存在多种交互方式: HTTP 、 SOCKET 、 HESSIAN 、 RMI 、 WEBSERVICE 等;同步、异步等方式可能都会出现,导致开发人员每访问一个子系统,都可能要学习不同的交互方式 more 时也会造成各开发团队重复造轮子,对于应用的性能、可用性也带来极大的挑战。
对以上问题,很容易想到的办法就是统一交互的方式, SOA 无疑是实现这种方式的首选。
SOA 全称是面向服务架构( Service-Oriented Architecture ),它强调系统之间以标准的服务方式进行交互,各系统可采用不同的言语、不同的构架来实现,交互则全部通过服务的方式来进行。
二、 SOA 平台带来的挑战
1. 服务多级调用带来延时
如 A 调用 B 、 B 调用 C……
2. 调试 / 跟踪困难
3. 更高的安全 / 监测的要求
4. 现有应用的移植
5. 服务 QOS(Quality of Service) 的支持
6. 高可用和高度可伸缩
7. 多版本和依赖管理
三、 SOA 平台的实现
实现 SOA 时,可参考的标准或概念有 SCA 、 ESB ,同时业界也有一些实现了 SCA 、 ESB 的框架。
1. 基于 SCA 实现
SCA ,由 IBM, Oracle( 包括之前的 BEA , Sun) , RedHat, SAP 及 Siemens 等共同制定的规范,规范的名字定为 Service Component Architecture, 简称 SCA 。
SCA 标准景要定义了如何发布服务、如何调用服务及支持的通信协议和交互方式三方面的内容。
1.1 发布服务
以接口方式提供,要求系统本身已有相的接口实现,通过 XML 定义。
1.2. 调用服务
同样可通过简单地定义 XML 即可实现
1.3. 支持的的通信和交互方式
SCA 标准默认提供的通信方式为 SCA,Webservice 和 JMS 三种。 SCA 方式指由框架根据运行情况来选择采用相应的通信方式,如框架发现需要调用的服务在同一 JVM 中,则会自动切为本地调用,如在不同 JVM 中,则会采用 Webservice 或 JMS 等方式。 Webservice 的实现为 HTTP 方式; JMS 则可用多种方式,取决于具体的 SCA 框架。
在交互方式上, SCA 标准没有明确的定义。
1.4 常用的 SCA 实现框架 Apache Tuscany 。
1.4.1 发布服务 : Tuscany 遵守 SCA 标准编写,支持多种发布方式,包括发布为 Webservice 、 Ajax 、 Corba 、 erlang 、 JMS 、 Jsonrpc 、 RMI 、 EJB 、 HTTP 及 RSS 方式。
1.4.2 调用服务: 和发布服务一样,支持多种应用集成及调用方式,并包括了多语言的支持。
1.4.3 通信及交互方式: 比 SCA 标准多出了很多,例如对 Ajax 、 Jsonrpc 、 RMI 等都提供了支持。
1.4.4 调试跟踪: 服务器抛出异常时,会将此信息带回到调用端
1.4.5 依赖管理 :没有在 SCA 的标准上做扩展,因此仍然不是很好实现。
1.4.6 高性能和高可用: 没有做专门处理,如须确保性能,可自行基于 Tuscany 扩展实现交互方式。
2. 基于 ESB 实现
ESB 和 SCA 不同,它不是标准,可以认为是概念,核心思想是基于消息中间件来实现系统间的交互。基于消息中间件所构建的此系统交互的中间场所称为总线,系统间交互的数据格式采用统一的消息格式,由总线完成消息的转化、路由,发送到相应的目标应用。
通常 ESB 框架须具备以下五个要素
1) 标准的消息通信格式
2) 消息路由
消息路由是指当总线接到消息后,根据消息中的数据来决定需要调用的系统。
3) 支持多种的消息交互类型
请求 / 响应和发布 / 订阅方式
4) 支持多种网络协议
总线要和多个系统进行交互,通常要支持多种网络协议,例如 TCP/IP 、 UDP/IP 、 HTTP 等
5) 支持多种数据格式并能进行相互转换
多个系统均须发送消息至 总线,并由总线进行消息转发,但各个系统消息中的数据格式可能不一致,此时总线要支持数据的转换。
2.1 Mule 为常用的 ESB 实现框架之一
2.1.1 发布服务: Mule 支持以 Webservice 、 jms 等方式将 Spring 或普通的 JAVA 对象发布为 Mule Service ,配置上较为简单,但和 Tuscany 比还是弱了点
2.1.2 调用服务: 相对比较麻烦,这是由于 ESB 强调一切都以消息的方式发送给总线决定的。
2.1.3 通信及交互方式: 支持 Webservice 和 jms 两种通信方式。可明确指定 synchronous 的参数来实现同步通信,或不指定默认为异步通信。
2.1.4 调试 / 跟踪: 未提供特别支持
2.1.5 依赖管理: 本身未提供支持,可通过开源框架 MuleGalaxy 实现。
2.1.6 高性能和高可用: 未做专门处理
四、总结
SCA 标准及 SCA 标准实现的框架对于服务的统一交互支持得很好, ESB 及 ESB 框架则更适用于需要解耦方式的服务交互及复杂的多服务交互场景,但无论是 SCA 标准、 ESB ,还是已有的相关框架,在实现一个大型应用的 SOA 平台时都仍然有不少需要自行扩展实现的地方,特别是在调试 / 跟踪、依赖管理及高性能、高可用方面。
作者认为,对于一个更加完善的 SOA 平台 , 还应具备以下几点:
1. 支撑集群环境
2. 完善的服务治理
服务治理的主要目的是为了保障服务能够稳定、高性能地运转。之前提及的依赖管理也属于服务治理的一项,服务运行状况的监测、服务的安全控制、服务的流量限制、服务故障根源的推测及服务可用性的保障也都属于服务治理的范畴。要实现这些功能仅靠 SOA 平台还很难做到,通常还要有系统架构的配合。
3. 服务 QOS(Quality of Service) 的支持
指 SOA 平台按照服务配置的 QOS 来分配相应的硬件资源,例如 A 服务的 QOS 配置为每秒最多支撑 5000 请求,且响应时间 95% 需要在 1 秒以内, SOA 平台要能收集目前服务的运行状况来合理分配机器资源,要做到这点难度非常高。
发表评论
-
技术文章精华合集(持续更新中)
2016-09-20 19:09 714Kafka深度解析 分库分表系列文章 来自 ... -
<<More Joel on Software>> 如何扮演程序经理的角色
2011-07-03 15:13 797制作伟大软体的秘方之 ... -
<<More Joel on Software>> 利诱管理法
2011-07-03 15:10 957利诱管理法 Joke: A poor J ... -
<<More Joel on Software>> The Joel Test: 软件开发成功 12 法则
2011-07-03 14:42 689作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 看起来简单, 实际上复杂
2011-07-03 14:41 760作者: 周思博 (Joel Spolsky) 译: Bo Y ... -
<<More Joel on Software>> 膨胀软件与80/20的谣传
2011-07-03 14:38 885作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 每日构建(daily build)是你的朋友
2011-07-03 14:37 850作者: 周思博 (Joel Spols ... -
<<More Joel on Software>> 五个为什么
2011-07-03 14:20 956五个为什么(译文) ... -
<<More Joel on Software>> 飙高音
2011-07-03 13:54 905飙高音(译文) 作者: 阮一峰 日期: 2009年 ... -
<<More Joel on Software>> 关于战略问题的通信之六
2011-07-03 13:51 769关于战略问题的通信之六(译文) 作者: 阮一峰 日 ... -
<<More Joel on Software>> 易用性是不够的
2011-07-03 13:41 738易用性是不够的(译文) 作者: 阮一峰 日期: 2 ... -
<<More Joel on Software>> 军事化管理法
2011-07-03 13:28 963高科技公司能否采用军事化管理?(译文) 作者: 阮一峰 ... -
<<More Joel on Software>> 寻找优秀的程序员
2011-07-03 13:24 1196=================== 寻找 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第七章 构建可伸缩的系统
2011-05-29 12:09 1104通常将通过升级或增加单机机器的硬件来支撑访问量及数据量增长的方 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统
2011-05-28 11:02 1199对于互联网或企业中的大型应用而言,多数要求做到 7*24 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(二)
2011-05-22 21:34 10895.2 调优 找出性 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第五章 性能调优(一)
2011-05-22 13:43 11345.1 寻找性能瓶颈 通常性能瓶颈的 ... -
读书笔记:《分布式JAVA应用 基础与实践》 第四章 分布式JAVA应用与JDK类库
2011-05-21 11:23 11764.1 集合包 ArrayList, Li ... -
读书笔记:《分布式JAVA应用 基础与实践》 第三章 3.3 JVM线程资源同步及交互机制(二)
2011-05-17 21:52 938接下来网上没有,貌似 ... -
《分布式JAVA应用 基础与实践》 第三章 3.3 JVM线程资源同步及交互机制(一)
2011-05-17 19:09 8903.3 JVM线程资源同步及交互机制 Java程序采用 ...
相关推荐
Java分布式应用学习笔记01分布式Java应用和SOA
第二章:JAVA设计模式 18 2.1:创建型设计模式 19 2.2:结构型设计模式 32 2.3:行为型设计模式 83 第三章:JAVA基本语法 118 3.1:语言基础知识 118 3.2:声明和访问控制 120 3.3:运算符和赋值 121 3.4:流程控制...
基于SOA架构的分布式购物电商商城 后台管理系统:管理商品,订单,类目,商品规格属性,用户,权限,系统统计,系统日志以及前台内容等功能 前台系统:用户可以在前台系统中进行注册,登录,浏览商品,
第二章 微服务环境搭建 2.1 案例准备 2.1.1 技术选型 2.1.2 模块设计 2.1.3 微服务调用 2.2 创建父工程 2.3 创建基础模块 2.4 创建用户微服务 2.5 创建商品微服务 2.6 创建订单微服务 第三章 Nacos Discovery--服务...
积分管理系统java源码 Java 微服务实践 - Spring Cloud 为开发人员提供快速构建分布式系统的一些通用模式,其中包括:配置管理、服务发现、服务短路、智能路由、微型网关、...技术方面,如:Java 8、Spring Framework
Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...
1.1 系统架构的演变 1.1.1 单体应用架构 1.1.2 垂直应用架构 1.1.3 分布式SOA架构 1.1.3.1 什么是SOA 1.1.4 微服务架构
java版商城源码下载 XMall 作者本科毕业设计项目 期待您的捐赠支持 作者亲自制作 项目已部署,在线Demo 前台商城: 后台管理系统: 单体版获取 单体XMall系统 非分布式 可跑在1g1核服务器上 获取方式:进入商城 登陆...
###技术笔记 慢慢整理成博客: ###tomcat Tomcat6 6版本是个经典,自己整理可以跑起来的Tomcat代码,阅读学习。 tomcat-work 是《How Tomcat Works》的代码,可惜是Jdk1.4的,也可以作为学习用。 ###分布式小框架...
品优购项目学习笔记 一个综合性的 B2B2C 的电商网站系统。网站采用商家入驻的模式,商家入驻平台提交申请,有平台进行资质审核,审核通过后,商家拥有独立的管理后台录入商品信息。商品经过平台审核后即可发布。 ...
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员...
笔记 由于WSO2 MB已包含在WSO2 Integrator( )经纪人资料中,因此我们不赞成使用此产品并将其移至阁楼。 #WSO2消息代理 欢迎使用WSO2消息代理。 WSO2 MB是轻量级且易于使用的开源分布式消息代理服务器(MB),可...