单体架构:
简介:所有功能都放在一个应用里.
优点:便于开发,测试,部署也很方便
缺陷:高访问,高并发的上限是固定的,一个服务有问题影响其他服务
比如一个单体架构,能够承受 1000次访问/秒。 但是访问量达到 2000次/秒的时候,就会非常卡顿,严重影响业务,并且仅仅依靠单体架构本身,很难突破这个瓶颈。
解决办法通常就是采用分布式和集群来做
分布式
简介:一个功能做成一个应用,相互不影响
优点:只要约定好接口可以让不同的团队开发不同的微服务,彼此之间是低耦合。 一个微服务挂了,其他微服务依然可以继续使用
集群
简介:相同功能的应用 多复制几个都部署上去
优点:把2个应用部署在2个机器上,理论来说能够承受的负载就是 x 2 。一个挂了另一个还能用,高可用性。
负载均衡
集群后,一个请求到底该交给哪台服务器处理? 让每台服务器负载量均衡才能发挥最大的效果
一般功能有: 请求转发,会话保持(一个会话请求保持在一台服务器上),服务器状态监测
负载策略:
- 按权重轮询 (给每个服务器设置权重,按权重比例分配)
- 按ip hash (把ip作为hash key, 同一ip始终请求同一服务器)
- 加权最小连接数 (服务器活跃数/权重, 然后分配请求, 适合复杂的场景)
实现方式:
CDN
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。