现在的系统大部分都采用了分布式架构快速备案快速备案!下面通俗易懂的说下分布式到底是什么分布式操作系统?分布式操作系统,什么是分布式系统,分布式系统例子一开始互联网的应用服务比较单一(比如就只是提供一个天气状况接口),在访问量低,功能没有进一步增加的时候,运行也算是稳定!但是随着经济发展和互联网的普及,互联网用户越来越多,原来每天几千几万的服务调用,变成了几百万甚至几千万!而且为了应付不同用户的业务需求和抓住用户,更多的功能不断增加!比如原来每次用户请求,你的内存只需要100k,现在做的秒杀系统,同时会有几百万的点击,也就是需要几十几百G的内存,一台机器远远处理不了这么大的数据,单一的系统处理模式语言更新换代了!一台机器没有几十G的内存来处理数据,那么十台,百台呢?分布式由此诞生!所谓分布式系统,就是把软件应用分布到不同的物理节点上,组成一个完整的对外应用系统!分布式系统相比集中式系统具有速度快,可靠性强,可扩展性强,对用户透明的特性!既然从单一节点(同内存中处理),变为多节点处理(不同的机器,不同的ip,不同的内存),那么以前的单一系统的做法就需要进行升级!比如下面的场景:1,登录问题:以前的登录信息,session,ticket,认证等都放在一台服务器,但是现在不同的机器之间session等登录数据不再一个节点,可采用同一个redis集群,统一管理登录信息,应用服务器修改和查询都从redis中队列中获取!2,服务调用:以前的服务都在一台服务器上,直接调用即可,但是现在必须使用rpc远程调用方式,根据数据传输等协议,和不同的框架选择使用rmi,webservice,rest风格调用,zookeeper,consul等服务注册与发现架构!保证服务之间分布式调用!3,数据传输:以前数据传输都在同一个内存中进行,但是现在是不同的内存,所以需要诸如消息中间件等进行异步消息传递!4,数据一致性:因为是不同的服务器,事务也是分布式的,如果使用强一致性,会影响分布式的性能,所以通常使用消息队列或者定时补偿等方式保证数据最终一致性!5,分布式计算:将大量的互相之间有关系,却又可以解耦的计算分布到不同的机器上,提高整个系统的算力!比如hadoop,spark等大数据技术!6,分布式调用安全性:分布式系统是跨服务器的,数据的传输具有隐患,所以需要保证数据的安全性,我们的系统通过使用AES算法加密和md5验签保证数据传输安全,有兴趣的可以私聊我!7,日志问题:分布式系统的日志都在不同的机器上,如果出现生产问题需要一台机器一台机器逐一排查,所以必须使用分布式日志框架,集中处理日志!比如flume!现在银行,保险,等等基本上业务量比较大的系统肯定都是分布实现的,所以这是作为程序员需要掌握的重要知识!如果你有碰到相关的问题,私信我,我们好好交流!高可用性确实是分布式系统一项重要的指标,跟数据一致性,分区容错性组成了分布式系统的CAP原则,本文只针对高可用性分析如下:高可用性:High Availability,保证分布式系统在较长的时间内能正常响应,持续可用,业界常用几个9的说法来说明高可用性,比如说5个9,就是99.999%,全年只能停机几十分钟而已!毫无疑问,单点的系统是无论如何也不可能实现高可用的,因为受到单点故障,服务发布,网络延迟等原因,客户端总会接收不到响应,即服务不可用!比如数据库常用的集群手段有:1,主从复制,读写分离:不能做到高可用,如果主机挂了,整个系统的写功能就不能用了!2,分库分表:不能做到高可用,分库分表是把所有的数据分布到了很多的分库中,其中一个分库挂了,这部分数据就没了!3,双主互备:可以做到高可用,双主机数据一致,能动态切换主库,其中一台坏了,另一台可提供使用!双主互备得到的集群虽然实现了高可用,由于双机数据一致,限制了整个集群的容量!分布式服务的高可用更加的复杂,因为分布式系统对外是一个整体,换句话说分布式的高可用需要保证分布式系统中包括应用系统,数据库,缓存系统,消息组件等所有服务的高可用性!高可用性的解决方法一般来说比较单一,包括数据冗余,故障熔断,服务转移!数据冗余保证在任何时候最新的数据都不丢失,多份数据冗余也为后期的数据还原提供基础!故障熔断,服务转移保证单个服务不可用时,使用熔断防止服务不可用影响别的服务,并使用最新的健康服务以替换!针对应用系统的单点,一定要压测出最大的容纳能力,同时可以使用负载均衡的方式搭建集群,服务还应该设计为幂等的,防止数据一致性问题!高可用性解决方案貌似除了堆机器,没有更好的办法,不知道大家有什么手段,写出来让大家学习学习!
本文出自快速备案,转载时请注明出处及相应链接。