- 分布式系统简介
任何东西都是由浅到深的过程,分布式系统也由单机系统(比如一台电脑)演变而来。
当数据太多的时候,单台机经受的数据运算压力比较大。解决办法就用多台机器来运算。将所有的运算的机器看作是一个整体,那么这个整体就是一个分布式系统把。
下面看看传统的单机系统:
说句题外话,其实很多硬件的构架思想,在软件上依旧适用,比如在OSI的数据链路层,一般节点(路由等)之间的通信,在数据转发的时候,会比较mac地址。
不是自己的数据包就丢掉。聊天的软件大多也是这种思路,服务器广播消息,所有客户端收到消息一看不是自己的就丢掉。再如面向服务器,将Cpu抽象为一个Server,
存储设备抽象为数据库,输出设备抽象为响应,这样一个简单的c/s结构就形成了。
分布式系统只是单机系统的扩展,扩展cpu由多台机器来承当,储存设备可扩展为分布式文件系统。输入输出一般不进行扩展:
- 分布式系统要解决的问题
1)分布式主要是为了提高运算与存储数据的能力。
2)分布式系统一是要解决Session问题,单节点(每台服务器就是一个节点)独立性,异地容灾等,这些在写服务器的时候要特别考虑。
这里提一下关于session的问题,网上资料很多,我认为比较合理的做法是:
首先你得做个过滤器,对每个访问,进行session数据转移存储,
然后在在用户访问你的铭感信息的时候,你就用session去验证用户。(一般对铭感信息再做一个过虑器)
- 基于分布式系统编程
如果说单机到分布式系统是一个扩展的过程,那么分布式编程则是一个拆分的过程,拆分的目的就是尽量独立,以后好对某个方面修改,而不影响其他。
1,数据库拆分(按表格拆分,或拆分表格,读写分离);
2,webapp拆分(一般按业务拆分);
具体不多说,看图