《超大流量分布式系统架构解决方案》

《第一章:大系统小做-大贵妇服务化架构》

网站架构的优化: 1.独立部署,避免不同的系统相互之间争夺共享资源(比如CPU,内存,磁盘等)
2.webServer集群,提高容错性
3.部署分布式缓存系统,使查询操作尽可能在缓存命中
4.数据库实施读写分离改造,实现HA(High availabiliy高可用性)架构
5.利用CDN加速系统响应(将图片,音频,视频,脚本文件和html网页放在CDN上)
6.业务垂直化,降低耦合,从而实现分而治之的管理

集群(cluster)技术可以将多台独立的服务器通过网络关联起来,形成一个有效的整体对外提供服务。使用集群的意义就在于其目标收益远高于所付出的实际成本和代价。

对于无状态的webServer节点,使用Nginx来实现负载均衡调度,线上环境中,Nginx也应该具备高可用性,可以依靠DNS轮询来实现。(如果是云主机,则可以使用云服务商提供的SLB服务)

集群 集群是指将多台服务器集中在一起,目的是实现同一业务;串联工作
分布式 将不同的业务分布在不同的地方,目的是实现不同的业务;并联工作
1.将外部的HTTP协议适配为内部的二进制协议
2.聚合操作
3.集成一些公共逻辑
网关的作用: 网关层作为整个系统的入口,所有的前端请求都需要通过它来访问后端服务,并有它统一负责处理一些公共逻辑,比如:鉴权,流控,日志记录,安全防护,负载均衡,灰度发布等。
灰度发布: 灰度发布的目的就在于试错,尽可能的控制和缩小问题的影响范围。能够给通过收集用户的使用反馈来更好的完善和改进当前产品,不断的试错,以确保最终上线的稳定。
灰度发布: 以白名单作为灰度策略的,那么当用户发起http请求后,嵌入在Nginx中的Lua脚本会首先从Header中获取出token并解析出用户的UserId,在请求Redis验证当前的UserId是否包含在白名单中,只有那些包含在白名单中的用户,才允许访问灰度环境中的新版本应用。
分布式多活数据中心: 将2个或2个以上的数据中心同时并行对外提供服务网,实现了对资源的充分利用,避免了资源利用率低下的诸多问题。

分布式多活数据中心需要考虑的问题:

1.多数据中心之间需要打通内网专线通道
2.RPC调用需要做到就近调用
3.数据同步问题

RPC调用主要需要经历的三个步骤:

1.底层的网络通信协议处理
2.解决寻址问题
3.请求/响应过程中参数的序列化/反序列化工作

zookeeper面临的问题:

1.服务扩容时,应用启动异常缓慢
2.冗余的服务配置项会增加存储压力和扩大网络开销
3.典型的CP原则,协议的强一致性中间件,写操作存在单点问题,无法通过水平扩容解决。当客户端发送写请求时,集群中的其他节点会优先转发给leader节点,由leader节点来负责具体的写入操作,只有当集群中>=N/2+1个节点都同步成功后,一次写操作才算完成。当服务扩容时,TPS越高,服务注册时的写入效率就越低,这回导致上游产生大量的请求排队,表象就是服务启动变得异常缓慢。

Google Dapper【同产品:Zipkin,sky walking】

1.服务性能低损耗
2.业务代码低侵入
3.监控界面可视化
4.数据分析准实时

调用链的基本功能:

1.跟踪每个请求的完整调用链
2.采用调用链上每个服务的执行耗时,以及整合孤立日志。
AOP:

面向切面编程,在编译期或运行期通过字节码增强技术来实现以不改变源码为前提,通过前后横切的方式,动态为程序添加新功能的一种思想。

1.静态编织

2.动态编织

OOP: 针对的是业务处理过程的实体,属性,行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
双亲委派机制:

JVM中的类加载器默认基于的是双亲委派模型的类加载机制,当类加载器在对目标类进行加载的时候,首先会委派给它的父类加载器,然后再由它的父类继续向上委派,直到委派给最顶层的Bootstrap ClassLoader。当委派结束后,Bootstrap ClassLoader会尝试发起加载,加载失败时则回源给它的子类加载器。

双亲委派模型是一种自下而上委派,自上而下加载的类加载机制,通过它能够很好的确立类在整个虚拟机中的全局唯一性和统一性。

《第三章:削峰填谷-流控方案》

问题: 如果不对流量进行合理的管理,肆意放任大流量冲击系统,将会导致一系列的问题出现,比如一些可用的链接资源被耗尽,分布式缓存的容量被撑爆,数据库吞吐量降低,最终导致系统产生雪崩效应。
方案: 通过扩容,静态化,限流,缓存,队列
单台变集群 单台服务器的处理能力有限,当一台服务器的处理能力接近或已超出其容量上限时,采用集群技术对服务器进行扩容,可以很好的提升系统整体的并行处理能力。在集群中,节点的数量越多,系统的并行处理能力和容错性就越强。
静态化 系统要将动态数据和静态数据进行分而治之,用户对静态数据的访问,应该避免请求直接落到企业的数据中心,而是应该在CDN中获取,以加速系统的相应速度。
限流 大促时,热卖商品会导致访问骤增的同时会带来读/写流量的骤增,因此需要采用合理有效的限流手段对系统做好保护,毕竟不是任何场景都可以通过缓存和服务降级等技术实现的,比如系统中的写服务(用户下单,库存扣减,商品评论)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值