关于分布式架构的思考

1 概述

分布式系统就是利用一组机器来协同工作,并对外提供统一的服务。

分布式架构的核心,在于拆分。

2 分布式数据架构

2.1 垂直拆分

按照业务将数据拆分成不同的库;

如sns网站中日志与照片可以分成两个数据库。

2.2 读写分离

一般是主从架构,主库用于写,从库用于读;

主从之间需要同步机制来保证数据的一致性。

2.3 水平拆分

按照数据的特点将全量的数据拆分成不同的分区,并分布到指定的库中;

如sns网站中的日志/照片等信息是按照userID来组织的,因此可以根据userID将数据拆分到不同的库中,其中关键是制定路由规则,就是如何根据userID来找到对应的数据库。

2.4 总结

数据库层面的分布式架构,可以分别从业务+读写+数据分区等3个维度来拆分数据。

3 分布式应用架构

3.1 均衡负载

利用均衡负载服务器将请求分发到不同的服务器来处理,其中关键的是路由规则。

3.2 独立的session服务

应用是有状态的,他的状态是保存在session中。如果你的路由规则是随机分发请求的话,则需要提供独立的session服务,如将session保存在数据库或缓存中,不要保存在本地文件或内存中。如果你的路由是根据ip来分发请求的话,则由于某个ip的请求总是分发到同一个服务器中,因此session可以保存到本地。

3.3 总结

应用层面的分布式架构,主要是多copy+均衡负载+独立的session服务。

关于分布式架构的思考,布布扣,bubuko.com

时间: 2024-12-19 07:50:26

关于分布式架构的思考的相关文章

分布式服务器集群架构方案思考

nginx-reverse-proxy-conf 研究了一套完整的分布式服务器集群架构方案. 0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster). 分布式是指将不同的业务分布在

NET 分布式架构开发项目实战

.NET 分布式架构开发项目实战 从头到尾,一步一步讲述一个真实的项目实战,关注点主要是架构的思考和实现,以及如何解决平时项目遇到的一些问题. 同时也司公布源代码. 如何构建高性能,稳定SOA应用之-负载均衡-Decoupled Invocation 摘要: 当我们在为一个软件设计架构的时候,我们不仅仅要确保所做出来的架构要满足系统的业务需求,更加要确保做出来的架构要满足可维护性,安全,稳定性的非业务行的需求.另外一个非常重要的非功能性需求就是性能.性能涉及到很多方面的关注点,例如吞吐量,延迟等

asp.net mvc应用架构的思考--Unity的应用及三层代码

最近要做一个项目,和国外的架构师聊过之后.对方提到了他准备采用asp.net mvc, jquery, Unity 等技术来代替老的技术: 如asp.net web form. 他请我帮他想一些关于架构的东西.一直以来,关于asp.net mvc应用的架构,有一些想法.正好借这个机会写出来.资深的人士可能已经知道了,就当是复习吧.欢迎发表意见.指出不足. Unity的应用 Unity出来已经有几年了.早几年的1.2版就可以实现这里所说的功能.目前最新稳定版是2.1.正在开发的3.0也许会给我们带

1.分布式架构的来源演进

架构的本质 一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序.架构的本质就是对系统进行有序化重构,使系统不断进化那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合. 分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分.合就是根据最终要求,把各个分离的组件有机整合在一起,相对

一、什么是分布式架构

前言: 随着互联网的快速发展和进步,各个行业迎来了飞速发展的机遇,而在这其中Java这门语言在互联网时代中作为中流砥柱,也在不断的革新,而我们的互联网等公司由于越来越复杂的业务和用户需求使我们传统的单机项目越来越难以满足要求,而在这其中诞生出了另一种理念<分布式>,分布式的出现则是为了应对企业持续复杂化的业务和需求. 一.单机项目时代: 优势: 在传统的单机项目时代,我们把项目中功能模块都放在一起,比如:用户管理.产品模块.统计模块等,这在对于一个小团队或者是一个小项目来说,不管是对于项目的维

对于分布式Job的思考

引言 在清理Github的时候,发现以前写的一个简单的分布式任务分发系统ClawHub/task-distribution,使用了zk的选主与队列,调度器使用spring的ThreadPoolTaskScheduler,任务支持cron表达式. 这让我想起在这之前还封装过Quartz,那时候做的是单机版超大型应用,内部需要做调度系统. 目前在公司使用过Elastic-Job,也使用过Spring自带调度与ZK的结合,还有公司Boss系统提供的配置版本任务调度. 写这篇文章主要是简单的回忆一下Qu

分布式架构设计之电商平台

分布式架构设计之电商平台 何为软件架构?不同人的答案会有所不同,而我认为一个好的软件架构除了要具备业务功能外,还应该具备一定的高性能.高可用.高伸缩性及可拓展等非功能需求.而软件架构是由业务架构和技术架构两部分组成,因为有了业务结构才会催生出软件架构,进而来满足业务上的需求,所以,在做软件架构设计时,需要分为业务架构设计和技术软件架构设计,二者不可分离哦!那么,接下来就以本人实际工作中的电商平台为例,进行说明电商平台架构设计,因为不同行业产品系统不同业务不同,而催生的系统软件的实现要求及架构设计

windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 . 定时框架Task.MainForm提

Memcache架构新思考

2011年初Marc Kwiatkowski通过[email protected]介绍了Facebook的Memcache架构,现在重新审视这个架构,仍有很多方面在业界保持先进性.作为weibo内部数据处理量最大,对数据延迟最敏感的部门,基于本厂2年多来对mc的使用心得,我在本文总结对MC架构的一些新思考. 1. Memcache使用中的雷区 通常你可能考虑不到,但又隐藏在某处等着你踩的称之为"雷". 带宽和连接数 Memcache具有很高吞吐能力,[email protected]中