大型电商分布式架构设计与优化

合集下载

大规模分布式系统的架构设计与优化

大规模分布式系统的架构设计与优化

大规模分布式系统的架构设计与优化随着时代的发展,大规模分布式系统的应用正在成为越来越普遍的趋势。

其优势在于具备高可用性、可伸缩性、高性能和低成本等特点。

但是,如何设计和优化分布式系统,是一个值得深入探讨的话题。

本文将从架构设计和优化两个方面进行介绍。

一、架构设计在设计分布式系统体系结构时,需要考虑以下几个方面:1. 技术选型首先需要根据业务需求,选择适合的技术方案。

通常情况下,分布式技术的选择需要综合考虑成本、可靠性、性能等因素。

目前常用的分布式技术包括分布式数据存储、分布式缓存、分布式消息中间件、负载均衡等。

2. 模块化设计大规模分布式系统需要考虑模块化设计,这样可以更好的进行多节点的协作和管理。

模块化设计的优点在于提高系统的可维护性、可测试性和可重用性。

3. 高可用性大规模分布式系统需要在设计时考虑高可用性,这样可以避免由于某一节点宕机而导致整个系统的崩溃。

实现高可用性的方法包括冗余设计、数据备份、负载均衡等。

4. 安全性在设计分布式系统时,需要考虑安全性问题。

这涉及到数据的安全性、通信的安全性和用户的隐私安全等。

因此,在设计中需要考虑安全策略、权限管理、加密传输等方面的问题。

二、优化优化是保证分布式系统性能的关键部分,但优化的过度也不利。

以下可以从以下两个方面着手:1. 网络拓扑在进行分布式系统优化时,需要考虑网络拓扑的优化。

这包括网络拓扑结构的设计,以及网络传输协议的选择等。

另外,在进行大规模分布式系统优化时,需要考虑跨节点之间的数据传输和通信的优化。

2. 系统性能系统性能是分布式系统优化的核心,优化可以从以下几个方面进行:(1)硬件优化,包括CPU、内存、硬盘等方面的优化。

(2)软件优化,包括代码的优化、算法的优化等。

(3)数据库优化,包括索引优化、分表、分区等。

(4)系统监控和诊断,可以使用监控工具对系统进行实时跟踪和诊断,及时发现问题并进行解决。

(5)负载均衡,可以使用负载均衡算法将访问请求分配到不同的节点上,以实现负载均衡和系统性能的优化。

大规模分布式系统的架构设计和优化

大规模分布式系统的架构设计和优化

大规模分布式系统的架构设计和优化随着互联网的不断发展,大规模分布式系统被越来越多的企业所应用。

分布式系统的优势在于可以提高系统的可靠性、弹性、可扩展性和性能等方面,满足业务高速增长的需求。

分布式系统的架构设计和优化成为了各大企业和技术人员所关注的热点。

本文将从以下几个方面来介绍大规模分布式系统的架构设计和优化。

一、系统架构的选择分布式系统的架构设计是一个重要的环节,不同的架构选择对系统的可靠性、性能、可维护性和可扩展性都存在影响。

目前市面上流行的分布式系统架构有多种,比如SOA、微服务、Lambda架构、Kappa架构等。

SOA(面向服务架构)是基于服务的架构风格,可以让企业实现服务化和服务组合的目标。

可靠性高,适用于复杂业务场景。

微服务架构是一种将复杂的系统分解为简单可交互的服务组件的体系结构,增强了可维护性和可扩展性。

Lambda架构是一个综合的、灵活的大数据处理架构,通过实时计算和批处理结合起来处理海量数据。

Kappa架构是一个基于流处理的架构,通过流处理直接对数据进行实时处理,可以提高系统的实时性。

二、数据存储和处理在大规模分布式系统设计中,数据存储和处理是关键环节之一。

数据储存涉及到数据库架构和数据存储方式选择。

传统关系型数据库适用于事务性系统领域,但相对而言在处理海量读写操作、高并发和读写分离方面存在瓶颈,因此目前在大规模分布式系统架构设计中不太合适。

而NoSQL数据库则适合于数据结构简单、数据量大、读写频繁、高并发和读写分离场景。

数据处理主要包括实时处理和离线处理,两者相互补充。

实时处理适合于快速处理实时数据,比如商品推荐,用户行为分析等。

离线处理适合于处理大量数据,比如大型数据挖掘、机器学习等场景。

三、系统运维和监控系统运维和监控是分布式系统的重要环节,也是保证系统稳定性和可靠性的基础。

在系统运维方面,容器化和自动化运维已经成为趋势。

容器化可以实现故障隔离和高效的资源利用,自动化运维可以让系统管理员和开发人员专注于业务逻辑处理,而不是过多地关注系统运维问题。

大规模分布式系统设计与性能优化

大规模分布式系统设计与性能优化

大规模分布式系统设计与性能优化随着互联网的快速发展,大规模分布式系统在各个领域得到广泛应用,如云计算、搜索引擎、社交网络等。

设计和优化这些系统的性能对于实现高可用性、高扩展性和高性能至关重要。

本文将探讨大规模分布式系统的设计原则以及性能优化的关键点。

首先,大规模分布式系统的设计需要考虑以下几个关键因素:可靠性、可扩展性和易用性。

可靠性是指系统在面对故障时能够继续工作,这可以通过使用冗余以及实现高可用性来实现。

可扩展性是指系统能够很好地适应规模的增加,这可以通过水平扩展和使用分布式文件系统等技术来实现。

易用性是指系统的界面和操作对用户友好,这需要设计良好的用户界面和方便的管理工具。

其次,性能优化是保证大规模分布式系统高效运行的关键。

性能问题可能会导致系统响应变慢、资源利用不当以及用户体验下降。

为了解决性能问题,可以从以下几个方面进行优化。

首先,优化系统的数据存储和访问。

大规模分布式系统通常需要处理大量的数据,所以选择合适的数据存储方案非常重要。

传统的关系型数据库可能无法满足系统的需求,可以考虑使用分布式数据库或者NoSQL数据库。

此外,通过使用缓存系统可以提高数据的访问速度,减轻数据库的负载压力。

其次,优化系统的通信和消息传递。

在大规模分布式系统中,节点之间通常通过网络进行通信。

优化数据传输和消息传递可以降低网络延迟和提高系统性能。

可以使用压缩算法减小数据包的大小,采用异步通信方式来提高并发性能,并使用负载均衡技术将请求分发到不同的节点上以减轻负载压力。

再次,优化系统的计算和处理。

大规模分布式系统通常需要处理大量的计算任务,如数据分析、机器学习等。

使用并行计算可以提高系统的计算性能,可以通过拆分任务并在多个节点上并行处理来加速计算。

此外,合理利用多核处理器和GPU等硬件资源也可以提高系统的计算能力。

最后,定期监测和调整系统。

大规模分布式系统是动态的,随着用户量和数据量的变化,系统性能可能会发生变化。

电子商务平台的架构设计与优化

电子商务平台的架构设计与优化

电子商务平台的架构设计与优化随着电商行业的迅速发展,电子商务平台在市场上的竞争也越来越激烈。

为了满足日益增长的用户需求,电子商务平台需要不断地进行架构设计和优化。

本文将根据模块的不同,分为用户模块、商品模块、订单模块、支付模块进行讲解。

一、用户模块电子商务平台最基本的模块之一就是用户模块。

用户模块涉及到注册、登录、个人信息、订单查询等功能。

为了满足不同用户的需求,用户模块应该具有高度可扩展性和高并发性。

在架构设计方面,用户模块应该采用分布式架构,通过负载均衡器实现多个服务器的请求均衡分配。

同时,对于一些经常请求的接口,可以考虑使用缓存技术,从而提高访问速度和并发量。

在优化方面,一般情况下,用户模块的访问量相对较高,因此需要对SQL语句进行优化,减少数据库访问时间。

另外,在迭代过程中应该将用户反馈作为一个重要参考,及时进行修复和改进,从而提升用户体验。

二、商品模块商品模块是电子商务平台的核心模块之一,涉及到商品展示、搜索、分类、详情页等功能。

为了提供更加丰富的商品信息和满足复杂的查询需求,商品模块需要具有高度的灵活性和扩展性。

在架构设计方面,可以考虑采用分布式存储技术,通过多个节点实现商品信息的存储和检索。

另外,为了提高后台管理效率,可以考虑采用ES集群来实现全文检索等高级查询。

在优化方面,应该考虑使用图片懒加载和压缩技术,减少页面加载时间,提升用户体验。

另外,在商品数据的导入过程中,需要进行数据清洗和去重,避免出现重复或错误信息,保证商品信息的准确性。

三、订单模块订单模块是电子商务平台的重要模块之一,涉及到订单查询、订单生成、支付等功能。

为了满足用户的即时支付需求,订单模块需要具有高可用性和高并发性。

在架构设计方面,可以考虑采用分布式事务管理来实现订单生成、支付等操作。

同时,可以使用队列技术,将大量请求缓存进入队列,降低对系统的直接压力,进而增加系统的稳定性。

在优化方面,应该对订单生成和支付接口进行安全加固,避免因为恶意攻击而导致的安全问题。

大型分布式系统的架构设计与优化

大型分布式系统的架构设计与优化

大型分布式系统的架构设计与优化一、引言随着信息技术的迅猛发展,大型分布式系统作为当前最成功的软件体系结构之一,得到了广泛的应用。

然而,在应用领域的多样性和复杂性背后,分布式系统的架构设计和优化成为了制约其性能和可靠性的关键因素。

因此,本文将从架构设计和优化两个方面分别讨论大型分布式系统的特点,问题和解决方案。

二、架构设计1.分布式系统架构类型目前,常见的分布式系统架构类型包括面向服务的架构(SOA)、微服务架构(Microservices)、分布式时间戳架构(DTS)、数据流架构(Dataflow)等。

其中,面向服务架构的特点是功能模块化和资源共享;而微服务架构的特点是分离度高和独立可部署;分布式时间戳架构强调时序的维护;数据流架构强调数据流的处理和传输。

具体采用哪种架构类型需要考虑实际需求和数据架构等一系列因素。

2.分布式系统中的关键问题2.1 数据一致性当分布式系统同时涉及到多个实例对数据进行写入和读取时,数据一致性成为了分布式系统中最重要的问题。

常用的解决方案包括基于锁的同步机制、基于消息传递的异步机制和基于版本的乐观并发控制。

2.2 容错和可靠性分布式系统中,容错和可靠性是至关重要的,这是由于分布式系统往往需要部署在多个节点上,而每个节点都可能成为故障的源头。

基于这种情况,常见的容错技术包括备份,超时重试和自我修复等。

2.3 可伸缩性随着系统规模的扩大,分布式系统需要能够处理更大并发量,更高的负载和更多的数据存储需求。

因此,分布式系统的可伸缩性需要考虑机器的横向和竖向扩展,以及数据分区和路由的支持等多种因素。

3.架构设计原则为了解决分布式系统架构中遇到的问题和挑战,需要遵循一些基本的架构设计原则。

首先是将应用程序拆分成独立的模块,以便每个单独的模块都可以部署和更新;其次是避免使用共享状态,以减少数据一致性的问题;最后是要保持低耦合度,以方便独立的部署和替换。

三、优化分布式系统1.资源管理和调度分布式系统往往有多个节点,各个节点之间会进行数据传输、计算协作等。

电商平台的架构设计与优化方案

电商平台的架构设计与优化方案

电商平台的架构设计与优化方案近年来,随着互联网的快速发展,电子商务愈发普及,越来越多的企业选择在网络上开展业务。

这时,电商平台的架构设计和优化方案显得尤为重要。

一个好的电商平台架构设计能够提高系统性能,实现数据共享和业务扩展,提升用户体验,进而提高企业的竞争力。

本文将从以下几个方面来探讨电商平台的架构设计和优化方案。

一、电商平台的架构设计1.分层结构电商平台的架构设计中,分层结构是至关重要的。

分层结构是指将整个系统划分为多个功能层,在不同的层次上,处理不同的任务。

这样做有利于系统的扩展和升级,也方便不同岗位的工作人员对各自的模块进行修改和升级。

在电商平台中,通常可以将系统划分为以下几个层次:(1)展示层:该层次是直接面向用户的界面,负责展示商品、接收用户的请求等;(2)应用层:该层次是业务逻辑处理层,负责处理用户请求、调用数据层接口等;(3)数据层:该层次是数据存储层,负责存储商品信息、订单信息等数据。

这种分层结构既可以提高系统的可维护性和可扩展性,也可以提高系统的安全性。

2.分布式架构另外,现在的电商平台大多采用分布式架构,将整个系统划分为多个节点,每个节点负责不同的任务。

这种架构具有以下优点:(1)可扩展性:分布式架构可以根据业务需求,随时增加或减少节点,无需对整个系统进行大幅度改动;(2)高可用性:如果一个节点故障,其他节点可以接替它的工作,不会影响整个系统的运行;(3)优化性能:通过采用分布式架构,可以将负载均衡到多个节点上,从而提高系统的并发处理能力。

二、电商平台的优化方案1.提高系统安全性对于电商平台而言,安全性是至关重要的。

用户的隐私泄露、数据被盗等安全问题都将直接影响用户的信任和购买欲望。

因此,电商平台应采用严格的安全措施来保护用户数据安全。

具体措施包括:(1)采用加密技术:采用 SSL/TLS 协议对用户和服务器之间的通信进行加密,保障数据传输的安全;(2)对用户密码进行加密:用户密码需要加密后才能存储在数据库中,防止数据库被攻击者盗取;(3)防范 SQL 注入攻击:在用户输入数据时,后台需要对输入字符串进行过滤和转义,避免 SQL 注入攻击;(4)使用安全的存储技术:采用安全的存储技术,如 RAID、备份等,保证数据的备份和恢复能力。

大规模分布式系统架构的设计与优化

大规模分布式系统架构的设计与优化

大规模分布式系统架构的设计与优化随着互联网的快速发展,分布式系统架构成为了企业信息化建设中不可或缺的一部分。

大规模分布式系统的设计与优化也变得越来越重要。

本文将从系统架构、数据存储、计算、安全四个方面,探讨大规模分布式系统架构的设计与优化。

一、系统架构系统架构是分布式系统设计时需要考虑的首要问题。

正确的系统架构可以避免很多不必要的问题,例如单点故障、性能瓶颈等。

这里介绍几种常见的分布式系统架构。

1. 主从架构主从架构是最常见的分布式架构形式。

系统中存在一个主节点(Master)和多个从节点(Slave),主节点负责协调各个从节点的工作。

这种架构形式简单易懂,但是存在单点故障的风险。

2. 对等网络架构对等网络架构是指系统中各个节点之间平等地协同工作,没有主从之分,各节点均有相同的地位。

这种架构形式适用于节点之间资源平衡,有较高的可扩展性。

3. 微服务架构微服务架构是将系统分解成多个小服务,每个服务尽可能的独立,通过服务之间的调用来完成整个系统的功能。

这种架构形式可以实现高度拆分,快速迭代,但是需要考虑服务之间的调用和数据交互的耦合问题。

二、数据存储数据存储是分布式系统设计时需要考虑的第二个问题。

数据存储的设计直接影响了系统的性能和可用性。

下面介绍几种常见的数据存储架构。

1. 集中式存储集中式存储是将所有数据都存储在一个节点上。

这种架构形式简单易懂,但是存在数据容易丢失、I/O瓶颈等风险。

2. 分布式存储分布式存储是将数据分布到多个节点上,由多个节点共同承担数据存储和读写的任务。

这种架构形式可以实现数据无单点故障,同时具有高可用性和可扩展性的特点。

3. 缓存缓存是将热点数据存储在内存中,提高数据的读写效率。

这种架构形式可以减少数据库的负载,但是需要考虑数据一致性的问题。

三、计算计算是分布式系统设计时需要考虑的第三个问题。

计算主要包括任务调度、并行计算等。

下面介绍几种常见的计算架构。

1. MapReduce计算模型MapReduce计算模型是将大量的数据分割成多个小数据块,在不同的节点上计算,然后再汇总成一个结果。

电商平台的技术架构分析与优化

电商平台的技术架构分析与优化

电商平台的技术架构分析与优化随着互联网的不断发展,电商平台已经成为了人们越来越重要的购物和交易方式。

然而,电商平台的技术架构不仅要支持海量用户的并发访问和订单交付,还需要满足多样化的业务需求。

因此,对于电商平台的技术架构进行分析与优化显得十分重要。

电商平台的技术架构包括前端、后端以及数据库三个方面。

前端是指用户直接与系统交互的界面,一般使用HTML、CSS和JavaScript等技术构建;后端是指处理业务逻辑并与数据库交互的应用程序,一般使用Java、Python和PHP等语言;数据库则是存储数据的地方,一般使用关系型数据库和非关系型数据库。

下面对三个方面分别进行分析和优化。

一、前端前端技术常用的是HTML、CSS和JavaScript等语言,其中JavaScript是实现前端逻辑的主要语言。

前端优化主要从以下两个方面考虑。

1.页面加载速度优化页面加载速度直接影响着用户的使用和体验,需要尽量减少页面加载时间。

优化的方法包括合理使用缓存、优化图片大小、减少HTTP请求等。

2.页面交互优化交互式的用户界面是电商平台优化的关键之一。

通过实现动态效果、拓展人机交互模式等方法,可以使用户更好地进行网站浏览、搜索、购物等操作,同时也促进了效率和快速反馈。

二、后端后端是电商平台重要的处理业务逻辑的软件系统,其性能和可扩展性直接决定着电商平台的运行效率和稳定性。

后端的优化主要从以下三个方面考虑。

1.系统架构优化系统架构的优化包括系统的模块划分、负载均衡策略、数据库分库分表策略等方面。

合理的负载均衡策略和分库分表策略可以解决高并发访问和数据量激增时的性能问题。

2.代码性能优化代码的性能优化包括使用高性能框架、程序缓存和变量优化等方面。

3.系统安全优化随着互联网的不断发展,网络安全问题越来越受到关注。

因此,后端的安全性也非常重要。

系统安全优化包括合理使用防火墙和加密机制等方面。

三、数据库电商平台通常使用关系型数据库或非关系型数据库两种类型的数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大型电商分布式架构设计与优化本文主题为电商网站架构案例,将介绍如何从电商网站的需求,到单机架构,逐步演变为常用的、可供参考的分布式架构原型。

除具备功能需求外,还具备一定的高性能、高可用、可伸缩、可扩展等非功能质量需求(架构目标)。

本文大纲:1. 使用电商案例的原因2. 电商网站需求3. 网站初级架构4. 系统容量估算5. 网站架构分析6. 网站架构优化根据实际需要,进行改造、扩展、支持千万PV,是没问题的。

使用电商案例的原因分布式大型网站,目前看主要有几类:1.大型门户(比如网易、新浪等);2.SNS网站(比如校内、开心网等);3.电商网站(比如阿里巴巴、京东商城、国美在线、汽车之家等)。

大型门户一般是新闻类信息,可以使用CDN、静态化等方式优化。

而开心网等交互性比较多,可能会引入更多的NoSQL、分布式缓存、使用高性能的通信框架等。

电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NoSQL等技术。

因此,我们采用电商网站作为案例,进行分析。

电商网站需求客户需求:•建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;•用户购买时可以在线与客服沟通;•用户收到商品后,可以给商品打分和评价;•目前有成熟的进销存系统,需要与网站对接;•希望能够支持3~5年,业务的发展;•预计3~5年用户数达到1000万;•定期举办双11、双12、三八男人节等活动;•其他的功能参考京东或国美在线等网站。

客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导、挖掘客户的需求。

好在提供了明确的参考网站。

因此,下一步要进行大量的分析,结合行业以及参考网站,给客户提供方案。

其它的这里暂不展开。

需求功能矩阵需求管理传统的做法,会使用例图或模块图(需求列表)进行需求的描述。

这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。

本电商网站的需求矩阵如下:以上是对电商网站需求的简单举例,目的是说明:1.需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;2.描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。

网站初级架构一般网站刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。

这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,N多图片。

使用了一台服务器部署了应用,数据库以及图片存储。

出现了很多性能问题。

如下图:但是,目前主流的网站架构已经发生了翻天覆地的变化。

一般都会采用集群的方式,进行高可用设计。

至少是下面这个样子:1.使用集群对应用服务器进行冗余,实现高可用(负载均衡设备可与应用一块部署);2.使用数据库主备模式,实现数据备份和高可用。

系统容量预估预估步骤:1.注册用户数-日均UV量-每日的PV量-每天的并发量;2.峰值预估:平常量的2~3倍;3.根据并发量(并发,事务数),存储容量计算系统容量。

客户需求:3~5年用户数达到1000万注册用户;每秒并发数预估:1.每天的UV为200万(二八原则);2.每日每天点击浏览30次;3.PV量:200*30=6000万;4.集中访问量:24*0.2=4.8小时会有6000万*0.8=4800万(二八原则);5.每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);6.每秒并发量:16.7万/60=2780(约等于);7.假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次;8.1毫秒=1.3次访问。

没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)服务器预估(以Tomcat服务器举例):1.按一台Web服务器,支持每秒300个并发计算。

平常需要10台服务器(约等于);[Tomcat默认配置是150]2.高峰期:需要30台服务器;容量预估:70/90原则系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。

内存,IO类似。

以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。

在此CPU、硬盘、网络等不再进行评估。

网站架构分析根据以上预估,有几个问题:•需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。

并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。

•所有的应用部署在同一台服务器,应用之间耦合严重。

需要进行垂直切分和水平切分。

•大量应用存在冗余代码。

•服务器Session同步耗费大量内存和网络带宽。

•数据需要频繁访问数据库,数据库访问压力巨大。

大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如JVM调优;如果调优涉及大量代码改造,就不是调优了,属于重构):•业务拆分•应用集群部署(分布式部署,集群部署和负载均衡)•多级缓存•单点登录(分布式Session)•数据库集群(读写分离,分库分表)•服务化•消息队列•其它技术网站架构优化1业务拆分根据业务属性进行垂直切分,划分为产品子系统、购物子系统、支付子系统、评论子系统、客服子系统、接口子系统(对接如进销存、短信等外部系统)。

根据业务子系统进行等级定义,可分为核心系统和非核心系统。

•核心系统:产品子系统、购物子系统、支付子系统;•非核心:评论子系统、客服子系统、接口子系统。

业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。

等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。

拆分后的架构图:参考部署方案21.如上图每个应用单独部署2.核心系统和非核心系统组合部署2应用集群部署(分布式,集群,负载均衡)分布式部署:将业务拆分后的应用单独部署,应用直接通过RPC进行远程通信;集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;负载均衡:高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。

集群部署后架构图:3多级缓存缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。

本案例采用二级缓存的方式,进行缓存的设计。

一级缓存为本地缓存,二级缓存为分布式缓存。

(还有页面缓存,片段缓存等,那是更细粒度的划分)一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息;二级缓存缓存需要的所有缓存。

当一级缓存过期或不可用时,访问二级缓存的数据。

如果二级缓存也没有,则访问数据库。

缓存的比例,一般1:4,即可考虑使用缓存。

(理论上是1:2即可)。

根据业务特性可使用以下缓存过期策略:1.缓存自动过期2.缓存触发过期4单点登录(分布式Session)系统分割为多个子系统,独立部署后,不可避免地会遇到会话管理的问题。

一般可采用Session同步,Cookies,分布式Session方式。

电商网站一般采用分布式Session实现。

再进一步可以根据分布式Session,建立完善的单点登录或账户管理系统。

流程说明:1.用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户ID为Key,写入分布式Session;2.用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页;3.一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;4.存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。

5数据库集群(读写分离,分库分表)大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。

一般有两种方式读写分离和分库分表。

读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。

本案例在业务拆分的基础上,结合分库分表和读写分离。

如下图:1.业务拆分后:每个子系统需要单独的库;2.如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;3.分库后,如果表中有数据量很大的,则进行分表,一般可以按照ID,时间等进行分表;(高级的用法是一致性Hash);4.在分库,分表的基础上,进行读写分离。

相关中间件可参考Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat (在Cobar基础上,国内很多牛人,号称国内第一开源项目)。

6服务化将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。

比如本案例的会员子系统就可以抽取为公用的服务。

7消息队列消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统,是分布式系统的标准配置。

本案例中,消息队列主要应用在购物,配送环节。

1.用户下单后,写入消息队列,后直接返回客户端;2.库存子系统:读取消息队列信息,完成减库存;3.配送子系统:读取消息队列信息,进行配送。

目前使用较多的MQ有Active MQ、Rabbit MQ、Zero MQ、MS MQ等,需要根据具体的业务场景进行选择。

建议可以研究下RabbitMQ。

更多详情可参考社群过往文章:•RabbitMQ高级指南:从配置、使用到高可用集群搭建•大话消息队列的流派之争•一网打尽消息队列在大型分布式系统中的实战精髓•网易蜂巢微服务架构:用RabbitMQ实现轻量级通信8其它架构(技术)除了以上介绍的业务拆分、应用集群、多级缓存、单点登录、数据库集群、服务化、消息队列外。

还有CDN、反向代理、分布式文件系统、大数据处理等系统。

此处不详细介绍,大家可以问度娘/Google,有机会的话也可以分享给大家。

总结以上是本次分享的架构总结,细节可参考前面分享的内容。

其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。

希望能对大家有所启发。

相关文档
最新文档