`
asle
  • 浏览: 802 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

构建分布式系统的难度

阅读更多
在分布式系统设计中,为了提供更好的非质量属性(高可用,可扩展,互信安全等),系统伸缩性问题是我们关注的核心问题,它主要表现在网络和服务器的容量(即书中所谈及的数据量)和性能(即应用程序的计算逻辑)问题,原则上讲只存在三种伸缩技术:隐藏通信延迟,分布和复制。
    隐藏通信延迟:主要针对的是地理的伸缩性问题。它的基本思路很简单:尽可能避免等待远程服务的回复。从本质上来讲,这就要求我们尽可能的采用异步通信的方式来构成服务请求的应用,在服务回复到达的时候,用户可以继续服务请求的处理。
    分布:涉及到将一个较大的组件分解成更小的部分,然后将它们部署在整个系统上(而不是一台机器上)。由于组件分布在不同的机器上面,不可避免的带来了网络损耗。
    复制:不仅可以提供系统的可用性,而且可以帮助我们在组件之间实现采用负载均衡而使系统达到更好的性能。同事,对于地理位置比较分散的分布式应用,一个较近的资源就可以隐藏通信延迟。缓存是一种特殊形式的复制,是对资源做的一个拷贝。复制天然的会来一个数据不一致的问题,这是有数据的多点分布这个特性带来的
    从上面三个基本点来说,分布式系统本身就是一种折中的方案,对于CAP定理,从本质就决定我们不可能同时满足所有的客观要求。针对上面的三种基本技术,一般来说一个分布式系统的分析和设计就必须解决下面的7个子问题:
(1)高级通信问题。计算机网络通信的模型本质上计算机之间的消息传递。
(2)进程和代码的分布。将应用系统的代码处理和进程进行分布构成分布的最基本的思想。最近的研究集中在代码在分布环境下的迁移和基于主体的应用。
(3)资源的命名服务。在大规模分布的环境中,资源的命名和管理是一个关键的问题。如何采用一致的方式进行资源的命名,资源的访问和资源的配置就构成了命名服务研究的主要问题。
(4)分布式事务处理。
(5)复制与一致性问题。
(6)分布式容错系统。
(7)分布式安全设计。
     任何设计都不能减少系统本身的业务逻辑性的复杂度,这是系统本身的商业环境和业务场景决定了系统在实现难度上的基本难度下线,我们的设计只能不断的逼近这个难度下线,通过系统性的思考来综合考虑一个分布式系统的设计会是有个不错的方式。
分享到:
评论

相关推荐

    华为云智能边缘云首席架构师解读KubeEdge:云原生的边缘计算平台

    (1)边云生态的割裂,物理设备访问难度高,与IT技术割裂,开发难度高产品上市周期长(2)日趋复杂的边缘业务的部署,对高度分布和大规模可扩展性缺乏考虑(3)缺少和云的协同以及边缘和边缘的协同,构建分布式系统难度高(4)OT...

    基于springboot、MVC等框架构建的高可用分布式支付网关/支付前置/支付系统/微信/支付宝

    基于springboot、MVC等框架构建的高可用分布式支付网关/支付前置/支付系统/微信/支付宝 系统主要由三部分构成: 1. 数据库迁移工具 2. 后台管理 3. 后端服务 该项目的初衷是为企业提灵活可扩展的支付服务,方便...

    基于Spark+PageRank算法构建仿微博用户好友的分布式推荐系统.zip

    资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地...

    20讲玩转微服务可观测性系统-视频教程网盘链接提取码下载 .txt

    如何从架构层面更好地了解分布式系统,多维度、快速定位并解决问题?这时候就需要引入分布式链路追踪,构建可观测的微服务系统。无论你是开发、测试、还是运维,提高系统的可观测性,都会减少你的低效劳动,让你的...

    计算机课程毕设:基于Spark+PageRank算法构建仿微博用户好友的分布式推荐系统.zip

    资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地...

    基于Python实现的一个简单的分布式高并发RPC框架+源代码+文档说明

    ## 用Python构建分布式高并发的RPC框架 ------ ### 一、为什么要写一个RPC框架? > + 不是想要造轮子,Dubbo、gRPC、Thift这些轮子已经非常好用了 > + RPC在微服务、分布式系统、Web服务器方面应用太广泛了,...

    基于在线分布式组态技术的煤矿综合自动化平台

    采用客户端/服务器网络架构、多人同时开发、在线增加/修改/删除远程节点中的数据库点的方式,面向自动控制系统监控层开发灵活可靠的煤矿综合自动化平台组态技术,为煤矿提供快速构建工业控制系统监控功能的软件平台;...

    基于SpringBoot+Mybatis开发的分布式校园租赁系统.zip

    基于java、jsp、servlet、mysql、springboot等技术构建的系统,适合毕设项目、课设作业。资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教...

    基于SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统.zip

    基于java、jsp、servlet、mysql、springboot等技术构建的系统,适合毕设项目、课设作业。资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教...

    最近很火的分布式数据库 RethinkDB.zip

    高效实现实时推送架构需要重新设计绝大部分的数据库成分,包括查询执行引擎、分布式系统、超高速缓存子系统和存储引擎。因为架构影响到每一个数据库 组成部分,RethinkDB不得不从C 开始一步步写起来。RethinkDB 是...

    分布式人口地理信息系统的建构 (2013年)

    开展了分布式人口地理信息系统的构建研究研究表明,人口地理信息系统需同时面对数据生产者和数据消费者,必须采用B/S和C/S混合架构模式在系统的C/S架构部分,直接使用成熟的GIS桌面系统,既满足了人口地理数据生产,...

    实现SMP机群虚拟化的方法 (2009年)

    机群是一类重要的并行计算机体系结构,成本低廉,可...本文提出一种新颖的虚拟化SMP机群的方法,即利用硬件虚拟化技术,在操作系统(OS,Operating System)之下构建分布式虚拟机监视器(DVMM,Distributed Virtual M

    Python基于Scrapy+Redis分布式爬虫设计+源码案例+Python + Scrapy + redis.zip

    基于java、jsp、servlet、mysql、springboot等技术构建的系统,适合毕设项目、课设作业。资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教...

    基于Web的通用查询系统平台的设计与实现

    研究了目前查询系统以及查询平台的发展现状,...通过综合利用信息技术,保证了该平台可以灵活快速地构建可定制、高推广性、既友好又安全的Web分布式动态查询系统,较大地降低了Web查询系统的开发成本和维护工作的难度。

    Hadoop海量网络数据处理平台的关键技术

    因此本文首先针对当前移动互联网流量数据采集的技术特点和难点进行了详细分析,包括分布式、高动态性、采集终端多样性、节点异构等等,然后针对这些数据采集的难度问题,本文引入了分布式网络故障检测技术,设计了一种...

    Spring Cloud的特点、优势、主要组件以及其在微服务架构中的应用.zip

    组件丰富,功能齐全:Spring Cloud提供了一系列的组件,如Eureka服务注册发现中心、Spring Cloud Config分布式配置中心、Hystrix熔断器等,基本覆盖了日常开发的各个方面。 开箱即用,快速启动:继承了Spring Boot...

    1固定资产管理系统方案.doc

    XXX技术有限公司 2009年6月 1 概述 固定资产作为企业单位资产的重要组成部分,与企业资金、无形资产等一起构成企业 价值。作为企业管理中一个重要的组成部分,由于固定... 通过构建基于集团内部的Intranet的分布式网络

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

Global site tag (gtag.js) - Google Analytics