4-SDCC2015-小米网-张涛-成长的力量——小米网架构变迁实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

小米网架构变迁实践成长的力量张涛澄清不准确不负责不属实不客观不专业提纲•小米网技术架构的发展•当前架构及技术选型•特色技术分享•面向服务的新架构•QA背景•要做电商卖手机•三个开发工程师,两个月时间•一年卖30万部手机我们就发了•ECSHOP•小米大卖部:可乐仅售0.18元,工程师配送小米网发布前最早的一张照片第一代小米网:快速,简单,能用所有业务系统共用一个DB第二代小米网:系统拆分系统间调用增多形成网状结构更大的网:耦合越来越严重网状结构变为星状结构三层结构调度层业务层数据层Cobar解决浪涌导致的高压数据库切为64片系统大爆炸-全景图技术和业务膨胀带来双重挑战业务和业务使用到的技术越来越多,如何管理达到成本最优?效率最高?拆分:找不同/找相同业务纵切,平台横切功能开发功能开发功能开发功能开发平台开发平台开发特色分享-Bigtap解决:类似银行排队取号采用Go,MCC,Nginx,PHP,LVS开发购买流程流量控制架构机器+黄牛+真实用户黄牛+真实用户真实用户DBs1DBs2DBs3DBsnMAF•拦截机器流量MAS•拦截黄牛用户Cobar•平均分布读写64片数据库小米通用缓存(MCC)Twemproxy+redis构建速度快(单节点14万QPS)可扩展(自动分片)稳定(twitter大厂开源)•热加载•全redis协议支持•多线程•业务隔离•2.5T/5TMCC高可用架构设计Notify-小米异步消息服务•大量消息通信(4000万/日)•分钟级消息投递•http接口•自定义消息索引•自定义消息协议•允许无限消息堆积•手动消息重发与便捷的接口调试Notify-流程图Notify-自定义协议库存设计虚拟库存分配系统实现将销售渠道隔离,将库存渠道自由合并,进而实现最好的购物体验和最快的库存周转库存设计和智能调拨规划各仓库存与实际需求差异最小仓间调拨的费用最少仓间调拨的时间最短用户要在最短的时间内收货从最近的仓库发货满足缺货订单的同时考虑未来需求量调拨批次最少……多目标线性规划求最优解设从仓库a调往仓库b,某skui的数量为x[Ma][Mb][SKUi];Ma,Mb的取值为集合(112,106,415,107)中的项,且Ma~=Mb;a仓库的缺货库存数量为STOCK[Ma],正数为多余库存,负数为缺货库存;则针对某个sku如1016有如下线性规划程:虚拟化和云服务•MAE–基于docker实现的私有云–79个业务,40%CPU利用率•AWS–新加坡,俄勒冈,中国•金山云虚拟化技术极大的降低了成本,提高了计算资源利用率,同时倒逼业务系统设计更具伸缩性。监控-存在的问题•报警信息大爆炸,工程师疲于奔命,疲劳破坏的结果就是不应•监控分级不可取,所有报警必须处理监控监控系统和运维管理平台,通用指令代理,报警系统无缝集成监控-异常判断策略•异常判定函数–val(),监控结果取值–val(‘key’),结果若有多个字段,如Server各参数,取指定key的值–count(),结果若有多条,取结果集条数–exist(),监控结果是否存在–empty(),监控结果是否为空–……•异常判定表达式–val()3,取值大于3时判定为异常–count()10,结果集条数大于10时判定为异常–exist(),结果不为空即判定为异常–empty(),结果为空即判定为异常–……监控-报警策略•报警判定函数–times(),当前连续异常次数–percent(num),最近n次监控结果中异常的百分–limit(num),报警次数限制,num=0为不限制–snooze(minutes),不限制报警次数时,异常周期内每隔minutes分钟报警一次•报警判定策略–times()3,连续异常3次则报警–percent(10)0.8,最近10次监控结果中异常数大于80%则报警–times()3&&limit(0)&&snooze(30),大于3次异常开始报警,异常周期内,每隔30分钟报警一次安全没有绝对的安全安全-对策•不断提升安全门槛,提高入侵成本•降低损失•借助外部力量安全-提升安全门槛-数据加密安全-提升安全门槛-账号加密安全-借助外部力量•乌云WooYun.org•警察•白帽子•圈内好友SOA-为什么要服务化?•降低系统间耦合度•基于短域名的API管理不够灵活•更精准的fail-over机制•统一的服务健康分析及交互日志•统一的开发框架和基础库•……SOA-服务化技术选型从零开发基于thrift开发dubbo开发成本高中低可控性强强差定制化高高中多语言支持困难简单不支持技术储备好好中代码自动生成无支持支持SOA-服务化技术选型ZookeeperEtcd备注开发语言JavaGo都有技术储备调用方式多语言lib库Restful接口Etcd更简洁定位机制主动注册,push主动注册,push功能满足满足复杂度复杂,重量级简单,轻量级Etcd胜出成熟度很成熟较成熟Google有使用etct协议PaxosRaft数据组织方式类unix文件系统类unix文件系统小米SOA注:为兼容非Go语言服务,开发独立的服务发现和服务注册助手实现业务驱动or技术驱动•业务决定技术架构的形态•技术影响业务发展的速度,甚至是方向问题和不足•Cobar不再维护,Mycat(小米网两个Committer)还处于实验阶段•数据库中间件均存在伸缩性不好的问题•Notify暂未实现时序功能,准实时问题•MCC的过期回收机制•自动化程度不够结语没有最先进的架构,只有最合适的架构----小孩才分对错大人只看利弊Q&AQ&A微信号:toner-zhang谢谢

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功