https://www.jianshu.com/p/8e510857e23f
一、为什么要集群?
A:并发处理能力有限(一般单台服务器处理的并发量为250左右,超过250,可能会出现数据丢失,链接不稳定的情况)。因为单服务器的性能有限制。所以单台Tomcat的最大连接数有限制,
B:容错率低,一旦服务器故障,整个服务就无法访问了。
eBay于 1999年6月停机22小时的事故,中断了约230万的拍卖,使eBay的股票下降了9.2个百分点。
C:单台服务器计算能力低,无法完成复杂的海量数据计算。
二、什么是集群
集群是是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。
但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。
可以利用一些廉价的符合工业标准的硬件构造高性能的系统。
实现:高扩展、高性能、低成本、高可用!
2.1伸缩性(Scalability)
在一些大的系统中,预测最终用户的数量和行为是非常困难的,伸缩性是指系统适应不断增长的用户数的能力。提高这种并发会话能力的一种最直观的方式就增加资源(CPU,内存,硬盘等),
集群是解决这个问题的另一种方式,它允许一组服务器组在一起,像单个服务器一样分担处理一个繁重的任务,我们只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级
2.2高可用性(High availability)
单一服务器的解决方案并不是一个健壮方式,因为容易出现单点失效。
像银行、账单处理这样一些关键的应用程序是不能容忍哪怕是几分钟的死机。它们需要这样一些服务在任何时间都可以访问并在可预期的合理的时间周期内有响应。高可用性集群的出现是为了使集群的整体服务尽可能可用,以便考虑计算硬件和软件的易错性。
如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。
2.3负载均衡(Load balancing)
负载均衡集群为企业需求提供了更实用的系统。如名称所暗示的,
该系统使负载可以在计算机集群中尽可能平均地分摊处理。
该负载可能是需要均衡的应用程序处理负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。
2.4高性能 (High Performance )
通常,第一种涉及为集群开发并行编程应用程序,以解决复杂的科学问题。这是并行计算的基础,尽管它不使用专门的并行超级计算机,这种超级计算机内部由十至上万个独立处理器组成。但它却使用商业系统,如通过高速连接来链接的一组单处理器或双处理器 PC,并且在公共消息传递层上进行通信以运行并行应用程序。因此,您会常常听说又有一种便宜的 Linux 超级计算机问世了。但它实际是一个计算机集群,其处理能力与真的超级计算机相等
三、为什么要进行分布式
传统的项目中,我们将各个模块放在一个系统中,系统过于庞大,开发维护困难,各个功能模块之间的耦合度增高,无法针对单个模块进行优化,也无法进行水平扩展。
四、什么是分布式
分布式是指将多台服务器集中在一起,
每台服务器都实现总体中的不同业务,做不同的事情。
并且每台服务器都缺一不可,如果某台服务器故障,则网站部分功能缺失,或导致整体无法运行。
存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。

注意:该图中最大特点是:每个Web服务器(Tomcat)程序都负责一个网站中不同的功能,缺一不可。如果某台服务器故障,则对应的网站功能缺失,也可以导致其依赖功能甚至全部功能都不能够使用。
五、分布式和集群的关系。
在开发中我们可以将分布式和集群分开吗?
针对这个问题,我们可以根据分布式的介绍看出,其主要的功能是用了将我们的系统模块化,将系统进行解耦的,方便我们的维护和开发的,但是其并不能解决我们的并发问题,也无法保证我们的系统在服务器宕机后的正常运转。
而集群呢?其恰好弥补了分布式的缺陷,
集群,就是多个服务器处理相同的业务,这在一方面可以解决或者说改善我们系统的并发问题,一方面可以解决我们服务器如果出现一定数量的宕机后,系统仍然可以正常运转。
因此我说,分布式和集群式一堆好基友,谁也离不开谁。。。。


服务器最低配置:
pinyougou项目业务就需要30台左右的服务器;
工具服务器还要加 zookeeper(3台) redis(6台) solr(6台)
nginx(2台) activemq(3台) cas(2台)
mysql(10台+)
fastdfs(2台)
一个pinyougou项目要65台以上。
测试并发量2000-3000
(接口)单元测试,集成测试
测试服务器:保证测试环境和线上环境是一致的。
git+maven+docker+jekins(持续集成测试环境)
svn+maven+hudson+jekins(持续集成测试环境)
c)责任描述:你干了什么?
i.后台系统:运营商系统维护
1.商品管理
a)品牌管理
b)规格属性管理
c)模版维护
d)商品类别维护
e)货品—商品维护
2,表之间关系
3,权限—spring security实现安全认证
4,活动管理—秒杀活动,团购管理
5,积分管理
ii.报表
1.(今日热销商品,周热销商品,月销售情况)
2.今日用户活跃数
3.周用户活跃数
4.月用户活跃数
5.今日销售金额
6.周销售金额
7.月销售金额
8.并发数统计
广告管理:
1,表设计
2,广告维护
3,广告缓存—spring data redis
iii.Poi
iv.后台系统:商家系统维护
1.商品入驻申请
2.商品审核
3.商家商品维护
4.商品审核上架
搜索: spring data solr
1,主关键词搜索
2,分类搜索
3,属性搜索
4,价格搜索
5,品牌搜索
6,排序搜索
7,面包屑导航-----数据双向绑定实现面包屑导航
8,同步索引库
activeMQ同步索引库
匹配生成索引库数据
MQ同步索引库
消息持久化
消息重发机制
连接池
页面静态化技术: 提高访问速度,提高并发能力
1,freemarker实现页面静态化
2,把生成页面静态化html直接上传linux,实现动静分离
3,linux静态页面使用nginx访问,nginx作为http服务器
4,mq同步静态页面(业务流程)
购物车系统:
1,未登录
2,登录
订单系统:
1,提交订单—把购物车数据保存订单表
2,生成订单号
3,生成总金额
支付系统:
微信支付
技术:
1,dubbo+zookeeper实现面向服务分布式架构
2,spring security 安全认证框架
3,spring data redis ---- redis服务器操作
4,spring data solr ------ solr
5,nginx
6,freemarker
7,activeMQ
8,cas 单点登录框架
9,zookeeper
10,springboot
………