分布式架构搭建

首先讲一下架构:

分层:根据职责进行分层;分区;

切割-分布式:基于职责对于分层进行纵切进行分布式部署,比如家用空调和商用空调部署要分开来部署,比如兄弟项目组一个APP项目,订单,商品,维护都是分开来进行部署,做到业务之间松耦合;

集群,服务器负载均衡集群,数据集群,热备;

水平扩展整完了就是再回到垂直了,缓存,比如海尔的项目,因为和数据库IO很高,性能严重影响,引入了memcache,极大地提升了性能,数据库瓶颈减少了;

再就是回到了代码涉及级别,异步处理,避免同步导致的资源占用;自动化测试部署,减少人为错误;

还有就是安全;

下图是架构层级图:

接下来讲述的是架构师需要考虑的点:

性能提升从前端到后端一次是:

  1. 浏览器:css放在上面,javascript放在后面;采用浏览器缓存;
  2. 传输层上面:采用CDN,反向代理服务器压缩传输;
  3. 业务服务器:采用缓存,分布式缓存;
  4. 数据库层面:采用集群;比如mysql的读写分离,主服务器负责写,从服务器负责读;

然后是可用性,顾名思义:服务可用,即使有的时候体验差一点,但是要提供服务:

  1. 首先就是负载均衡,一个坏了,另外一个接上,
  2. 这里有个失效转移以及热备的概念,一旦发生意外,热备机器要顶上去;
  3. 分布式(分级)部署,对于有些服务,比如评价,在双11的高峰期就可以关闭,在部署上面按照级别进行拆分部署,做到特殊情况服务间影响较小;
  4. 程序设计级别就是幂等设计,比如提交支付,点击一次和点击两次效果是一样的,这种设计也叫作防呆设计,比如对于上传文件,点击一次上传后,按钮就要置灰,防止其二次提交;
  5. 再后端是数据库,对数据进行热备份;
  6. 最后面就是监控了,及时发现问题并解决问题;

第三,伸缩性,设计让应用能够水平扩展:

  1. 服务器水平扩展,使用nginx,apache等反向代理;要考虑session的处理,是session统一缓存保存,还是通过让代理服务器保证同IP转接到同一台机器上面;
  2. 缓存扩展,比如memcache的一致性算法,还是缓存数据的复制,比如Redis集群;
  3. 数据库的扩展,mysql集群,分区技术;

第四,扩展性,伸缩是硬件的水平扩展,扩展性讲的是业务水平扩展,要保证对项目影响很小,比如业务分布式部署,通过webservice技术做通信等;阿里有一个服务器注册以及发现的矿浆叫Dubbo;

第五,安全性,

  1. 操作上,需要输入验证码;
  2. 通道上,https;
  3. 通信上,加密,对称,非对称加密;
  4. 权限控制;
  5. 对于Ddos攻击,这些需要从代理服务器,防火墙等角度进行设计考虑;

posted on 2016-02-17 18:04  下士闻道  阅读(2079)  评论(0编辑  收藏  举报

导航