本节案例主旨:架构设计/技术战略
实践案例读一读第三篇 架构设计/技术战略
从零开始搭建大数据平台(数据挖掘+用户行为分析:数据和服务賺钱)
四个阶段演进:从原始的统计分析阶段(配置从主从两台服务器MySQL记录日志,通过CronJob加上SQL方式在Slave进行统计分析)-数据量增加的阶段(尝试使用Cassandra将日志存储-一堆数据库节点构成分布式网络服务-好扩展,使用Hadoop进行分布式计算,然后把结果回写到MySQL中)-ETL阶段(需求变化产生太多的数据组合,尝试使用MySQL集群机上Kettle-多线程+集群进行统计分析)-Hadoop生态阶段(开始使用大规模杀伤性武器:Kafka、Storm、Hadoop、Oozie、Sqoop、Hive、HBase 、Hue、ZooKeeper)。
效果评价:数据量每月翻一倍,原有的系统架构根本无法满足新的数据需求(数据每周翻翻)、Kettle方式的数据整合时间越来越久、采用Hadoop + Storm等方案,数据量增长不会对数据挖掘产生特别大的影响、数据从原来每日抽取报表到实施数据随意查询整合、还有改进和提升空间。
建议和启示:不同阶段选择不同的方案、人员流失会导致技术流失、技术储备和内部推荐比招聘牛人更快、对于新业务新平台要小心对待,否则出现问题很难解决、数据安全很重要,重要数据需要提供多份备份、服务器多了就是爽。
大数据下OLAP平台构建实践:OLAP(基于Fact Table、Slice Cube、Engine等组件构建灵活高效的大数据处理平台)-之前遇到产品人员希望更快地构建业务产品、数据分析师希望能自由查询更多数据、最终客户希望更快更准确地看到数据、运维工程师希望系统能耗的维护-将数据分为小型的灵活的高可扩展性的立方体;采集到的数据通过ETL加载到数据立方体中,然后我们每个立方体上定义计算逻辑,通过调度系统,利用两种计算引擎(Bitmap和Counter)读取每个立方体,计算结果存储到可扩展数据库中,最后前段展现-支持OLAP的上卷、下钻、切片、切块等予以,支持多维数据的子集、交集、并集、异或等操作-增加灵活性,快速。
云计算的前世今生:云计算有虚拟化技术和管理化技术来支撑,虚拟化技术分为三大阵营(微软的Hyper-V、VMWare的 ESX、Critrix的开源Xen)。美国国家标准局和云安全联盟根据云计算特性总结出三大服务模式(软件即服务、平台即服务、基础设置即服务)、四大部署模式(公有云、私有云、混合云、社区云)和五大特点(广泛网络接入、快速弹性收缩、计算付费服务、按需自助服务、资源池化共享)。
单机应用:应用程序-操作系统-计算机硬件(满足不了计算量和存储量的需求)
普通分布式服务:普通应用软件服务-多个(OS-单机)
云服务:多个(云服务应用)-云平台(建立一个基于大量硬件环境下的操作系统管理下面所有应用)-多个(单机)
基础设施即服务Iaas:在实现云硬件的基础上,完全能够与已有云服务兼容,只对用户提供虚拟机-保留云服务自愈功能,用户可以自己选择操作系统。提供商提供包括网络、存储、服务器、虚拟等,而客户提供操作系统、数据库、中间层、运行库、数据、应用等。
平台即服务Paas:开发者关心自己的服务开发,不需关心硬件管理,提供计算和存储服务。提供商提供包括网络、存储、服务器、虚拟、操作系统、数据库、中间层、运行库等,而客户提供数据、应用等。
软件即服务SaaS:用户不需做任何管理和开发工作,就能获得端到端体验。 提供商提供包括网络、存储、服务器、虚拟、操作系统、数据库、中间层、运行库、数据、应用等。
云计算商务模型:云服务、云方案、云应用才是价值潜力所在,云平台->产业链->生态圈。
云计算时代三大主题:信息中枢(中心,构建云存储和云计算体系,完成云时代产大规模和超高复杂度的云端任务)、通信网络(链接云服务和用户管道,决定云服务能力的深度和广度)和智能终端(信息中枢和物理世界的交互窗口,承担卓信息采集、人机交互和信息传递等革命)。
主导信息技术发展的两种思维模式:市场导向和目标导向。站在当前技术和业务基础上,观察周边细节,推测未来可能的方向,即市场导向或者增量导向-变革时期市场导向在大方向上有盲目性;抛开传统束缚,自由畅想未来,锁定目标,反过来推行实现目标的方法和路径, 用未来目标引导今日事件,目标导向。
有道云端架构设计:数据库结构设计(功能需求+性能需求)、服务器框架设计、升级重构。
功能需求:将服务或者功能抽象化的过程,设计不同数据类型,互相配合可以实现功能逻辑,有道云笔记的云端服务,数据结构有目录条目、笔记元数据信息、文件数据三种,实现文件diff,又将文件数据切块存放,衍生出文件的chunk类型。
性能需求:主要考虑的存储服务选择,什么样的数据该使用什么样的存储方式,不同的存储服务都有其最合适的使用场景,结合数据结构的访问需求去选择最合适存储服务、优化数据结构设计,最常访问类型要尽可能小能放到内存cache里面,防止大量请求落到后端服务器;大数据访问频度要尽可能小,并且尽可能连续存放,请求时流式处理,避免读取时不断做磁盘寻址;而介于两者之间的数据,往往访问频度比较大,放到内存又不能完全放得下,需要做LRU Cache,考虑SSD。
服务框架设计:代码、框架都是为数据结构服务的;好的服务框架,能够更好地去表达前述数据结构,更鲁棒地存取和处理数据,更高效地完成数据业务逻辑,为客户端提供更易用的数据接口。
有道自有云平台提供分布式数据库、文件系统等,通过数据冗余、数据加密等策略保证数据的可靠性和安全性。
存储逻辑模块:主要实现了数据结构设计定义的各种数据结构、相关的存取逻辑以及云平台的接口模块。存储逻辑模块是无状态的,可以方便水平扩展,实现服务的可扩展性。怎样在存储逻辑模块上实现事物的支持?通过ZK来管理存储逻辑模块,生成针对用户的一致性哈希,从而将同一用户请求分布到同一个存储模块上,以实现针对用户有效的内存锁。然后,基于版本号与标记,实现了数据的事务支持。而这个过程中,用户请求的分发借助了我们的分布式RPC中间件。
分布式RPC:实现了对服务模块RPC服务封装,屏蔽了服务模块的分布式细节,提供了统一的RPC服务供上层调用。开发者可以自定义RPC分发机制,如轮转调度、错误轮转重试、请求多发、基于ZK和一致性哈希的用户请求分发机制等。
API接口模块:因为有数据、认证、push等一系列API服务,不同客户端针对数据视图有不同的需求-有针对PC的,针对移动的,针对用户认证、OpenAPI,还有用户认证、OpenAPI、PushServer等一系列API。因为分布式RPC中间件的帮助,各API模块主要负责接口封装发布,且只需要通过分布式RPC中间件与存储模块交互,无横向逻辑调用。
升级重构:
重构原因(需求更改、功能扩展、压力增大,原来代码或框架已经不能胜任它的工作;为之前的错误设计买单)
框架升级(自实现做分布式相关细节,分布式同步锁,全局异步任务等-引入RPC中间件,将逻辑和API分层)
为设计错误买单(考虑API兼容,文件切块实现diff-文件整体存储在分布式文件系统上,取消了切块逻辑)
作者的经验和启示:
数据结构设计是云端架构设计的第一要务;
服务框架设计服务于数据;
架构重构是不可避免的,甚至是不可或缺的。
百万帐号同时在线的58即时通信系统架构-58帮帮开发总结
对用户来说,他甚至可以不注册、不登录、不下载客户端,在浏览信息的同时,能够一键发起和商户的沟通。匿名访问技术、熟客识别技术在即时通信业界尚属首创。
58帮帮是一个分布式通信系统,其特点(难点)是:任何业务都必须实时处理(消息反作弊算法、黄反词过滤算法、消息中转等);用户状态同步,系统如何保证状态一致性与实时性支持;即时通信系统是一个通知系统,通知路由是通信系统的一大特色;在FLP原理(无全局时钟,不存在容错的分布式一致算法)和SMC原理(任何端到端消息传递协议都不可能不丢不重)的双重约束,如何确保消息的可达性。
一些特殊挑战:流量大,用户量大,商户量大、需要支持匿名访客、支持终端众多。
实施后可借鉴的启示:协议设计(二进制、文本、流式XML协议,其优劣-应该如何选择,传输层/安全层/应用层协议栈该如何设计)、架构设计(高可用性,可扩展性,高一致性,高负载均衡性,如何保证消息的可达性)、业务流程(登录、好友、消息复杂业务流程是怎么样的)、功能细节(群系统、文件传输系统、推送系统、反作弊系统等)。
海量实时记录快速索引方法
建立快速索引系统,以便能够使用户即时查询。记录一旦进入系统即能查询,几乎不存在延迟(延迟时间少于3秒钟)。该系统的输入记录为用户产生的实时记录,而后输出给各个地方查询:营业厅、网站、自助终端、移动终端等。其它点:用户基本按月或天进行查询、用户可查询最近10个月的记录、存在一天之内就有千万条记录的用户、大部分用户每月的记录数在1K的数量级、存在用户查询几百万记录的需求、系统每天查询量超过1000万次。
active_user_number过大几乎不能使用数据库的方法,会导致IO过大;数据库10个月175T,只能使用传统的文件系统方案,即大文件存储形式,加上有效的索引机制,达到快速查询和索引的目的。为尽量减少文件IO的使用,应尽量少写文件系统,最直接的方法就是把所有数据写入内存中,在某个闲时时间一次性写入文件输出。写入一天的记录到内存,考虑压缩算法,最后输出到文件系统。
该系统让用户从此有了飞一般的感觉-查询速度的提高大大增强了用户的体验。
打造端到端的智能设备安全解决方案-联想解决终端问题总结
关注用户+差异竞争+敏捷开发:持续打造有竞争力的移动互联网产品
安全DNA:从硬件层、操作系统、应用层和云端,为海量用户提供病毒防范、隐私保护、资费安全、骚扰拦截、性能优化、设备防盗等服务,帮助客户创造价值,提升产品综合竞争力。
解决思路:特色硬件+掌握操作系统Root,安全方案具备差异化的竞争优势、个人隐私信息生命周期管理、设备丢失后的隐私保护、基于海量用户智能学习,打造最佳防骚扰短信/来电/广告平台、全方位付觉短信暗扣,偷跑流量等吸费行为、开放的云+端病毒查杀平台[闭环设计理念、差异化竞争优势、解决核心痛点、快速提升、用户口碑优秀、持续打磨]
产品迭代:
两级呈现,提升体验-简化操作,优化初级用户的入门使用体验;丰富设置,提升高级用户的进阶掌控欲
关注用户,快速应对-论坛,QQ,微信,应用内等多渠道收集用户反馈;双周迭代:持续完善产品和用户体验
发挥优势,差异竞争-深入联想终端内核结合硬件特性,提供终极安全防护体验;鼓励团队成员微创新
乐安全的敏捷开发思路:敏捷、主人翁、迭代、简单
快速决策,PM+TPM负责制:PM是决策者,对所有需求UI具有最终决策权,也是项目组对外的接口-决策者(做什么),对产品竞争力负责;TPM对内统一接口,项目管理者,保证技术方向,管理项目团队,改进研发效率,协调问题处理大管家,对质量进度负责。
固定团队,主动模式:固定团队集中领域,长期优化,共同一流产品努力;提高开发团队自主性和主动性,以推送方式提供产品集成;强调团队分卫建设,通过复盘持续改进团队效率。
快速迭代,持续集成:各团队松耦合快速开发,每个迭代周期不超过半个月;快速获得用户反馈,以用户为核心,持续改进;早集成,早测试,早反馈;敏捷工具,高效运作
乐安全开发支撑平台
搭建统一的研发环境:Hudson和Gerrit即时编译、按功能模块细分git,松耦合、每个项目同一分支、每次代码修改就是对内交付(产品快速集成)
持续发布与反馈:通过maven解决编码问题并实现release版本交付、内部测试与灰度发布、log和bug提交与内部bugilla进行关联(产品快速发布)
高效质量工具:Sonar对跨语言静态代码检查、集成插件到Eclispse IDE工具、自动化测试平台、即时编译通过Sonar与自动化测试检查。
网友评论