前言:
下面的观点来自个人对本次讲座的理解,有不当之处,望大家指正。本次讲座很多技术我都是第一次听说,总结的同时有很多的疑问,如遇高手闲暇之余能为我解惑,倍感荣幸。愿意指点一二的前辈,也可以阅读文章最后我留下来的疑问。
3月27号,提前一个小时下班,前往中山大学参加腾讯大讲堂《微信之道:至简》讲座。大厅内人山人海,主讲人微信技术总监周颢(harvey zhou)也甚是激动,夸赞大家的学习热情。周颢讲到微信的成功可归结为三点:产品的精准,项目的敏捷,技术的支撑。
要素一:产品的精准
从对国外应用Kik敏感的嗅觉,到微信从无到有的建设,实用的功能,简单的操作,是微信成功的关键。微信一直以来秉承着“
用简单的规则构造复杂的产品”的理念,才有了今天小小的成功。这句话道理简单,但道路艰难。
要素二:项目的敏捷
敏捷开发主要借助一种技巧Scrum,它不同于那种一次制定几年开发计划的方式,取而代之的方法是建立不同的发布版本,持续不断的改进软件系统。将大目标分解成简单的小目标,通过几天地冲刺完成一个小目标,通过完成几个小目标进而完成一个大目标。
科技蓬勃发展的今天,人们的注意力会被更加新奇的东西吸引。巨人柯达都倒下了,如果你还想踏着他的尸体继续前进,那你就需要更多努力、更多尝试。只有在同样的时间比别人做更多地尝试,你才有更大的概率成功。也就是说一要有多尝试决心;二要有多尝试的能力。
敏捷就是一种态度,你需要允许发布前十分钟需求做变更,给予产品决策的最大自由度;
同时敏捷也是试错法,他可以帮助你在更短的时间,做更多的尝试,走正确的道路。
当然想要在更短时间比别人做的更多,并不意味着要不断地加班,如果有强大的技术支持,那就会事半功倍。
要素三:技术的支撑
技术支撑其宗旨在于
剥离复杂,让剩下的更简单。也就是将复杂的东西封装起来或拆分开来,让其变得更加简单易用,同时具备一定的灵活性。如果一个东西本来挺简单,将其抽象化后变得晦涩难懂,那就说明这个抽象是有问题的。微信的技术要点可概括为:
1、大系统小做
2、让一切可扩展
3、提供基础组件
4、轻松的上线
技术•大系统小做
将系统分离成几个独立的模块设计,并且分开部署。但物理上的分离越细,其维护的成本就越高。所以我们可以采用折中方案,适当地分离,然后将不同的模块混搭在一起。
技术•让一切可扩展
1、网络协议可扩展。
2、数据存储可扩展。采用key¬-value的形式存储数据,提供类似SQL的操作方式。
技术•基础组件
1、针对网络协议的Client/Server代码自动生成工具。
2、逻辑容器。
3、监控报表组件,可以做到5分钟添加一个报表,1分钟出监控数据。
4、存储组件,主要用于容灾。
技术•轻松的上线
灰度发布,即每次更新一部分服务器。监控其运行状况,然后调整,再发布,再监控……直到稳定,才更新所有的服务器。及时的监控加上灰度发布,让用户还没有感觉到异常,就将其消灭。
以上提及的这些技术,其复杂点在于:
1、协议
2、容灾
3、前轻后重
4、监控
复杂点•协议(不太懂)
1、CMWAP vs CMNET
CMNET、CMWAP都是上网使用的接入点的名称。通过CMNET可以获得完全的Internet访问权,通过CMWAP只能访问WAP网站,不过 CMWAP使用HTTP代理协议和WAP网关协议可以访问到Internet,而CMNET则适用于所有协议,它是标准的TCP/IP协议。
2、在线 vs 离线
在线和离线的含义越来越模糊,用户可能同时开启多个应用,而一个时间只能激活一个应用,其他应用则在后台运行,用户可以在任何时候切换到其他应用(比如:微信),这时要求用户在该应用上还是处于登录状态。个人认为,应用在后台运行时,可认为用户是发呆状态。
3、资费敏感
这就要求用户请求/服务器回传的数据应该尽量的小。
4、连接不稳定
5、高延时
已有的协议标准(XMPP, SIP/SIMPLE)简单,但占用流量大,消息不可靠。因此微信采用了自主研发的SYNC协议,他通过“握手”来同步消息,采用Server通知/Client主动获取的交互方式。其优点包括:
简化交互方式、增量传输数据、可靠有序传输、消息重传控制。
复杂点•容灾
对微信来说用户体验是至关重要的,因此服务应该保持高度的可用性,一定要响应用户。为了降低出错的概率,我们将相同的业务分布在不同机器上,机器A坏了,可以让机器B继续处理业务。 但是由于分布式的运用,A和B可能会出现数据不一致的问题。当然可以通过同步来保证数据一致,但这样又会由于同步导致服务长时间不响应,甚至不可用,或者产生牵一发而动全身的影响(同步一般需要在单点进行,如果这个点宕掉了,整个个业务也就宕掉了)。
上面描述的其实是一个分布式的CAP理论。Brewer认为在分布式的环境下设计和部署系统时,有3个核心的系统需求,以一种特殊的关系存在。这三个核心需求是:Consistency,Availability和Partition Tolerance,而这三个需求无法同时满足。在微信的设计中,放弃了一致性Consistency,主要考虑3点:
1、
防止雪崩,避免蝴蝶效应
问题发生时,用户会不断的重试,导致请求数增加,而单个服务器的性能也会大幅下降。
2、
柔性可用,追求不完美
不能因为一个功能不可用,导致其他功能也不能用。应该忽略小错误,保持应用整体可用。
3、
保护点前置,赢得处理空间
在接入层处理问题,比如使用GSLB(Gobal Server Load Balance)/ LVS(Linux Virtual Server) / IP Redirect/ Client Retry。
存储层容灾是相对复杂的,需要分而治之。可以下面3种方案,而微信采用的是最后一种方案。
方案一:主从模式
优点:简单
缺点:故障时不可写
场景:帐号系统
方案二:双写模式
优点:简单、故障时可写
缺点:数据会轻度丢失
场景:用户终端的记录
方案三:主从+多写模式
优点:故障时,仍有很好的概率可读可写
缺点:多服务器的维护成本
原理:R+W>N && R > W(Quorum算法),假设有一个子存储业务有10个节点(N),每次写操作时同时向5个节点写入数据(W),每次读操作同时向6个节点读取数据(R)。这样总是能保证至少一个节点读取的数据是最新的,而这种做法读取到错误数据的几率非常之小。
难点:第一,要能判断读出的哪个节点的数据是最新的;第二:每次向不同的节点随机写数据可能存在冲突;第三:节点宕掉如何恢复。
解决:当然Quorum算法均给出了相关的解决方案,但现实相对复杂,微信技术团队想出了一种Simple Quorum的实现。从harvey(主讲人周颢)的描述中,我大概猜到他是这么做的。首先有个全局的序列发生器(高度稳定、一致),保证系统每次接收用户请求或存储数据都能产生一个递增的序列号,这样通过对比数据的序列号,就知道那个节点的数据是最新的了;其次存储数据时,可以选择一次存储单个实体(比如:用户)的所有数据,而不是修改某个字段,这样就不存在冲突问题;最后,保证每个节点都只存储少量数据(比如:200K),可以通过直接拷贝数据的方式恢复。下图给出如何判断读出的哪个节点的数据是最新的。
图一,生成序列号的过程:
图二,判断最新数据的过程:
复杂点•前轻后重
客户端应该尽量的简单,而服务端承载更多的功能。这样更新功能更加容易,且客户端不容易崩溃。
复杂点•监控
监控需要将多项数据以图表的形式实时呈现,并且通过实时数据和历史平均值的对比,实现对异常的自动预警和报警。
另外,监控不等于统计,监控分析的实时的数据,而统计做的是海量数据非实时的分析。
疑问:
1、分布式系统中那么多服务器,怎么来统一维护,需要用到什么技术?
2、一个产品如果需要监控,哪些基本的数据需要做监控呢?这些数据又从哪里来?远程监控又如何做?
3、求这次演讲的PPT?本人联系方式350653546__qq.com,请把__替换成@再发送邮件。
4、如没有时间详细指点在下的话,为我指明方向也不甚感激。
后话:演讲结束后有个提问环节,有同学提到腾讯抄袭和一家独大的问题,harvey(主讲人周颢)做了很好的回应。这里我也说说,正如harvey所讲,抄袭和超越是有很大区别的,只有用心做产品的人才能把产品做强做大。腾讯的平台和用户群是有力的竞争筹码,但这也是腾讯多年来辛勤耕耘的成果,前人栽树后人乘凉,而且用户也不能否认产品结合腾讯的平台带来的便利。至于一家独大嘛,我想说柯达和诺基亚也够大,但现在呢?技术的更迭是迅速的,正所谓生于忧患,死于安乐,所以大家努力吧!最后感谢腾讯的开放,感谢harvey给我们深入浅出地讲解这么多宝贵的知识,也感谢我的大学同学孙业军为我提供这次讲座的报名信息。

- 大小: 13.4 KB

- 大小: 12.7 KB

- 大小: 24.1 KB

- 大小: 29.7 KB

- 大小: 31.7 KB
分享到:
相关推荐
5-微信之道——至简 6-QQ基础数据库架构演变之路 7-QQ空间技术架构之峥嵘岁月 8-架构之美-开放环境下的网络架构 9-智能应用和云服务:手机浏览器的未来之门 10-开放之路:成就创新的四把钥匙 11-从十元到十亿:腾讯...
查看进程信息,方便排查问题
IDA Pro分析STM32F1xx插件
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
小型的微电网仿真模型,简单模拟了光伏,家庭负载变化的使用情况
MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电网 评估 参考文档:《自写文档,联系我看》参考选址定容模型部分; 仿真平台:MATLAB 主要内容:代码主要做的是分布式电源接入场景下对配电网运行影响的分析,其中,可以自己设置分布式电源接入配电网的位置,接入配电网的有功功率以及无功功率的大小,通过牛顿拉夫逊法求解分布式电源接入后的电网潮流,从而评价分布式电源接入前后的电压、线路潮流等参数是否发生变化,评估配电网的运行方式。 代码非常精品,是研究含分布式电源接入的电网潮流计算的必备程序 ,分布式电源; 配电网; 接入影响分析; 潮流计算; 牛顿拉夫逊法; 电压评估; 必备程序。,基于MATLAB的分布式电源对配电网影响评估系统
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
重庆市农村信用合作社 农商行数字银行系统建设方案.ppt
光伏并网逆变器设计方案与高效实现:结合matlab电路仿真、DSP代码及环流抑制策略,光伏并网逆变器设计方案:结合matlab电路文件与DSP程序代码,实现高效并联环流抑制策略,光伏并网逆变器设计方案,附有相关的matlab电路文件,以及DSP的程序代码,方案、仿真文件、代码三者结合使用效果好,事半功倍。 备注:赠送逆变器并联环流matlab文件,基于矢量控制的环流抑制策略和下垂控制的环流抑制 ,光伏并网逆变器设计方案; MATLAB电路文件; DSP程序代码; 方案、仿真文件、代码结合使用; 并联环流抑制策略; 下垂控制的环流抑制,光伏并网逆变器优化设计:方案、仿真与DSP程序代码三合一,并赠送并联环流抑制策略Matlab文件
内容概要:本文介绍了通过 Matlab 实现鲸鱼优化算法(WOA)与门控循环单元(GRU)结合的多输入分类预测模型。文章首先概述了时间序列预测的传统方法局限性以及引入 WOA 的优势。然后,重点阐述了项目背景、目标、挑战及其独特之处。通过详细介绍数据预处理、模型构建、训练和评估步骤,最终展示了模型的效果预测图及应用实例。特别强调利用 WOA 改善 GRU 的参数设置,提高了多输入时间序列预测的准确性与鲁棒性。 适合人群:对时间序列分析有兴趣的研究者,从事金融、能源、制造业等行业数据分析的专业人士,具备一定的机器学习基础知识和技术经验。 使用场景及目标:本项目旨在开发一个高度准确和稳定的多变量时间序列预测工具,能够用于金融市场预测、能源需求规划、生产调度优化等领域,为企业和个人提供科学决策依据。 其他说明:项目提供的源代码和详细的开发指南有助于学习者快速掌握相关技能,并可根据实际需求调整模型参数以适应不同的业务情境。
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
内容概要:本文介绍了Python中基于双向长短期记忆网络(BiLSTM)与AdaBoost相结合的多输入分类预测模型的设计与实现。BiLSTM擅长捕捉时间序列的双向依赖关系,而AdaBoost则通过集成弱学习器来提高分类精度和稳定性。文章详述了该项目的背景、目标、挑战、特色和应用场景,并提供了详细的模型构建流程、超参数优化以及视觉展示的方法和技术要点。此外,还附有完整的效果预测图表程序和具体示例代码,使读者可以快速上手构建属于自己的高效稳定的时间序列预测系统。 适合人群:对深度学习特别是时序数据分析感兴趣的开发者或者科研工作者;正在探索高级机器学习技术和寻求解决方案的企业分析师。 使用场景及目标:适用于希望提升时间序列或多输入数据类别判定准确度的业务情境,比如金融市场的走势预估、医学图像分析中的病变区域判读或是物联网环境监测下设备状态预警等任务。目的是为了创建更加智能且可靠的预测工具,在实际应用中带来更精准可靠的结果。 其他说明:文中提供的所有Python代码片段和方法都可以直接运用于实践中,并可根据特定的问题进行相应调整和扩展,进一步改进现有系统的效能并拓展新的功能特性。
1、文件内容:maven-script-interpreter-javadoc-1.0-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/maven-script-interpreter-javadoc-1.0-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
在云服务器上搭建MQTT服务器(超详细,一步到位)
复现改进的L-SHADE差分进化算法求解最优化问题详解:附MATLAB源码与测试函数集,复现改进的L-SHADE差分进化算法求解最优化问题详解:MATLAB源码与测试集全攻略,复现改进的L-SHADE差分进化算法求最优化问题 对配套文献所提出的改进的L-SHADE差分进化算法求解最优化问题的的复现,提供完整MATLAB源代码和测试函数集,到手可运行,运行效果如图2所示。 代码所用测试函数集与文献相同:对CEC2014最优化测试函数集中的全部30个函数进行了测试验证,运行结果与文献一致。 ,复现; 改进的L-SHADE差分进化算法; 最优化问题求解; MATLAB源代码; 测试函数集; CEC2014最优化测试函数集,复现改进L-SHADE算法:最优化问题的MATLAB求解与验证
天津大学:深度解读DeepSeek原理与效应.pdf 1.大语言模型发展路线图 2.DeepSeek V2-V3/R1技术原理 3DeepSeek效应 4.未来展望
光伏混合储能微电网能量管理系统模型:基于MPPT控制的光伏发电与一阶低通滤波算法的混合储能系统优化管理,光伏混合储能微电网能量优化管理与稳定运行系统,光伏-混合储能微电网能量管理系统模型 系统主要由光伏发电模块、mppt控制模块、混合储能系统模块、直流负载模块、soc限值管理控制模块、hess能量管理控制模块。 光伏发电系统采用mppt最大跟踪控制,实现光伏功率的稳定输出;混合储能系统由蓄电池和超级电容组合构成,并采用一阶低通滤波算法实现两种储能介质间的功率分配,其中蓄电池响应目标功率中的低频部分,超级电容响应目标功率中的高频部分,最终实现对目标功率的跟踪响应;SOC限值管理控制,根据储能介质的不同特性,优化混合储能功率分配,进一步优化蓄电池充放电过程,再根据超级电容容量特点,设计其荷电状态区分管理策略,避免过充过放,维持系统稳定运行;最后,综合混合储能和系统功率平衡,针对光伏储能微电网的不同工况进行仿真实验,验证控制策略的有效性。 本模型完整无错,附带对应复现文献paper,容易理解,可塑性高 ,光伏; 混合储能系统; 能量管理; MPPT控制; 直流负载;
Matlab算法下的A星路径规划改进版:提升搜索效率,优化拐角并路径平滑处理,Matlab下的A星算法改进:提升搜索效率、冗余拐角优化及路径平滑处理,Matlab算法代码 A星算法 路径规划A* Astar算法仿真 传统A*+改进后的A*算法 Matlab代码 改进: ①提升搜索效率(引入权重系数) ②冗余拐角优化(可显示拐角优化次数) ③路径平滑处理(引入梯度下降算法配合S-G滤波器) ,Matlab算法代码; A星算法; 路径规划A*; Astar算法仿真; 传统A*; 改进A*算法; 提升搜索效率; 冗余拐角优化; 路径平滑处理; 权重系数; S-G滤波器。,Matlab中的A*算法:传统与改进的路径规划仿真研究
项目开发所用的主要提示词模板
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用