面向服务的体系架构(SOA)理论基础

1、RPC

1)名词解释
  • Remote Process Call,远程过程调用;
  • 将原来的本地调用转变为调用远程的服务器上的方法;
  • RPC的实现包括客户端和服务端,服务的调用方与服务的提供方。

在这里插入图片描述

  1. 一次RPC调用:服务调用方发送RPC请求到服务提供方,服务提供方根据调用方提供的参数执行请求方法,将执行结果返回给调用方。

  2. 调用参数及响应结果的序列化和反序列操作;

  3. 服务提供方的压力增加,服务需要扩容;

  4. 服务的路由和负载均衡:随着服务提供者的增加,不同的服务之间需要进行分组,以隔离不同的业务,避免互相影响;

  5. 服务消费者通过获取服务提供者的分组信息和地址信息进行路由,服务提供者为一个集群,需要根据相应的负载均衡策略选取其中一台进行调用。

在这里插入图片描述

  1. 对象的序列化:任何类型的数据都需要转换成二进制流在网络上进行传输。将对象转换为二进制流的过程是序列化;将二进制流恢复为二进制流的过程称为对象的反序列化。

  2. HTTP:采用HTTP1.1;属于应用层协议;无状态协议

  3. JSON:JavaScript Object Notation,轻量级的数据交换格式。

  4. XML:Extensible Markup Language,可扩展标记语言;

  5. RESTful:Resource Representational State Transfer,后端将资源发布为URI,前端通过URI访问资源,并通过HTTP动词表示要对资源进行的操作。

  6. SOAP:简单对象访问协议是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。SOAP协议和HTTP协议一样,都是底层的通信协议,只是请求包的格式不同而已,SOAP包是XML格式的。

    SOAP的消息是基于xml并封装成了符合http协议,因此,它符合任何路由器、 防火墙或代理服务器的要求。

    SOAP可以使用任何语言来完成,只要发送正确的soap请求即可,基于soap的服务可以在任何平台无需修改即可正常使用。

  7. SOA(Service-Oriented Architecture),中文全称:面向服务的架构。

    通俗点来讲,SOA提倡将不同应用程序的业务功能封装成“服务”并宿主起来,通常以接口和契约的形式暴露并提供给外界应用访问(通过交换消息),达到不同系统可重用的目的。

    SOA是一个组件模型,它能将不同的服务通过定义良好的接口和契约联系起来。服务是SOA的基石。

  8. 微服务和SOA的区别

    微服务是SOA架构演进的结果。两者说到底都是对外提供接口的一种架构设计方式,随着互联网的发展,复杂的平台、业务的出现,导致SOA架构向更细粒度、更通过化程度发展,就成了所谓的微服务了。

    总之,微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式。

    SOA与微服务的区别在于如下几个方面:

    1. 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
    2. 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
    3. 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

2、服务的路由和负载均衡

  1. 服务的路由:在SOA架构中,服务消费者通过服务名称,在众多服务中找到要调用的服务的地址列表。

  2. 服务的负载均衡:负载较高的服务通常对应着多台服务器组成的集群。在请求到来时,为了将请求均衡地分配到后端服务器,负载均衡程序将从服务对应的地址列表中,通过相应的负载均衡算法和规则,选取一台服务器进行访问;

  3. 服务配置中心:动态注册和获取服务信息,统一管理服务名称和其对应的服务器列表信息;

  4. 负载均衡算法:

    1. 轮询(round robin):将请求按顺序轮流地分配到后端服务器上;
    2. 随机(random):根据后端服务器列表的大小值来随机选取其中一台进行访问;
    3. 源地址哈希(hash):获取客户端访问的IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器的列表的大小进行取模,得到的就是要访问的服务器的序号;
    4. 加权轮询(weight round robin):将请求顺序且按照权重分配到后端;
    5. 加权随机(weight random)
    6. 最小连接数(least connections):根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前请求;
  5. 动态配置规则:groovy脚本实现

  6. Zookeeper

    1. zk集群通过zab(zookeeper atomic broadcast)协议来保持数据的一致性;

在这里插入图片描述

  1. zab协议包括:leader selection和atomic broadcast阶段;

  2. zk实现了一个层次命名空间的数据模型,每个结点znode,当结点发生变化时,watch机制会发出相应的通知给订阅其状态的客户端;

  3. 结点类型:持久,临时、持久顺序、临时顺序;

  4. zkClient解决watcher一次性注册问题;

在这里插入图片描述
本文仅仅用于作者学习与总结,若有不妥之处,敬请指出!

参考资料:
《大型分布式网站架构设计与实践》 提取码:n4gh
《阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别 》
《Dubbo与注册中心Zookeeper的交互过程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨倩-Yvonne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值