[置顶] 漫谈SOA(面向服务架构)
面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西。我简单的认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点。这里不再讨论这些服务定义服务与服务之间的通信协议(像WSDL等等),我并不认为这是服务化的本质所在。即使Java语言用RMI进行服务与服务之间的通信也仍然不违背服务化的宗旨。
一.为什么需要面向服务架构
1.我觉得面向服务的根本好处是便于管理,也是应用大到一定时候的必然产物。这往往和组织架构之间相契合。其实不合理的服务划分也会带来服务之间的混乱。
2.面向服务是一个解耦的过程,松耦合降低了服务之间的依赖,也意味着服务一个服务出现故障的时候不容易引起连锁反应,也能更好的控制服务与服务之间的关系与优先级。
3.不同语言之间的通信。
二.面向服务架构的好处
在为什么要面向服务架构里面已经讲到了这样的好处。这里再举一些简单的例子来阐述。比如说一个应用部署在一台机器上,然而不管如何优化单机是无法撑起整个应用。这时候有两种思路。
水平扩展,即整个应用作为一个整体,然后水平扩展到多台机器上。
图A
服务拆分,这是解耦的过程,也符合软件工程中“高内聚,低耦合”的思想。往往第一步会进行模块化。这样做可能还不够,我们需要让它们能够独立生存。这样一个大的服务“分裂”成一个一个比较小能够独立生成的服务,这里的关键是可以独立生存,意味着它们可以部署在不同的机器上,一定程度上达到了“分布式”的效果。
图B
总结
上面从两个维度讲到了机器扩展。这两者在系统的拆分中会同时存在。从纯性能的角度讲应该采用第一种方案。两第二种方案并不当作解决性能的总体方案。而主要从软件管理的角度来讲进行拆分。这种拆分使得整个业务的粒度越来越细,也会越来越好控制,保证每个服务的高内聚,有清晰的边界。
面向服务架构是一种思想,当然对于大系统而言其利必大于弊,而系统比较小的时候盲目的拆分和服务化其实会导致整个维护成本上升。系统架构并没有一层不变的套路,也不必完全遵循某种模式。一切都在实际应用中结合具体的应用场景。应该说是“方法论”的具体产物。
[置顶] 漫谈SOA(面向服务架构)的更多相关文章
- (转)漫谈SOA(面向服务架构)
http://blog.csdn.net/luohuacanyue/article/details/12521699 面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模 ...
- SOA面向服务架构
SOA面向服务架构 风尘浪子 只要肯努力,梦想总有一天会实现 随笔分类 - SOA面向服务架构 结合领域驱动设计的SOA分布式软件架构 摘要: 领域驱动设计DDD的总体结构,Repository层使用 ...
- SOA(面向服务架构)——踩坑后反思:这样值得吗?
SOA(面向服务架构)——踩坑后反思:这样值得吗?
- SOA面向服务架构简述
在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务.在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契 ...
- SOA 面向服务架构 阅读笔记(一)
Service Oriented Architecture 面向服务架构 学习笔记(一) 1.业务自由 1.1 在很多企业中,业务和IT技术是各自独立的,无法使用通用的统一语言进行管理. 1.2 ...
- 聊聊SOA面向服务架构
什么是SOA SOA(Service-Oriented Architecture),即面向服务的架构.SOA是一种粗粒度.松耦合服务架构,服务之间通过简单.精确定义接口进行通讯,不涉及底层编程接口和通 ...
- SOA面向服务架构——SOA的概念
SOA的概念是Gartner 在1996年提出来的,并于2002年12月进一步提出SOA是“现代应用开发领域最重要的课题”. 一.SOA的定义 SOA分为广义的SOA和狭义的SOA,广义的SOA是 ...
- SOA 面向服务架构 阅读笔记(五)
14 SOA 服务管理器 契约:契约中必须明确定义双方的责任,否则就会产生混乱. SOA可以管理端到端的流程. IT技术一直是与业务对齐的. 14.1.1 分解IT层 业务服务层 管道层 硬件层 管道 ...
- SOA 面向服务架构 阅读笔记(四)
15 SOA管理 15.1 管理指的是实现一个制约和平衡的一致过程,以确保得到期望的结果. 15.2 管理被广泛应用于人工流程和软件流程中,一旦管理失败,后果会非常严重. 15.3 SOA管理的首要 ...
随机推荐
- ms flexbox 布局 (ko list)
<!DOCTYPE html> <html> <head> <title></title> <script src="js/ ...
- python multiprocessing 多进程
''' 如果要启动大量的子进程,可以用进程池的方式批量创建子进程: ''' def test_task(name): print 'Run task %s (%s)...' % (name, os.g ...
- [CC150] Get all permutations of a string
Problem: Compute all permutations of a string of unique characters. 此题用循环的方式不好做,下面是一种递归的思路: 把给的字符串看成 ...
- location.hash 详解
前年9月twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变成了 h ...
- UVA 10651 Pebble Solitaire 状态压缩dp
一开始还在纠结怎么表示一个状态,毕竟是一个串.后来搜了一下题解发现了这里用一个整数的前12位表示转态就好了 ,1~o,0~'-',每个状态用一个数来表示,然后dp写起来就比较方便了. 代码: #inc ...
- [wikioi]线段覆盖
http://wikioi.com/problem/1214/ 这道题也归为贪心了.我也不是很能分辨,但想法确实是:1.有阶段最优化性:2.前一状态和后一状态有关系. 想法:1.排个序是很自然的想法, ...
- 释放SQL Server占用的内存
由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存.所以很多时候,我们会发现运行Sql Server ...
- Android Integer.decode()和Intger.valueof()
decode合适用来分析数字 可以分析 8进:010=>分析后为 8 10进:10=>分析后为 10 16进:#10|0X10|0x10=>分析后是 16 而valueof 只 ...
- Macbook配置adb环境
配置adb命令 http://stackoverflow.com/questions/5526470/trying-to-add-adb-to-path-variable-osx http://sta ...
- gdb 调试c/c++的一些小技巧
ptype obj/class/struct 查看obj/class/struct的成员,但是会把基类指针指向的派生类识别为基类 set print object on 这个选项可以看到派生对象的 ...