《后端技术架构设计与优化》讲座笔记
双十一前会梳理系统业务的核心链路,评估各个节点。
分层控制:
(1)Web层:超过阈值的流量直接由Nginx拦掉;
(2)业务代码层:限流控制;
(3)服务中间件:timeout、流控等。
? (1)尽量保持一个socket;
??(2)网络通信很烂的情况下如何保持数据/业务的一致性(有可能数据在传输过程中网络突然断掉):类似svn的版本控制,采用数字进行标识。
(1)单个socket如何提供多个服务?
?thrift原生支持(协议层支持),协议头中用ID进行服务标识,而不用端口进行标识(共用一个端口)。
(2)thrift相关讨论
A、在生产环境下进行测试,thrift的对象封装与解封装、压缩与解压缩,甚至比Java原生的序列化更快;
B、thrift由于是跨语言的,所以在人人网的框架中增加对异常的处理(有的语言如C/C++对异常支持不友好),异常一般情况下都返回NULL对象;
C、ICE与thrift并无高下之分,选择由ICE向thrift迁移,是因为thrift足够简单,而ICE功能太强(如集群管理等)、太重了,有些功能也用不到。节点管理等运维方面比较困难,而且在上面增加功能和进行改进比较困难。目前人人网仍有1/3的服务在使用ICE。
A、主要接入方隔离。如weibo.com、weibo.cn、api.weibo.com,从DNS上隔离;
B、业务逻辑隔离。不同的业务方拆分;
C、按功能的核心度隔离。核心功能使用一个线程池,非核心功能使用一个线程池;
2、SLA保证
3、容灾预案
?? (1)降级(降级有问题的资源、保护核心功能)。非核心功能有不同的等级,降级之后,在超时时间、控制策略上都对应着发生改变。
?? (2)在线容灾演练---TouchStone系统。采用tcpcopy将线上流量拷贝过去.进行分析。