分布式的体系架构总结

1、什么是分布式应用架构?

简单的说就是将一个业务拆分成多个子业务,部署在不同的服务器上。(集群:同一个业务,部署在多个服务器上。)

2、为什么要使用分布式应用架构?

在单一应用架构中,随着业务需求的增加,架构随之变得也越来越复杂,因而系统的拆分成为不可避免的事情,由此演变为垂直应用架构。

垂直应用架构解决了单一架构的扩容问题,但是当垂直架构增多时,应用之间的交互,相互调用则不可避免。不同的系统之间存在着重叠的业务,容易形成信息孤岛,重复造轮子。

因此便出现了分布式架构。

在分布式架构体系中,将相对核心的业务抽取出来,作为单独的系统对外提供服务,从而达到业务之间的相互复用。

3、如何实现分布式应用架构?

分布式架构首先要解决的问题是如何实现应用之间的远程调用(RPC)。(待补充)

 

远程过程调用(RPC)

1、什么是RPC?

RPC的实现包括客户端和服务端,即服务端的调用方和服务端的提供方。服务调用方发送RPC请求到服务提供方,服务提供方根据调用方提供的参数执行请求的方法,将执行结果返回给调用方,即为一次RPC调用。

2、基于TCP协议的RPC于基于HTTP协议的RPC

基于TCP协议实现的RPC,处于协议栈的下层,能够灵活的对字段进行控制,减少网络开销,提高性能,实现更大的吞吐量和并发数。但是由于需要对各种不同格式的数据进行解析,使得难以开发,并且随着请求规模的扩大,程序的并发性,锁,I/O等底层的实现更加的复杂,因此很少会使用该协议进行开发。

基于HTTP协议的实现可以使用JSON,XML格式的响应数据,屏蔽了底层细节的实现,使得开发更加简单,并且对于线程,锁之类的处理,很多成熟的开源Web容器如tomcat,apache,jboss已经做了很好的处理。同等环境下,基于http协议的rpc的字节传输率和效率要低一些。但是实际应用中,http协议的rpc更加青睐。

 

服务的路由和负载均衡

1、 什么是服务的路由?

在SOA架构中,服务调用方通过服务名称,在服务列表中找到相应的服务提供方的地址列表,称为服务的路由。

2、 什么是负载均衡?

在对于负载很高的服务列表中,往往对应着多态服务器组成的集群。在请求到来时,为了将请求均衡的分配到后端服务器,负载均衡程序将从服务对应的地址列表中,通过相应的负载均衡算法,选择某一台服务器进行访问,这个过程称之为负载均衡。

3、 负载均衡算法有哪些?

1)、轮询法

2)、加权轮询法

3)、随机法

4)、加权随机法

5)、哈希法

6)、最小连接数法

7)、动态配置规则

4、小规模服务与大规模服务的负载均衡。

当服务的规模比较小时,可以采用硬编码的方式将服务地址和配置卸载代码中,通过编码的方式来解决服务的路由和负载均衡,也可以采用F5之类的硬件设备或者LVS,Nginx等软件方案。

当服务规模较大时,采用以上的方法很容易出现单点故障,即一旦服务路由或者负载均衡服务器宕机,依赖它的所有服务均将失效。此时,需要一个动态的注册和获取服务信息的地方,来统一管理服务名称和对应的服务器列表信息,称之为服务配置中心(zookeeper)。