资源描述
单击鼠标编辑标题文的格式,单击鼠标编辑大纲正文格式,第二个大纲级,第三个大纲级,第四个大纲级,第五个大纲级,第六个大纲级,第七个大纲级,单击鼠标编辑标题文的格式,单击鼠标编辑大纲正文格式,第二个大纲级,第三个大纲级,第四个大纲级,第五个大纲级,第六个大纲级,第七个大纲级,人人网网站架构,-,服务化的演进,人人网网站架构,内容概要,一、,人人网网站业务介绍,二、,为什么要服务化,三、,服务化:开启潘多拉的魔盒,四、问题与解决方案,内容概要一、人人网网站业务介绍,人人网网站业务,每月数千万活跃用户,每周数,T,照片上传到相册,每天数千万新鲜事儿发布,排名靠前的实时通讯软件(人人桌面),人人网网站业务每月数千万活跃用户,人人网网站业务,很异构,很分散,很易变动,人人网网站业务,内容概要,一、,人人网网站业务介绍,二、,为什么要服务化,三、,服务化:开启潘多拉的魔盒,四、问题与解决方案,内容概要一、人人网网站业务介绍,一张依赖图(局部),“发状态”服务,依赖多,沟通烦,上线难,一张依赖图(局部)“发状态”服务,为什么服务化,“,解耦,分而治之,应对变化,”,名词太多,简单来说:,将高内聚模块实现为服务,服务接口形式化,让服务和数据易于访问,应对复杂性和易变性:,复杂度增加,VS,人对复杂性控制的界限,可预期的变化,VS,不可预期的变化,为什么服务化“解耦,分而治之,应对变化”,那我们就开始服务化吧,自实现,REST,框架,使用,Java,,基于,Spring MVC,开发便捷,应用在,UGC,等业务逻辑中,使用开源,ICE,,,完整,RPC,架构,实现缓存等中间层、新鲜事儿等系统,那我们就开始服务化吧自实现REST框架,内容概要,一、,人人网网站业务介绍,二、,为什么要服务化,三、,服务化:开启潘多拉的魔盒,四、问题与解决方案,内容概要一、人人网网站业务介绍,异构服务总线,自实现,REST,框架,纯,Java,架构,跨语言服务无法调用,使用开源,ICE,大而全,整体解决方案,想要修改或者扩展?,重造轮子还是使用开源方案?,异构服务总线自实现REST框架,一次线上事故,3G,状态服务,SocialWIKI,相册服务,SocialWIKI,相册服务,3G,状态服务,3G,状态服务,3G,SocialWIKI,相册服务,3G,3G,3G,3G,3G,3G,状态服务,3G,3G,SocialWIKI,一次线上事故3G状态服务SocialWIKI相册服务Soci,失控,是不是太无政府主义了?,步子迈的太大,容易扯着蛋,服务化的太乱,容易挂全站,服务化过度面临问题,单边失效的容错,局部过载、级联反应,超时放大,服务之间的约定伴随调用链增长而失效,失控是不是太无政府主义了?,从事故深挖出一些共性问题,“,为什么不使用非阻塞方式?”,“,为什么没有配额限制?没有权限隔离?”,“为什么不能自动识别依赖、动态增加资源?”,“能否让,log,汇总和分析实时一点儿?”,从事故深挖出一些共性问题,内容概要,一、,人人网网站业务介绍,二、,为什么要服务化,三、,服务化:开启潘多拉的魔盒,四、,问题与解决方案,内容概要一、人人网网站业务介绍,问题回顾,异构总线:,自建还是开源,“,为什么不使用非阻塞方式?”,“,为什么没有配额限制?没有权限隔离?”,“为什么不能自动识别依赖、动态增加资源?”,“能否让,log,汇总和分析实时一点儿?”,问题回顾异构总线:,问题抽象,“,独立的组件,”,基础总线,调用语义,服务寻址和权限控制,服务调度,服务在线,/,离线,Log/Profiling,收集分析,问题抽象“独立的组件”,XOA,(,Xiaonei Oriented Architecture,),XOA(Xiaonei Oriented Architect,基础总线,自建与开源的折中,自建:没有精力,开源:被绑架,对待开源系统的态度,作为组件而不是框架,选择,Thrift,基础总线,Thrift/ThriftEX,定制传输层,/,协议层,性能优化,路由、存储、调试,定制序列化方式,总线,adaptor,,列压缩,服务层,线程模型、进程模型,服务统一后门:,FB303,,,民兵服务,Thrift/ThriftEX,调用语义:“为什么不使用非阻塞方式?”,常用调用语义(状态服务为例):,双向阻塞:,DB,数据库,单向非阻塞:发状态,调用语义:“为什么不使用非阻塞方式?”常用调用语义(状态服务,调用语义,支持其他语义?,阻塞,/,非阻塞、同步,/,异步、,Event/,回调,不为奢饰品付钱,为什么不直接用,MQ,?,统一行为、统一总线,使用者要的是非阻塞,不是,MQ,调用语义,中转单向,RPC,调用的消息队列,Thrift/ThriftEX+ZeroMQ,中转单向RPC调用的消息队列Thrift/ThriftE,寻址和隔离:“配额限制、权限隔离?”,需要规则,服务定位,权限隔离,/,配额限制,借鉴,Linux,文件系统标准,静态、动态(易变)划分:,/proc /etc,ACL,完成权限划分:,rwx,基于,Zookeeper,建立规则(已申请专利),寻址和隔离:“配额限制、权限隔离?”,服务的寻址、权限控制,服务的定位,/,/,/,root:online,sandbox,test,service:,服务的逻辑名称,version:,服务的版本,stat:,服务的某个状态,例如,sharding number,等,node:,具体的服务物理节点信息,例如,ip+port+pid,服务的寻址、权限控制服务的定位,服务的寻址、权限控制,权限控制,(,基于,zookeeper,的,ACL),/,/,/,super,:超级用户,op,:运维用户,server,:服务提供者,client,:服务访问者,服务的寻址、权限控制权限控制(基于zookeeper的ACL,服务的寻址、权限控制,配额约束,/,/Quota,放置,Quota,配置文件,对于,Client,角色的不同,User,,指定相关的访问配额信息,服务的寻址、权限控制,调度:“自动识别依赖、动态增加资源?”,服务化调度:将流程自动化,服务太多,依赖太多,易犯错,除夕晚高峰、高考结束高峰、登陆攻击,调度:“自动识别依赖、动态增加资源?”,离线服务调度,运维调度:使用,OP,角色,离线调度(,Hadoop,),确认环境、权限,检查服务依赖链和配额,管理服务生命期,环境回收,离线服务调度运维调度:使用OP角色,离线调度(Hadoop),在线服务调度,异常调度:在线调度,扫描服务后门等方式获取异常,寻找民兵服务,切换民兵服务,在线服务调度异常调度:在线调度,服务在线,/,离线,Log/Profiling,收集分析,已有收集系统:,延迟数十分钟,待收集数据假设,重要的量小(在线),不重要的量大(离线挖掘),又重要量又大,大概率是方向错了,被动收集和主动收集,数据分流(,Error,,,Warn,,,Info,),通过服务后门获取已定义状态等信息,服务在线/离线 Log/Profiling 收集分析已有收集,服务在线,/,离线,Log/Profiling,收集分析,添加分流、实时通道,,MQ,或后门扫描服务,服务在线/离线 Log/Profiling 收集分析添加分流,小结,系统的控制力最终还是人对其控制力,业务到底在干啥,调用链不能太长,充分预估、充分灾备,系统的控制力建立在非置信关系上,没有不会挂的系统:隔离错误,拒绝大框架,没有充分沟通的交流:规则先行,小结系统的控制力最终还是人对其控制力,XOA,(,Xiaonei Oriented Architecture,),XOA(Xiaonei Oriented Architect,
展开阅读全文