分布式系统的那些事儿(一)

巨石应用在如今互联网+时代逐渐淘汰,而分布式系统,集群,微服务可谓现在的流行趋势。那么近期花点时间来讲讲分布式系统吧。

什么是分布式系统,很多人一直不理解,只知道把系统分布式部署就行了,但是没有做过这样的系统,也没在里面写过代码,当然连部署都不知道,那么就更加的模糊了。

笼统而言,分布式系统从软件上来讲,对于用户来说是一个不可分割的整体。从硬件上讲就是多台独立的服务器。举个栗子,我们在访问淘宝的时候,我们不会去关心淘宝后台代码是怎么实现的,是如何部署的,我们唯一想要的就是完成购物流程,买到心仪的商品,整个过程流畅,用户体验好,网页打开快速,各方面人性化即可。而从硬件上来讲呢,用户完全不需要知道,比如在某个时候真正更新维护系统,而且却不影响用户的购物流程。就像王者荣耀那样,很多时候这个游戏在更新的时候不影响游戏,那么这就是硬件分布式做的牛逼的地方了。而很多游戏在更新的时候用户是必须要下线的。

既然有分布式系统那么肯定也会有集中式系统,浅白点讲就是文中一开始讲的巨石应用,也就是说整个软件就一个war包,所有功能都在里面,十分大,对于单台计算机的运算能力性能要求十分高。如今很多的企业级后台应用都是这样的。这样的应用显然已经不符合如今的互联网时代,所以要做SOA或者微服务进行拆分这样的工作流也是十分的巨大。而在做拆分的这个过程好不夸大的讲需要半年,甚至1年,如果再加上期间人员流动,尤其新人,在不懂业务的情况下是完全不会做的。

那么有些人会问了,现在要开发一个系统,到底是搭建分布式呢还是单一web应用呢?那么我的回答是看情况,如果预计这个系统将会承载很多的用户量,大并发质量的,那么肯定要做分布式,如果对于企业来讲,仅仅只是固定用户群体,比如特定的VIP用户,对于这样的系统设计为单一也没事。

两种系统的优缺点,显而易见了,单一应用维护起来相对简单,一个包上传重启即可。而分布式环境下对运维的能力有一定的考验。此外,单点故障的问题分布式是不存在的,单一应用的服务器挂了那么整个网站就挂了,这就是所谓的高可用。

设计分布式系统有多复杂?那么大致可以分为以下几点:

  1. 分布式权限如何控制,包括单点登录
  2. 如何从单一系统拆分为多个子系统
  3. 各个系统之间如何通信?RPC还是Restful?
  4. 如何保证系统通信的安全,如何不被拦截
  5. 如何保证系统的高可用
  6. 分布式事务如何实现?数据的最终一致性如何解决?
  7. 如何监控各个子系统。
  8. 并发的时候如何考虑全局的所有子系统?(并发一直以来都是一个很大的概念)
  9. 如何防范各类网络攻击

先写到这里吧,接下来的文章都会围绕分布式来讲。

时间: 2024-10-27 02:36:27

分布式系统的那些事儿(一)的相关文章

分布式系统的那些事儿(二) - 线程与进程

线程和进程在之前的文章有讲过,这里简单再说一下吧.   进程,一个程序可以称为一个进程 线程,一个程序中包含多个线程,线程的集合体可以称之为进程. 同一进程中的不同线程可以互相影响,也可以并行操作(并发),进程占用系统资源,不同进程中的线程互相不影响.   ​举个栗子,玩家在玩魔兽争霸,让3个不同的农民工分别去采矿伐木打野,这是3个不同的线程:此时玩家还在聊QQ,QQ中播放着音乐,那么QQ这个进程中的线程不影响魔兽中的线程. 在并发中涉及到最多的还数线程了.多线程操作可以并行执行很多相同的动作,

分布式系统的那些事儿(六) - SOA架构体系

有十来天没发文了,实在抱歉!最近忙着录视频,同时也做了个开源的后台管理系统LeeCX,目前比较简单,但是后续会把各类技术完善.具体可以点击"原文链接". 那么今天继续说分布式系统的那些事. 我们现在动不动就讲分布式吧?那么SOA是不是必须得聊一聊呢? 面向服务的架构,简称SOA,他是基于服务组件的,把原来那种一个大型应用程序的不同的功能拆分为一些接口,通过这些接口串联起来. 这么做的好处是: 1.重用性大大提高 2.明确了接口的服务定义规则 3.定义了自家公司的api标准 4.降低系统

分布式系统的那些事儿(三) - 系统与系统之间的调用

系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信.浅白点讲,客户访问服务器A,此时服务器要完成某个动作必须访问服务器B,服务器A与B互相通信,相互调用,A访问B的时候,A挂起,等待B的响应,B响应返回相应的数据个A,A再返回给用户,这就是一个很简单的栗子. 举个常见栗子,用户上传图片,用户上传图片首先会经过自身的服务器,然后再对图片进行处理,此时图片处理放在图片服务器中进行,那么我们只需要调用图片服务器提供的接口即可,然后等待响应返回的

分布式系统的那些事儿(五) - 容错与故障

我们都经历过巨石应用,单一应用某个功能诱发的故障导致整个站点挂掉,任何人都无法访问,只能一一排错再部署上线,这样造成的影响就是用户的流失.而分布式应用就没有这样的问题,就算某个节点出现故障,那么主备切换,替换主节点,整个系统还是照样运行,完全没有访问不了的现象. 要使系统达到一定的容错性,那么 首先要实现的就是高可用,最简单的就是进行节点集群化,使用心跳机制让好的节点替换坏的节点. 其次要保证系统的稳定性,如果运维有事没事上去重启一次,这样也不太好吧(其实很多应用在一开始都是每周重启一次的) 然

分布式系统的那些事儿(七) - 微服务架构体系

微服务的出现,标志了又一个新的里程碑,似乎你不知道微服务就代表你好像out了一样.微服务是业务服务化,将SOA更好的延续了下去.配合restful也能够更好的提供api接口. 简单来说就是微服务把各种各样的小的服务区分开来当做一个当度的应用跑在服务器上,并且他的通信机制也是十分简单的,使用rest或者rpc都行.他们可以各自对自己的业务进行处理.各个服务直接可以用不同的语言开发,这样提高了不同技术团队之间的职能. 微服务的特点: 1.微服务的组件是以服务的形式存在的. 2.由各个不同的业务来切分

当讨论分布式系统时,我们都会讨论些什么?

本文讲的是当讨论分布式系统时,我们都会讨论些什么,[编者的话]分布式系统是一个庞大的议题,每个子领域都有大量的研究.学习分布式系统知识,如果不分主次地随看随学,效果不会好.本文介绍了分布式系统的主要概念,适合作为分布式系统的入门指南. 当我们讨论分布式系统时,我们都讨论些什么? 我一直在学习有关分布式系统的知识,学习时间不算短了.老实说,只要你开始钻研分布式系统,知识点好像学不完似的,一个接一个.分布式系统领域的文献太多了,包括许多大学发表的论文,还有很多书籍可选.像我这样的绝对新手,很难决定应

简述云分布式系统

就好像单机操作系统的内那样核,在阿里云OS中,大规模的分布式计算平台,起到了承接的关键作用.飞天运行在通过网络互联通用服务器集群上,隐藏了大量硬件所造成的复杂度和不可靠性,向云OS的其他组件提供可以信赖的的存储能力和计算能力. 也就是说,飞天本身是一个由多个组件所构成的复杂的分布式系统,其中的核心组件主要是以下两个子系统. ·计算资源调度系统(又称伏羲):管理和调度集群计算资源;在多个云服务间动态分配计算资源,以满足用户的计算需求;自动检测服务器故障并迁移故障服务器上的服务. ·分布式文件系统(

手机QQ浏览器HD项目组的那些折腾事儿

--QQ浏览器HD (iPad)的产品经理沃克 周六的夜晚,办公室里依然灯火通明,我们项目组的很多同事还在加班赶版本.这应该是项目组第N+1次周末加班了. 当我回到家的时候,已经很夜深人静了.坐下来,打开iPad,体验今晚刚Build出来的新版, 我猛然回想起来QQ浏览器HD(iPad)从1.0版本开发至今差不多一年了,回想一下,就记得我和我的伙伴们为了这个产品的一直在不断折腾. 标签栏的折腾事儿: 从1.0版开始QQ浏览器HD的我们的多标签设计,就受到用户欢迎.但是如何让标签管理更贴心,整个项

WPS文字教程:文档分分合合那些事儿

工作中经常遇到多个材料合到一起,还有时候需要把一个文档中某几页另存为一个文件,复制保存虽然可以完成,但是复杂,下面两个技巧可以帮你轻松解决"文档分分合合那些事儿". 一."多合一"文档 有很多的文档需要整合到一个文档时,使用WPS的插入文件功能,可以批量处理. 1.单击"插入|文件"菜单,打开插入文件对话框; 2.选择要合并的文件(可以配合CTRL.SHIFT键,选择多个文档); 3.单击"打开"按钮,选中的文件就合并到一个文