分布式架构设计概要总结_第1页
分布式架构设计概要总结_第2页
分布式架构设计概要总结_第3页
分布式架构设计概要总结_第4页
分布式架构设计概要总结_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分布式架构设计概要总结一、构建分布式的缘由——业务架构的演进首先需要考虑的一点。我们先思考几点:1、数据如何均匀分布到不同的节点上,涉及到负载均衡;之间的全都性;据;paxos协议:paxos,要么全部失败。在上图简洁以时间线为准,粗略描述了我们系统架构随着业务的需求考量以及业务的进展,系统担当的并发量也将逐步提升,这就要求我们的系统架构而思考的方向可以从我们已有的计算机学问体系中找到答案。比方:份来缓解我们的压力,即集群.库的压力反而增加了,于是我们会想到使用缓存策略来缓解我们的压CPU的效劳进展改进。另外,随着业务的增长以及需求不断地调整变化,有时候为了提升我们beanbean冗余但可能是类型或者是状态显示不同,目的固然是简化便于理解。更为专注业务开发的落地实现。引入性能技术的优化方案之后,这个时候我们从另外一个视角来看,即一二、构建分布式系统的两个核心因素对此,一个分布式系统效劳需要具备以下两个因素:其变成一个分布式的架构。保证系统效劳的高可用:为了增大系统容量,我们将业务进展拆分,彼单点故障,从而提高系统的可用性。小结证我们的系统效劳具备高可用,抑或是允许一小局部效劳不行用。1、节点独立完成业务的恳求处理操作。2、集群的一组业务效劳操作,这多个供给效劳的节点组成一个集群。3、副本节点的高可用。4、中间件用方案的组件,简化开发人员的工作,让开发者更专注于业务上的开发。比方效劳与效劳之间通过消息中间件实现异步通信,实现效劳解耦;缓存的过程,避开全部一样的数据查询操作的流量都落地到数据存储层;引入负载均衡中间件实现高可用;CRUD5、SOA且通过网络进展效劳调用来完成一次简洁的业务恳求操作;而不影响微效劳中其他的组件。6、分布式协调执行的业务规律处理挨次全都,即保证效劳节点处理业务请的规律具备有序性;资源的事务操作具备原子性以及数据全都性。全都性。7、效劳治理的架构设计上来对待问题,那么效劳与效劳之间的通信流程如下:效劳启动并注册到注册中心-调用方从注册中心猎取被调用方的效劳列表统一存储和治理,这样子我们就能够针对各个效劳进展分析与优化等操作。8、DevOps&自动化运维CI/CD-UIDevOps程,这对于我们做效劳化架构能够实现快速迭代开发;移,配置治理,状态治理等一系列自动化运维工作。四、分布式技术栈,对于高性能方面,自己也基于上述的根底上做一些补充:集群与负载均衡:通过水平扩展业务处理力气来提升系统的并发处理能力。缓存设计:在我们的上述效劳进展水平抑或是垂直扩展的时候,这个时候上,为了缓解数据存储系统的压力,这个时候我们会考虑将数据进展冷热划分,对于热点数据集中在缓存系统效劳以降低我们的数据存储压力。对于缓存的设计存在以下三种模式:CacheAside更模式,即失效-命中-更策略;cacheLinuxCachecachecache垂直拆分业务(效劳化设计):当我们的一个效劳节点担当简洁繁多的业务效劳的时候,必定会影响到我们业务处理的力气,为了提升我们的并发处理力气,为了提升我们的系统并发力气,可以考虑将我们的业务进展垂直拆分,于是就有了一个恳求的处理需要多个效劳之间进展协作完成。数据镜像与分区(读写分别/分库分表):尽管使用缓存可以缓解我们的效劳压力,但是照旧无法从根源上缓解流量对数据存储的压力,于是我们一方面会做读写分别,做主从集群,主节点负责处理事务的数据写入,从节点数据负责数据的读取;另一方面为了提升单库单表的并发力气,这个时候我们也是借助分而治之的设计思想,实行分库分表的思路来缓解我们单库单表的流量压力。借助MQ中间件实现异步处理:可以通过中间件技术实现异步处理,对流量进展削峰缓冲,进一步提高了程序的并发处理力气以及系统的稳定性。数据异构设计:将同一个业务数据依据业务需求的用途划分为不同的数据仓库存储以适用相应的业务需求场景,比方对于爬虫的聚合资讯数据来源存在ID依据用户维度来进展异构一个与用户相关的订单数据仓库的策略(存在数据冗余,但是提升读取性能)。2、高可用设计一些补充:效劳冗余与负载均衡技术:从集群角度上思考,我们需要考虑集群是流量如何分担到集群效劳的节点,集群效劳节点消灭特别或者不行用的时候流量如何切换,这个时候我们就需要考虑到负载均衡技术来帮助我们实现流量分发的调度,对效劳节点实行心跳检测以及当效劳节点特别实行重试与流量切换重调度安排可用效劳节点来避开单点故障问题,简而言之效劳的高可用可以是效劳冗余与负载均衡技术来避开单点故障,实现故障自动的恢复。隔离技术:为了防止故障集中到其他效劳节点,我们通常会实行隔离技术来隔离拆分的业务效劳,每个业务效劳分别各自独立部署,在分布式系统设计中,一般会效劳的种类或者是用户来进展隔离。当系统担当的并发流量效劳压力格外浩大的时候,这个时候我们需要实行保护措施,通过降级或者限流的技术来停用局部业务效劳或者是拒绝局部用户的恳求操作以确保整个系统不会被流量冲垮导致整体不行用。在效劳化架构设计中,为了防止效劳产生雪崩,需要在调用效劳参与超时重试以及熔断机制,避开将错误集中到其他效劳导致整个系统效劳不行用。从而缩小局部效劳。利用效劳冗余来避开单点故障,比方多租户隔离,灾备多活抑或是数据副本保证全都性,高可用不仅是的效劳集群的高可用,还有就是中间件实现高可用设计。高可用的运维:实现devops的CI或者CD的持续集成打算任务,能够构建执行自动化测试,实现灰度公布部署以及线上系统的自动化把握。缓存的高可用:对于缓存系统也需要承受集群高可用的方式来避开单点故障以及实现故障恢复,同时对于缓存系统要实现高可用,需要留意以下几个问题:缓存穿透:即对于不存在的数据缓存始终都是没有命中会直接将流量打到数据存储层上。都会打到数据存储层,很简洁引起数据存储层的并发性能问题。缓存击穿:即针对某一个热点缓存在某一个时间点存在并发访问量请打到数据存层上。因此对于缓存的高可用不仅需要避开单点故障,同时还需要具备容错能缓存击穿的产生。切流量:面临高并发流量的接入时,我们并无法保证全部效劳节点都是可用状态,于是需要在接入层或者效劳网关做故障转移,将流量切换到可用的效劳节点上。可回滚:在分布式的效劳化架构设计,我们需要对效劳实施版本把握与治理,一旦公布的效劳节点产生测试不行预知的测试,为了削减效劳不行用时长抑或是效劳的掩盖面,我们需要对效劳进展回滚到上一个稳定版本以保证线上效劳可用。3、业务设计当我们应用在单位时间内接收到一样并发的事务恳求操作时,这个时候我们需要考虑事务恳求操作处理不管多少次恳求最终只能处理key。比方下单支付操作,由于支付渠道是无法避开重复支付的,因此对于我们key记录在数据表并通过数据表进展查询验证,假设并发量很大的话,我们可以考MQMQ,再MQ事务补偿机制:在分布式架构设计中,基于ACID以及BASE理论学问,事务补偿操作可以是保证一系列的业务操作具备原子性而最终到达业务数据全都性的目标,当其中某一个操作消灭特别的时候,我们实行重试让其运行得到我们期望的大事状态,假设重试不成功,则实行人工干预抑或是丢弃回滚大事。就需要对此场景进展事务补偿,保证我们的业务最终全都性;N+1N+7试与验证处理,保证数据金额的最终全都性.状态机系统包含条件,大事以及大事触发的状态变更操作,严格依据确定的状态变更规章通过外部大事触发以及条件的推断执行状态变更。比方设计一个订单状态的状态机,我们需要考虑订单状态的变化以及对应款状态等一系列大事触发的订单状态变更形成一个状态机。可以针对一些核心业务功能实行行为记录的日志异步化长期化到数据层上,并通过后台治理系统查看反响以及重要核心业务流程的追踪分析。五、分布式效劳指标监控时就需要对整个分布式系统进展全栈监控,即不管是应用效劳层(业务效劳化),抑或是平台组件效劳还是底层机器的资源监控,我们都需要做到心中有数,才能够针对某一个效劳进展排查与优化。CPU/内存/网络/IO/带宽流量等。Redis/MQ容量/io/内存/线程/效劳节点安康状态等指标进展监控。,效劳调用链,日志收集,qps/tps六、分布式小结1、分布式设计思考的维度两个目标:提高系统的性能和保证系统效劳的高可用。宏观的架构技术栈:效劳/流量调度:流量把握-流量治理-效劳治理状态/数据调度:数据可用性-数据全都性-数据分片DevOps环境公布-灰度公布-正式公布.业务效劳化设计:性能设计弹力设计(高可用技术)业务设计全栈系统监控2、分布式面临需要解决的问题技术架构面临的问题:效劳节点如何崩溃恢复分布式缓存问题共识问题流量把握〔降级限流等策略〕整体架构的监控自动化运维效劳化架构面临的问题:数据全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论