分布式架构 —— 理解什么是是分布式

Posted 是 The Lin 呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式架构 —— 理解什么是是分布式相关的知识,希望对你有一定的参考价值。

1、什么是分布式系统

  现在常用的开源分布式框架一个是阿里开源的dubbo,还有一个就是Spring cloud
  分布式系统总结来说是将数据存储能力和计算能力分布到不同的服务器上,作为一个整体对外服务。分布式的概念可以理解成一种解决方案。
  目的在于解决单台机器的故障问题,单机计算和 IO 性能问题,以及单机存储空间不足的问题。

2、分布式系统 优缺点

优点

系统可用性提升
  传统的集中式计算或集中式存储,在遇见单点故障时,很容易造成整个服务不可用,分布式下的服务体系,单台机器有故障,不致于造成整个服务不可用。
系统并发能力提升
  请求通过 nginx负载均衡被分发到不同的服务器上,运行同样代码的服务器可以有 1 台 或 N 台,通常情况下会根据实际用户访问量随时增加机器。无论是数据库或者服务,都可以做到随时水平扩展
系统容错能力

低延时
  北京的用户请求自动分发到北京,上海的用户请求被分发到上海,服务器会根据用户的 IP 选择距离自己最近的机房,降低网络延时。

缺点

依赖网络
  服务器间通信依赖网络,不可靠网络包括网络延时、丢包、中断、异步,一个完整的服务请求依赖一连串服务调用,任意一个服务节点网络出现问题,都可能造成请求失败。
维护成本高
  传统单机式服务只需要维护一个站点就可以。分布式服务系统被拆分成若干个小服务,服务从 1 变为 几十个上百个服务后,增加运维成本
一致性,可用性,分区容错性无法同步
  C —— 数据一致性 A —— 服务可用性 P —— 服务对网络分区故障的容错性,分布式框架很难都满足,一般符合其中两者;包括dubbo在内的其它使用zookeeper的分布式框架是满足CP,因为当客户端发送请求时,集群正在进行master选举或者半数以上的机器宕掉,服务可用性就很难做到;而对于持续集成,快速演化微服务来说,可用性就显得尤为重要,spring cloud由此诞生。

3、spring cloud和dubbo的区别

两者的区别也是各自的优劣

  1、dubbo的服务注册与发现是用的zookeeper,spring cloud服务注册与发现用的是Eureka 后者各个节点之间都是平等的不存在主从关系,只要一个节点还在,就能保证服务正常调用,即使全部节点都死掉,服务与服务之间也能通过缓存调用信息,这就保证了微服务之间的调用足够的健壮

  2、对于调用方式dubbo采用rpc的方式,代码耦合度高,spring cloud中的提供方和消费方通过http rest方式,不存在代码的强依赖显得更为灵活

面试官:给我说一下你理解的分布式架构?

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。在此,建议大家为本公众号加“星标”。如文章写得好,望大家阅读后在右下边“在看”处点个赞,以示鼓励!

来源:http://t.cn/Etl1HmR


# 什么是分布式架构


分布式系统(distributed system) 是建立在网络之上的软件系统。


内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。


透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。


在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点以及事物在哪个站点上执行。


简单来说,在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。

面试官:给我说一下你理解的分布式架构?

分布式系统作为一个整体对用户提供服务,而整个系统的内部的协作对用户来说是透明的,用户就像是指使用一个Mysql一样,如:分布式Mysql中间件Mycat ,来处理大并发大数据量的构架。


# 分布式架构的应用


1、分布式文件系统


例如:出名的有 Hadoop 的 HDFS, 还有 google的 GFS , 淘宝的 TFS 等


2、分布式缓存系统


例如:memcache , hbase, mongdb 等


3、分布式数据库


例如:mysql, mariadb, postgreSql 等


4、分布式webService


5、分布式计算


举例


以分布式MySQL数据库中间件mycat 为例。   


MySQL在现在电商以及互联网公司的应用非常多,一个是因为他的免费开源,另外一个原因是因为分布式系统的水平可扩展性,随着移动互联网用户的暴增,互联网公司,像淘宝,天猫,唯品会等。


电商都采用分布式系统应对用户的高并发量以及大数据量的存储。而在Mycat的商业案例中,有对中国移动的账单结算项目中,应用实时处理高峰期每天2亿的数据量,在对物联网的项目中,实现处理高达26亿的数据量,并提供实时查询的接口。


通过对MyCat的学习,加深分布式系统架构的理解,以及分布式相关的技术,分布式一致性ZooKeeper服务, 高可用HAProxy/keepalived等相关应用。


  • 集群与分布式

  • 负载均衡

  • 分布式相关的高可用、容灾等名词解释

  • Mycat中间件学习


# 资源推荐


1、大型分布式网站架构设计与实践