地点:北京京仪大酒店
主题:后端技术架构设计与优化
备注:第19期阿里技术沙龙
链接:http://club.alibabatech.org/salon_detail.htm?salonId=39
(一)《天猫后端技术架构优化实践》(关键词:优化)
1、优化概述:
(1)明确优化的度量指标:QPS、RT(Response Time)
2、缓存条件:
(1)读比写多得多;
(2)查询条件足够简单,不能在查询上就耗费太多时间;
(3)本地缓存失效问题:服务器主动推送新的缓存到前端的本地缓存,一个一个地更新。
3、常用策略:
(1)动静分离:业务逻辑上和服务器都进行分离;
(2)模型松耦合---大缓存:查询和缓存时进行打包(把相关的内容一起缓存,就不用进行二次查询了);
(3)并发:降低RT;
(4)异步:降低上下文切换开销;
(5)timeout:控制服务,防止主站被某个服务拖挂掉;
流控:前端对流量进行控制。
(6)客户端容灾:非核心业务不能影响核心业务;即使核心业务没出来,客户端也不能影响用户的基本浏览需求。
4、问题及讨论:如何为双十一作准备,如何提升系统的抗压能力?
双十一前会梳理系统业务的核心链路,评估各个节点。
分层控制:
(1)Web层:超过阈值的流量直接由Nginx拦掉;
(2)业务代码层:限流控制;
(3)服务中间件:timeout、流控等。
(二) 《人人网网站架构变迁》(关键词:服务化)
1、业务特点:异构、分散、易变动、相关联;
2、移动客户端:
(1)尽量保持一个socket;
(2)网络通信很烂的情况下如何保持数据/业务的一致性(有可能数据在传输过程中网络突然断掉):类似svn的版本控制,采用数字进行标识。
3、问题及讨论:
(1)单个socket如何提供多个服务?
thrift原生支持(协议层支持),协议头中用ID进行服务标识,而不用端口进行标识(共用一个端口)。
(2)thrift相关讨论
A、在生产环境下进行测试,thrift的对象封装与解封装、压缩与解压缩,甚至比Java原生的序列化更快;
B、thrift由于是跨语言的,所以在人人网的框架中增加对异常的处理(有的语言如C/C++对异常支持不友好),异常一般情况下都返回NULL对象;
C、ICE与thrift并无高下之分,选择由ICE向thrift迁移,是因为thrift足够简单,而ICE功能太强(如集群管理等)、太重了,有些功能也用不到。节点管理等运维方面比较困难,而且在上面增加功能和进行改进比较困难。目前人人网仍有1/3的服务在使用ICE。
(三)《新浪微博稳定性经验》(关键词:稳定)
1、Design for Failure
(1)分层隔离
A、主要接入方隔离。如weibo.com、weibo.cn、api.weibo.com,从DNS上隔离;
B、业务逻辑隔离。不同的业务方拆分;
C、按功能的核心度隔离。核心功能使用一个线程池,非核心功能使用一个线程池;
2、SLA保证
3、容灾预案
(1)降级(降级有问题的资源、保护核心功能)。非核心功能有不同的等级,降级之后,在超时时间、控制策略上都对应着发生改变。
(2)在线容灾演练---TouchStone系统。采用tcpcopy将线上流量拷贝过去.进行分析。
相关推荐
《eBay架构解析》是由Tony Ng在2011年分享的技术干货,主要探讨了eBay这个全球知名电子商务平台的架构设计与实现。这个压缩包包含了一本PDF文档,可能是讲座笔记或者报告,以及一个名为"UhR8x728IOQQHzmP8fTct0QzaBN...
阅读笔记是学习过程中的重要工具,它可以帮助我们记录和整理从书籍、课程或讲座中获取的知识。在这个“阅读笔记”项目中,我们可以看到三个不同层次的软件开发学习资源,分别是针对初学者的基础知识,中级开发者的...
BITS-Compre 是一个专为一年级和二年级学生设计的在线学术知识库,它整合了笔记、试卷和讲座幻灯片等教育资源,旨在提供便捷的学习资料获取途径。这个项目使用了 JavaScript 这一广泛应用于前端开发的编程语言,使得...
此外,可能会涵盖系统的架构设计,例如前端和后端技术栈的选择,以及可能采用的框架和库。 使用手册则是一个详细的指导文档,帮助用户了解如何操作和管理该系统。这可能包括创建和管理学习活动、用户管理(注册、...
61. 技术培训:技术培训是指通过课程、讲座、在线教程等方式帮助个人掌握特定技术的过程。技术培训对于职业发展和技能提升非常重要,它可以帮助个人适应技术变革。 62. 职业咨询:职业咨询是为个人提供职业规划、...
论文模板可能提供了关于系统设计、实现和测试的详细描述,包括系统架构、技术选型、功能实现以及性能优化等方面。这对于理解系统的整体设计和开发过程非常有用,同时也为其他开发者提供了参考。 任务书则可能列出了...
在本讲座"机器学习Dojo讲座4"中,我们将深入探讨神经网络与深度学习(DL)的概念,这是人工智能领域中的核心部分。这个课程是为那些已经熟悉基础编程和机器学习概念,想要进一步提升自己在神经网络和深度学习技能的...
本讲座主要涵盖了利用互联网技术进行心理学实验编程的相关知识,包括对在线调查系统Qualtrics的使用以及网络基础和Web编程的介绍。首先,我们回顾了Qualtrics在线调查系统的主要功能,如确定调查主题、设计流程、...
- 后端技术:可能基于Node.js、Java或Python等后端语言搭建服务器,处理数据请求。 - 数据库:MySQL或NoSQL数据库如MongoDB用于存储用户信息和社交数据。 - 移动端适配:考虑iOS和Android平台,开发原生应用或...
这些幻灯片可能涵盖了与GCC和LLVM相关的技术讲座、实践经验分享以及项目的最新进展。活动参与者可能是开发者、学生或对编译器技术感兴趣的其他人员,他们通过这样的交流活动增进对GCC和LLVM的理解,提升技术水平。 ...