先了解几个名词:
1、RPC(Remote Rroccess Call即为远程过程的调用)
出现背景:单台服务器器处理能力不足,吞吐量受到限制,服务提供方的压力过大,因此需要对不同服务器之间进行分组,以隔离不同的业务,避免相互影响。服务消费者就可以根据相应的负载均衡策略,选择其中的一台机器进行调用。

2、对象序列化
无论什么数据都是要转成二进制在网络上传输的。将对象转为二进制的过程称为对象的序列化。将二级制流恢复为对象的过程称为对象的反序列化。

ByteArrayOutputStream os;
Java 序列化:ObjectOutputStream out;out.write(obj);Hession 序列化:HessionOutput  out;out.writeObject(obj);
Hession 反序列化:ByteArrayInputStream is;HessionInput hi = new HessionInput(is);

基于TCP协议实现RPC
基于HTTP协议的RPC

3、负载均衡(同一个业务部署在不同机器上,来提高系统的可用性)

当规模较小时可以采用硬编码的方式来将本地的服务地址和配置写在代码中,也可以通过硬件设备如F5等,或者采用LVS或者Nginx等软件解决方案。但是依赖硬件或者Nginx来调度,单点故障也会凸显,一旦服务器或者负载均衡器宕机,依赖它的所哟服务均失效。也就是说当一个服务器宕机之后,Nginx 还会转到那台已经宕机的机器上。无法通知客户端,告诉客户端这个机器宕机了,不能访问了,请访问其他机器。

以上存在的问题,如果服务越来越多,规模越来越大,对应的机器就越来越庞大。如下图:

此时,就需要一个可以动态注册和获取服务信息的地方,来统一管理服务器名称和对应的服务列表信息,即服务配置中心(zooKeeper…)。当服务者启动时,将服务器提供的服务名称,服务地址注册到配置中心去。消费者通过注册中心或得需要调用的机器列表,通过相应的负载均衡算法来选择一台服务器调用。
以上消费者只是在第一次调用时访问配置中心,然后缓存到本地,直到服务地址变更(机器上线或者下线),这种无中心化的结构解决了单点故障,同时也减轻了配置中心的压力。

常见的负载均衡算法:

  • 轮询法(Round Robin)服务器上线后者宕机,算法无法得知。另外要付出额外的性能代价来保证轮询算法的支持,需要加锁来保证正确的轮询,吞吐量明显下降
  • 随机法(Random)随机的次数越多,越接近轮训法,那么我们还需要用付出一定代价的轮询算法吗!
  • 源地址哈希法(Hash)用客户端的IP地址的Hash值%服务器列表到的大小,同一个IP的客户端挡在服务器列表不变的情况下,每次都会映射到同一台服务器上访问。这种特性可以在服务消费者和提供者之间建立有状态session回话。
  • 加权轮询法(Weight Round Robin)增加MAP中权重高的服务器的个数,给配置高,负载底的系统更高的权重。
  • 加权随机法(Weight Random)
  • 最小连接数法(Least Connections)

分布式和集群的区别:

分布式:不同的业务功能部署在不同的机器上,提高性能,解决高并发问题,解决了单点故障。
集群:相同的业务部署在多台机器上,提高系统可用性,存在单点故障

SOA面向服务体系的架构相关推荐

  1. 谈谈SOA面向服务体系架构的安全问题

    谈谈SOA面向服务体系架构的安全问题 本文我们讨论的是面向服务体系架构(SOA)的安全应用.在展开讨论之前,首先让我们来解析面向服务体系架构的实际含义.面向服务体系架构是一种涉及若干以服务为导向的应用 ...

  2. SOA面向服务的分布式架构详解

    导语: SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论.从业务角度来看,一切以最大化"服务"的价值为 出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套 ...

  3. 基于面向服务体系架构(SOA)和面向资源体系架构(ROA)的业务组件模型

    引言 在<面向服务体系架构(SOA)和业务组件(BC)的思考>(以下简称< SOA 和 BC >)一文中介绍了基于面向服务体系架构(SOA)的组件模型,本文按照"分离 ...

  4. 面向服务体系架构(SOA)和数据仓库(DW)的思考

    摘要: 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse,DW)都介绍的很多,提出了很多优秀的解决方案,但是一般是把 SOA 和 DW 单独考虑,SOA 和 DW 有着共同 ...

  5. 一起谈.NET技术,使用WCF实现SOA面向服务编程—— 架构设计

    SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由 一些松耦合并且具有统一接口定义方式的组件(也就是ser ...

  6. SOA面向服务的架构概念梳理

    原文地址来自:http://baike.baidu.com/link?url=C9VVTLY58Vt1JyJy0oakTA5cPp8kgT375lOujSFWtyo05hQWAQ7XltmN2W1fe ...

  7. SOA(Service-Oriented Architecture)面向服务的分布式架构详解

    导语:SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论.从业务角度来看,一切以最大化"服务"的价值为出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套新的 ...

  8. 面向服务体系架构和业务组件的思考

    摘要: 在基于面向服务体系架构(SOA)中,"组件化"是一个很重要的概念,如何进行"组件化"开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业 ...

  9. SOA面向服务的架构设计

    目录 面向服务的架构 1 SOA 概述 1.1. 服务的基本结构 1.2.SOA 设计原则 1.3. 服务构件与传统构件 2 SOA 的关键技术 2.1. UDDI 2.2.WSDL 2.3.SOAP ...

最新文章

  1. 关于简聊 Webpack 配置的一些注释
  2. 从二分类到多分类的迁移策略
  3. docker 容器安装conposer_docker学习笔记(二)docker-composer
  4. python中csv模块是自带的吗_python csv模块 Python的CSV模块,怎么新建为添加模式
  5. 光绘文件 c语言 解析,AltiumDesigner输出光绘文件
  6. SearchParams(URL获取参数)
  7. java 死锁_java死锁分析
  8. java 异常处理 Throwable Error 和Exception
  9. Illustrator中文版教程,如何在 Illustrator 中创建几何图案?
  10. mysql拼装字段_Mysql 实现字段拼接的三个函数
  11. 使用 Python 构建电影推荐系统
  12. 计算机慢怎么解决6,电脑运行速度慢怎么回事 电脑运行速度慢的解决方法
  13. python图片分析中央气象台降水_02_中央气象台
  14. 教你如何快速提取视频文案
  15. 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法IC-GN的数值解计算
  16. 庄懂的TA笔记(六)<FakeEnvReflect 生锈,锈迹效果>
  17. netbackup备份mysql_NetBackup备份Oracle数据库失败-nbu
  18. Python Web学习笔记,电影网站
  19. Git配置免密登录及常用操作的详细教程(基于Gitee平台)
  20. 阿里云域名ICP备案操作流程

热门文章

  1. 【124】JavaScript获取下一个、上一个兄弟节点
  2. DELPHI-Delphi常用类型及定义单元
  3. 亚像素边缘提取的例子
  4. 传感技术复习笔记(5)——电容式传感器
  5. c语言键盘驱动程序,c语言键盘扫描程序
  6. MysqlOracle中的日期
  7. c语言中char类型转int类型
  8. python 证书-python+证书
  9. 高通平台开发系列讲解(外设篇)高通Camera软件架构
  10. 后端返回数据中的换行符,在标签中不显示换行的解决方法