采用分布式的原因:

最终还是为了减轻服务的压力,系统的瓶颈一般在IO,和数据库上,首先为了减轻服务压力。我们的系统一般都是垂直架构,就是mvc,为了减少压力一般多是加缓存,消息队列等。在业务量逐步增大以后,就需要考虑分布式架构来减少各个环节的瓶颈。

分布式一般有两种,垂直拆分,横向扩展

  • 1).垂直拆分,比如按业务拆分,用户,订单,商家,拆成小系统(数据库用自己的系统)。相互之间通过远程调用(RPC)进行系统间调用。
  • 2).横向扩展,比如用户系统只有一台服务,用户量上来了,一台扛不住,就进行水平扩展,形成业务集群,通过负载均衡进行分发。

分布式系统需要注意的:

  • 1.拆分业务时,共性业务的提取等
  • 2.各种同步,

    如: 1).分布式缓存,缓存的一致性 2).同意配置管理,配置信息的一致性

  • 3.负债均衡,业务路由 4.服务化(soa)以后,服务治理,服务依赖 ,服务降级等问题

微服务也是面向服务的一种,只是更加细粒度拆分服务能力,通过http restful风格统一接口。逐步形成API网关来统一服务管理,不在强调 业务总线(esb)。

现在好多系统都是对内的通过rpc通信,对外的提供restful接口